Migrer un forum XenForo vers Discourse

J’ai à peine réussi à faire fonctionner ma communauté XenForo existante avec Discourse, j’ai donc pensé partager mon expérience ici pour aider ceux qui essaient de faire de même. Gardez à l’esprit que je ne sais pas ce que je fais, donc certaines de mes déductions peuvent être incorrectes. J’ai pu terminer l’importation vers Discourse avec une perte d’environ 20 % des pièces jointes. Je ne peux pas vraiment expliquer pourquoi, mais le problème ne semble affecter que les 2-3 dernières années de messages sur mon forum, alors que tout ce qui précède a eu un taux d’importation réussi d’environ 95 %. Ma seule supposition est que cela a quelque chose à voir avec le passage de XF 1.x à XF 2.x.

Quiconque tente cela doit savoir que ce script nécessite beaucoup de mises à jour pour fonctionner avec XF 2.x. Plus précisément, les lignes 375 à 378 n’ont pas les bonnes tables de base de données pour importer les pièces jointes de la galerie multimédia XenForo. J’ai contourné cela en déconnectant le XFMG du forum et en le désinstallant, puisque je n’utilisais le XFMG que pour refléter les pièces jointes du forum de toute façon.

Si vous êtes curieux, la ligne 376 fait référence à la table xengallery_media, qui est évidemment une référence à XFMG 1.x, car cette table a été renommée xf_mg_media_item dans XFMG 2.x. Le reste, je ne peux pas le faire correspondre et je soupçonne qu’un code supplémentaire est nécessaire pour faire correspondre les identifiants des pièces jointes aux messages.

J’ai fini par commenter la ligne 314 : s = process_xf_attachments(:gallery, s)

Pour que le script ne génère pas d’erreur à cause de la table SQL manquante.

Donc, avec cela fait, j’ai suivi le message de @Jack51 dans ce fil de discussion :

avec les modifications suivantes :

L’étape six nécessite la mise à jour de la version mariadb. changez mariadb-server-10.3 en mariadb-server-10.5

L’étape sept devrait être service mariadb start au lieu de service mysql start.

J’ai changé

frozen_string_literal: true

en

frozen_string_literal: false

Puisque j’ai eu la même erreur que quelqu’un d’autre a mentionnée dans ce fil de discussion.

Il semble qu’il y ait eu BEAUCOUP de confusion dans ce fil de discussion sur l’endroit où placer les pièces jointes pour que le script les voie, et j’avoue que j’ai eu quelques difficultés avec cela aussi. Pour les personnes complètement nouvelles à Docker (comme moi), il serait extrêmement utile de souligner que bien que les dockers soient essentiellement une machine virtuelle fonctionnant sur votre serveur (vous traitez donc avec deux systèmes d’exploitation/systèmes de fichiers différents), il existe un espace partagé pour le transfert de fichiers :

/var/discourse/shared/standalone/tmp

ce répertoire est situé sur votre machine hôte, et les fichiers qui y sont placés apparaîtront dans :

/shared/tmp

une fois que vous êtes entré dans le conteneur Docker. Donc, en supposant que vous conservez la même structure de fichiers/dossiers de XenForo, vous copiez les dossiers :

internal_data/attachments

dans

/var/discourse/shared/standalone/tmp

sur votre machine hôte, et ce dossier apparaîtra dans /shared/tmp après être entré dans votre conteneur Docker.

Ensuite, lors de la modification du script xenforo.rb, changez :

ATTACHMENT_DIR = '/tmp/attachments'

en

ATTACHMENT_DIR = '/shared/tmp/internal_data/attachments'

et vos pièces jointes seront situées au bon endroit. Il convient de noter que XenForo a également un dossier data/attachments, mais il est rempli de fichiers .jpg au lieu des fichiers .data que vous recherchez. J’ai vu quelqu’un faire cette erreur précédemment dans ce fil de discussion, donc j’ai pensé que cela valait la peine de le signaler.

De plus, j’ai eu une erreur de permissions de la part du script, vous devrez donc peut-être chmod le répertoire :

sudo chmod a+rw -R /shared/tmp/internal_data/

Je dirais que le plus grand indice que le script ne détecte pas vos pièces jointes est qu’il sera étrangement silencieux alors qu’il devrait probablement afficher des erreurs occasionnelles :

Donc, si l’importation dure plusieurs heures sans aucune erreur répertoriée, il est probable qu’elle ne détecte pas les pièces jointes.

C’est tout ce que j’ai. Ne vous méprenez pas, je suis content que ce script existe, un taux de réussite de 80 % vaut mieux que rien (j’ai eu un taux de réussite similaire lors du passage de vBulletin à XenForo en 2009), et je suis impatient de travailler avec la plateforme Discourse. J’espère que ce message aidera certaines personnes et peut-être qu’un jour quelqu’un avec de meilleures compétences que moi pourra mettre à jour ce script pour qu’il fonctionne un peu mieux.

4 « J'aime »