Nodebb vers Discourse

J’ai besoin d’un peu de guidance pour migrer de NodeBB vers Discourse. J’ai vu ce fil de discussion et j’ai remarqué que @eatcodetravel a créé le script. Je n’arrive pas à comprendre comment ces scripts sont exécutés. Dois-je également installer Redis sur le serveur où Discourse est hébergé pour l’importation ?

Je vous remercie pour votre aide.

Hey @michael,

You need redis to run discourse. The nodebb importer is only available if you use redis as your nodebb database. Here is how I would do the migration.

  1. Setup a discourse environment (it can be your machine or an instance in the cloud)
  2. Change the nodebb importer configuration (take a look at the code, there’s comments on what you need to replace)
  3. Run the importer with bundle exec ruby script/import_scripts/nodebb/nodebb.rb from the discourse folder
  4. (Optional) make a backup of discourse and restore it where you need it

The importer will connect to your nodebb redis database and copy everything over discourse, the time it takes is related to the amount of data you have. Also, you need to wait for discourse to finish processing jobs before you do the backup, go to /sidekiq route as an admin and you will see the pending/completed jobs

Hope it helps

6 « J'aime »

Merci !

Je fais fonctionner Discourse via Digital Ocean et Docker. J’ai édité script/import_scripts/nodebb/nodebb.rb à l’intérieur du conteneur et modifié ATTACHMENT_DIR pour inclure le répertoire où se trouve NodeBB. J’ai également placé le répertoire NodeBB à l’intérieur du conteneur.

Qu’en est-il du fichier de dump Redis ?

Oh I see there’s no comment in the redis connection parameters, I’ll open a PR for that

Here’s where you put the connection parameters for nodebb redis discourse/script/import_scripts/nodebb/nodebb.rb at main · discourse/discourse · GitHub

1 « J'aime »

Here are the quick steps I took when I first ran the importer when it was under development. I can also attest to it working wonderfully.

  • Setup a dev environment of Discourse per Beginners Guide to Install Discourse on Ubuntu for Development
  • Stopped redis
  • Copied the dump.rdb file from NodeBB and overwrote the redis dump file that exists
  • Copied the uploads directory from NodeBB to the dev box
  • Edited the nodebb.rb file to point to the copied uploads directory
  • Ran the importer bundle exec ruby script/import_scripts/nodebb/nodebb.rb

I do recommend taking a look at Preparing for and undertaking a platform migration, it has some great steps for validation and planning a migration.

5 « J'aime »

Merci @eatcodetravel et @tehspaceg

Après avoir exécuté exec ruby script/import_scripts/nodebb/nodebb.rb, j’obtiens le message suivant :

Pas de connexion à la base de données, impossible de récupérer les paramètres du site ! (normal lors de l’exécution de db:create)

J’ai déplacé dump.rdb du serveur NodeBB vers mon conteneur Docker Discourse dans /shared/redis_data.

Des idées ? :thinking:

Une supposition hasardeuse ici. Je pense qu’il n’importe pas le fichier dump Redis.

Je suis bloqué. Je débute avec Redis et j’ai certes beaucoup appris, mais je n’arrive pas à comprendre ce dernier morceau du puzzle.

I neglected to write down the actual paths to files, I just had those notes from when I did it.

Are you using a dev environment outside of the Docker image? it might make it easier ensure redis is stopped when you replace the dump.rdb file.

Edit: I wrote this before finishing coffee. So the reason I suggest that you need to have redis stopped is that I don’t think it will read from the dump file until after it has been stopped (redis stores the database in memory and periodically writes to the dump.rdb file)

2 « J'aime »

J’ai essayé d’arrêter Redis, mais il semble continuer à s’exécuter, quoi que je fasse. J’ai tué le processus une douzaine de fois, mais il fonctionne toujours. :confused:

Je réessaie à nouveau. La même erreur apparaît toujours et inclut ceci :

\u003e FATAL: Échec de l’authentification peer pour l’utilisateur “discourse” (PG::ConnectionBad)

Devrais-je exécuter cela dans le conteneur Docker ? C’est ce que j’ai fait en tant que root. J’ai aussi essayé en tant que discourse, ce qui donne :

\u003e FATAL: la base de données “discourse_development” n’existe pas (ActiveRecord::NoDatabaseError)

Je ne sais pas ce que je pourrais faire de mal.

No, as per instructions you should:

3 « J'aime »

C’était tout. Je n’étais pas au courant que Docker ne pouvait pas être utilisé du tout.

1 « J'aime »