NodeBB zu Discourse

Ich benötige etwas Unterstützung bei der Migration von NodeBB zu Discourse. Ich habe diesen Thread gesehen und festgestellt, dass @eatcodetravel das Skript erstellt hat. Ich verstehe nicht, wie diese Skripte ausgeführt werden. Muss ich Redis auch auf dem Server installieren, auf dem Discourse läuft, für den Import?

Ich schätze Ihre Hilfe.

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

Vielen Dank!

Ich habe Discourse über Digital Ocean und Docker ausgeführt. Ich habe script/import_scripts/nodebb/nodebb.rb innerhalb des Containers bearbeitet und ATTACHMENT_DIR so angepasst, dass es das Verzeichnis enthält, in dem sich NodeBB befindet. Ich habe das NodeBB-Verzeichnis ebenfalls in den Container kopiert.

Was ist mit der Redis-Dump-Datei?

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

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.

Danke an @eatcodetravel und @tehspaceg

Nachdem ich exec ruby script/import_scripts/nodebb/nodebb.rb ausgeführt habe, erhalte ich folgende Meldung:

Keine Verbindung zur Datenbank, Site-Einstellungen konnten nicht abgerufen werden! (normal beim Ausführen von db:create)

Ich habe dump.rdb vom NodeBB-Server in meinen Discourse-Docker-Container nach /shared/redis_data verschoben.

Irgendwelche Ideen? :thinking:

Ein vager Schuss hier. Ich denke, es importiert die Redis-Dump-Datei nicht.

Ich bin ratlos. Ich bin neu bei Redis und habe zwar viel gelernt, kann aber das letzte Puzzleteil nicht finden.

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)

Ich habe versucht, Redis zu stoppen, aber es scheint unabhängig von meinen Aktionen weiterzulaufen. Ich habe den Prozess ein Dutzend Mal beendet, aber er läuft immer noch. :confused:

Ich versuche es erneut. Der gleiche Fehler tritt weiterhin auf und enthält dies:

FATAL: Peer-Authentifizierung fehlgeschlagen für Benutzer “discourse” (PG::ConnectionBad)

Sollte ich dies innerhalb des Docker-Containers ausführen? Das habe ich bisher als root getan. Ich habe es auch als discourse versucht, was zu folgendem führt:

FATAL: Datenbank “discourse_development” existiert nicht (ActiveRecord::NoDatabaseError)

Ich bin mir nicht sicher, was ich falsch machen könnte.

No, as per instructions you should:

Das war alles. Ich wusste nicht, dass Docker überhaupt nicht verwendet werden kann.