Comme vous le savez, NodeBB prend en charge deux backends de base de données : Redis et MongoDB. Le script d’importation Discourse les prend tous deux en charge. Dans ce tutoriel, nous apprendrons comment migrer NodeBB avec MongoDB comme backend de base de données. Nous utiliserons NodeBB Importer avec l’adaptateur mongo. Si votre forum NodeBB utilise Redis comme backend, veuillez suivre ce tutoriel qui démontre l’adaptateur redis.
Le plan
- Préparation de l’environnement de développement.
- Export de la base de données depuis l’environnement de production.
- Importation de la base de données de production dans une instance Discourse.
- Exécution du script d’importation.
Ce qui peut être migré
- Groupes
- Pièces jointes
- Catégories
- Catégorie racine => Catégorie racine
- Sous-catégorie et sous-sous-catégorie => Sous-catégorie
- Sujets et messages
- sujet épinglé => sujet épinglé
- sujet verrouillé => sujet fermé
- vues du sujet
- upvoted_by
- styles, mentions, emojis et pièces jointes.
- Utilisateurs (avec les attributs suivants)
- arrière-plan du profil
- avatars
- statut banni
- nom d’utilisateur
- nom
- adresse e-mail
- administrateur
- biographie
- groupe
- site web
- lieu
- date d’adhésion
Préparation de l’environnement de développement local
Comme mentionné dans notre plan, nous devons d’abord préparer notre environnement de développement. Suivez l’un de ces guides pour installer Discourse lui-même :
Veuillez consulter ce guide si vous rencontrez des problèmes lors de la configuration du serveur Discourse.
Ensuite, installez le serveur de base de données MongoDB.
Ubuntu-18-04 :
$ wget -qO - https://www.mongodb.org/static/pgp/server-4.0.asc | sudo apt-key add -
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
$ sudo service mongod status
Pour plus de détails, référez-vous au guide officiel.
Mac OS :
$ brew tap mongodb/brew
$ brew install mongodb-community@4.0
$ brew services start mongodb-community@4.0
$ brew services status mongodb-community@4.0
Pour plus de détails, référez-vous au guide officiel.
Windows 10 :
Téléchargez le programme d’installation et installez MongoDB en tant que service Windows :
https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.12-signed.msi
Exécutez cmd avec des privilèges d’administrateur pour vérifier si le serveur mongo fonctionne correctement :
"C:\Program Files\MongoDB\Server\4.0\bin\mongo.exe"
Pour plus de détails, référez-vous au guide officiel.
Cet environnement sera notre serveur Discourse.
Exportation du dump de la base de données de production :
Arrêtez votre forum NodeBB (serveur de production).
$ cd /chemin_vers_nodebb
$ ./nodebb stop
Arrêtez votre base de données :
$ sudo service mongodb stop
Sauvegardez votre base de données :
$ mongodump --out ~/mon_chemin_de_sauvegarde/
La sortie de la commande précédente ressemblera à ceci :
2019-08-16T15:17:09.845+0300 done dumping admin.system.users (1 document)
2019-08-16T15:17:09.846+0300 done dumping admin.system.version (2 documents)
2019-08-16T15:17:09.849+0300 done dumping nodebb.sessions (10 documents)
2019-08-16T15:17:09.850+0300 done dumping nodebb.socket.io (215 documents)
2019-08-16T15:17:09.854+0300 done dumping nodebb.objects (1488 documents)
Notez que la sauvegarde est en réalité un répertoire, et non simplement un fichier.
Vous pouvez vérifier la taille de votre base de données en exécutant
use maBaseDeDonneespuisdb.stats().dataSize;dans l’interface de ligne de commandemongo. La valeur retournée sera en octets.
Sauvegardez les ressources de votre forum :
$ cd /chemin_vers_racine_nodebb/
$ tar -czf ./uploads.tar.gz ./public/uploads
Une fois que vous avez votre base de données et les ressources du forum, vous devez les copier vers le serveur Discourse.
Importation de la base de données
Maintenant que nous avons notre base de données, nous pouvons l’importer dans notre instance MongoDB locale :
$ mongorestore ~/chemin_du_repertoire_de_sauvegarde/
Pour plus d’options, référez-vous au guide officiel.
Ensuite, vous devez extraire uploads.tar.gz afin que l’importateur puisse importer les ressources :
$ tar xvzf uploads.tar.gz
Exécution du script d’importation
Maintenant que notre base de données et nos ressources sont en place, nous sommes prêts à exécuter notre script d’importation. Avant cela, nous devons modifier le script d’importation NodeBB pour qu’il réponde à nos besoins.
Voici le chemin de votre dossier d’uploads NodeBB :
ATTACHMENT_DIR = '/chemin_absolu/uploads'
Ensuite, nous devons indiquer à l’importateur d’utiliser l’adaptateur mongo au lieu de l’adaptateur redis :
adapter = NodeBB::Mongo
@client = adapter.new('mongodb://127.0.0.1:27017/nodebb')
# adapter = NodeBB::Redis
# @client = adapter.new(
# host: "localhost",
# port: "6379",
# db: 14
# )
Exécutez l’importateur avec Discourse propre et le support du gem mongo :
$ cd ~/discourse
$ echo "gem 'mongo'" >> Gemfile
$ bundle install
$ bundle exec rake db:drop db:create db:migrate
$ bundle exec ruby script/import_scripts/nodebb/nodebb.rb
L’importateur se connectera à l’instance MongoDB et migrera tout vers Discourse.
Une fois l’importation terminée, démarrez Discourse :
$ bundle exec rails server
Démarrez Sidekiq pour traiter les données migrées :
$ bundle exec sidekiq
Vous pouvez surveiller la progression à l’adresse http://localhost:3000/sidekiq/queues.
Effectuez une sauvegarde Discourse et téléversez-la sur votre serveur de production Discourse en suivant ce tutoriel.
![]()
Si vous avez des questions sur le processus, je suis heureux de vous aider.
Bonne migration ![]()

