Migrer un forum phpBB3 vers Discourse

Je les ai mis sans différence.

Je ne suis pas sûr s’il s’agit d’erreurs dues au copier-coller ou si c’est ainsi qu’elles se trouvent dans votre fichier yml, mais cela causerait des problèmes. (Sauts de ligne à la fin de certains commentaires, créant une deuxième ligne non commentée)

Vos éléments de liste ne sont pas correctement indentés.

Ce qui précède devrait être

  new_categories: 
    - forum_id: general
      name: General

Je recommande d’utiliser https://www.yamllint.com/ pour valider votre fichier de configuration.

3 « J'aime »

Merci pour toutes vos réponses. J’ai rapidement compris que modifier settings.yml en dehors du conteneur d’importation n’affectait pas ce qui était en cours d’exécution. J’ai également compris le problème de l’espace blanc dans le fichier yml et j’ai corrigé mon fichier de configuration. Quoi qu’il en soit, l’importation du forum phpBB s’est bien déroulée, sauf que…

Mon nom d’utilisateur sur phpBB était le même que mon compte administrateur sur Discourse. Je ne peux pas me connecter et il y a un message indiquant :

Tous les e-mails sortants ont été désactivés globalement par un administrateur. Aucune notification par e-mail d'aucune sorte ne sera envoyée.

Par conséquent, je ne peux pas recevoir d’e-mail de réinitialisation de mot de passe. S’agit-il d’un paramètre de base de données ? Et si oui, puis-je mettre à jour ce champ en utilisant les ressources limitées du conteneur ? D’autres idées ?

Notez que j’ai installé le plugin migratepassword, mais cela ne semble pas fonctionner (peut-être parce que mon mot de passe était inférieur à 15 caractères).

Vous pouvez activer les e-mails pour les utilisateurs administrateurs depuis la console Rails :

./launcher enter import
rails c

> SiteSetting.disable_emails = "non-staff"

Vous pouvez également réinitialiser votre mot de passe directement depuis le conteneur, sans avoir besoin d’utiliser les e-mails, en exécutant :

./launcher enter import
rake admin:create
3 « J'aime »

Puis-je suggérer quelques modifications à cette documentation (et à ce code) :

  • Ceci n’est plus nécessaire car le paramètre disable_edit_notifications n’existe plus. disable system edit notifications remplit la tâche mentionnée et est activé par défaut.
  • Les deux lignes SSL ne sont plus commentées par défaut dans app.yml, donc la suppression de ces deux # rendra l’extrait plus précis quant à son apparence.
  • Ce modèle doit être mis à jour afin que les utilisateurs ne rencontrent pas cette erreur lors de l’importation.

  • Aussi ceci (sauf si j’ai fait une erreur quelque part, c’est aussi quelque chose qui devrait être corrigé) :
    L’exécution de IMPORT=1 bundle install a retourné :

[!] Il y a eu une erreur lors de l'analyse de `Gemfile` : vous ne pouvez pas spécifier le même gem deux fois avec des exigences de version différentes.
Vous avez spécifié : sqlite3 (~> 1.3, >= 1.3.13) et sqlite3 (>= 0). Bundler ne peut pas continuer.

# depuis /home/root/discourse/Gemfile:249
# -------------------------------------------
# group :generic_import, optional: true do
> gem "sqlite3"
# gem "redcarpet"
# -------------------------------------------

En effet, sqlite3 est déjà spécifié quelques lignes plus haut :

# REMARQUE : en mode d'importation, la version de sqlite peut avoir beaucoup d'importance, nous la fixons donc à une version spécifique
gem "sqlite3", " ~> 1.3", " >= 1.3.13"
gem "ruby-bbcode-to-md", git: "https://github.com/nlalonde/ruby-bbcode-to-md"
gem "reverse_markdown"
gem "tiny_tds"
gem "csv"
end

group :generic_import, optional: true do
  gem "sqlite3"
  gem "redcarpet"
end

J’ai utilisé une installation de développement pour mon importation, si cela a de l’importance.

5 « J'aime »

Ces informations devraient être mentionnées dans les instructions ou le modèle devrait être mis à jour. Cela m’a pris quelques heures…

Que doit-il dire ?

La suppression de cette ligne a permis la construction réussie du conteneur.

1 « J'aime »

Vous avez donc supprimé cette ligne ?

1 « J'aime »

Oui, c’était la solution.

1 « J'aime »
4 « J'aime »

« Bonjour, j’ai migré avec succès mon forum phpBB vers Discourse, tout s’est bien passé et le forum fonctionne à merveille. J’ai maintenant réalisé que je n’avais pas activé le mode binaire lors du téléchargement FTP des données phpBB, ce qui signifie que toutes les images sont corrompues. J’ai relancé le script, mais les images ne sont pas écrasées. Quel script, de préférence avec le chemin, dois-je modifier pour que les images et les pièces jointes corrompues soient écrasées ? »

Lors de votre deuxième essai, Discourse ignore les téléchargements car ils existent déjà dans la table uploads. Discourse évite d’écraser les téléchargements existants, sauf instruction explicite contraire.

Vous pouvez essayer d’ajouter l’extrait de code ci-dessous dans attachment_importer.rb (discourse/script/import_scripts/phpbb3/importers/attachment_importer.rb at main · discourse/discourse · GitHub) avant d’appeler @uploader.create_upload pour vous assurer que tout téléchargement existant portant le même nom de fichier est supprimé d’abord, forçant Discourse à le retélécharger.

existing_upload = Upload.find_by(original_filename: filename)
if existing_upload
  existing_upload.destroy
  puts "Deleted existing upload: #{filename}"
end

upload = @uploader.create_upload(user_id, path, filename)
4 « J'aime »

« Merci pour votre réponse. Malheureusement, le changement n’a eu aucun effet. Le script s’exécute en une minute, mais les pièces jointes ne sont pas écrasées… »

1 « J'aime »

Vous devrez probablement effacer la base de données et la relancer.

1 « J'aime »

Comment faire cela ?

Étape 1 : Connectez-vous au serveur via SSH :

ssh username@server-address

Étape 2 : Accédez au conteneur de l’application :

./launcher enter import

Astuce : Exécutez docker ps pour trouver le nom du conteneur. Par défaut, il est généralement nommé app.

Étape 3 : Réinitialisez la base de données :

RAILS_ENV=production rake db:reset
3 « J'aime »

Salut Canapin,

J’ai mis à jour cette partie du guide.

Cela dépend. C’est toujours commenté lors de la configuration du conteneur pour localhost. Le guide suppose qu’un conteneur séparé est utilisé pour les importations, qui n’est pas accessible sur Internet, donc l’obtention de certificats n’est pas nécessaire dans ce cas.

Une PR pour cela a maintenant été fusionnée dans le cœur.

Nous travaillons sur un correctif pour cela, mais j’ai mis à jour le guide et ajouté une FAQ sur la façon de résoudre ce problème.

4 « J'aime »

Lorsque Discourse s’exécute dans un sous-répertoire, comme domain.org/forum, les permaliens ne s’appliquent pas, car ils sont du type viewtopic.php?p=XXXX, mais devraient être forum/viewtopic.php?p=XXXX pour fonctionner.

Cela fait des années, mais je suis tombé sur les permaliens qui n’ont jamais fonctionné et qui sont toujours configurés dans notre cas. Existe-t-il un moyen graphique/en ligne de commande pour préfixer tous les permaliens avec un élément de chemin d’URL, ou quelqu’un peut-il ajouter une requête PostgreSQL pour le faire ? Cela pourrait également aider d’autres personnes si cette information est ajoutée au premier message.