Installation Forum · 12 min read · Oct 14, 2025

Comment installer le forum NodeBB sur Ubuntu 22.04

NodeBB est un logiciel de forum moderne alimenté par le framework Node.js. Il utilise MongoDB, PostgreSQL ou Redis pour stocker les données. Il utilise des web sockets pour des notifications en temps réel et des interactions instantanées. Il possède des fonctionnalités modernes telles que l’intégration des réseaux sociaux, le support des plugins, la réactivité mobile et des API REST complètes en lecture/écriture.

NodeBB est disponible à la fois en tant que projet open-source auto-hébergé et en tant que service cloud. Dans ce tutoriel, vous apprendrez à installer le forum NodeBB en utilisant Nginx sur un serveur Ubuntu 22.04. Ubuntu 22.04 ne prend pas en charge MongoDB officiellement ; par conséquent, nous utiliserons PostgreSQL pour stocker les données.

Prérequis

  • Un serveur exécutant Ubuntu 22.04 avec un minimum de 1 Go de RAM.
  • Un utilisateur non-root avec des privilèges sudo.
  • Le pare-feu uncomplicated (UFW) est activé et en cours d’exécution.
  • Un nom de domaine complètement qualifié (FQDN) pointant vers le serveur comme, forum.example.com.
  • Tout est à jour. $ sudo apt update && sudo apt upgrade

Étape 1 - Configurer le pare-feu

Avant d’installer des paquets, la première étape consiste à configurer le pare-feu pour autoriser les connexions HTTP et HTTPS.

Vérifiez l’état du pare-feu.

$ sudo ufw status

Vous devriez voir quelque chose comme ceci.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Autorisez les ports HTTP et HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Vérifiez à nouveau l’état pour confirmer.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Étape 2 - Installer PostgreSQL

La première étape pour installer PostgreSQL consiste à ajouter sa clé GPG.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Ajoutez le dépôt APT à votre liste de sources.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Mettez à jour le dépôt système.

$ sudo apt update

Maintenant, vous pouvez installer PostgreSQL.

$ sudo apt install postgresql postgresql-contrib

Vérifiez l’état du service PostgreSQL.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2022-09-10 06:25:11 UTC; 13s ago
    Process: 12083 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 12083 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Sep 10 06:25:11 nodebb systemd[1]: Starting PostgreSQL RDBMS...
Sep 10 06:25:11 nodebb systemd[1]: Finished PostgreSQL RDBMS.

Étape 3 - Configurer PostgreSQL

Nous devons définir un mot de passe pour l’utilisateur administratif par défaut de Postgres postgres. Tout d’abord, connectez-vous à la shell Postgres.

$ sudo -u postgres psql

Entrez la commande suivante pour changer le mot de passe.

postgres=# \password postgres

Vous serez invité à entrer un nouveau mot de passe.

Enter new password for user "postgres":
Enter it again:

Créez un nouvel utilisateur pour NodeBB.

postgres=# CREATE ROLE nbbuser WITH LOGIN ENCRYPTED PASSWORD 'YourNodeBBPassword';

Créez une nouvelle base de données pour NodeBB.

postgres=# CREATE DATABASE nodebbdb OWNER nbbuser;

Tapez \q pour quitter la shell.

postgres=# \q

Étape 4 - Installer Node.js

Puisque le forum NodeBB est écrit en utilisant le framework Node.js, nous devons l’installer pour le faire fonctionner.

Émettez les commandes suivantes pour installer la version LTS (v16.x) de Node.js.

$ curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
$ sudo apt install nodejs

Vérifiez l’installation de Node.js et NPM.

$ node -v
v16.17.0
$ npm -v
8.15.0

Étape 5 - Installer Git

Avant de procéder à l’installation de NodeBB, nous devons installer Git. Exécutez la commande suivante pour installer Git.

$ sudo apt install git

Exécutez les commandes suivantes pour effectuer la configuration initiale de Git.

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

Étape 6 - Installer NodeBB

Il n’est pas conseillé d’exécuter NodeBB en tant qu’utilisateur root. Créez un utilisateur système non privilégié sans mot de passe.

$ sudo adduser nodebb --disabled-password

Passez toutes les autres options.

Créez le répertoire où votre forum NodeBB sera hébergé.

$ sudo mkdir /var/www/html/nodebb -p

Changez la propriété du dossier à l’utilisateur nouvellement créé.

$ sudo chown -R nodebb:nodebb /var/www/html/nodebb

Connectez-vous à l’utilisateur nouvellement créé.

$ sudo su - nodebb

Passez au répertoire d’installation de NodeBB.

$ cd /var/www/html/nodebb

Pour installer NodeBB, nous devons d’abord cloner son dépôt GitHub.

Clonez NodeBB dans le répertoire /var/www/nodebb. Le point à la fin de la commande fait référence au répertoire actuel.

$ git clone -b v2.x https://github.com/NodeBB/NodeBB.git .

Ici, nous avons cloné la branche v2.x de NodeBB qui contient la dernière version stable de NodeBB. Vous pouvez trouver la dernière branche stable sur la page des Dernières Branches de NodeBB.

NodeBB est livré avec un utilitaire en ligne de commande. Utilisez la commande suivante pour installer NodeBB.

$ ./nodebb setup

Vous pouvez appuyer sur entrer pour choisir la valeur par défaut.

2022-09-10T10:10:27.957Z [2633] - info: NodeBB Setup Triggered via Command Line

Welcome to NodeBB v2.5.2!

This looks like a new installation, so you'll have to answer a few questions about your environment before we can proceed.
Press enter to accept the default setting (shown in brackets).
URL used to access this NodeBB (http://localhost:4567) https://forum.example.com
Please enter a NodeBB secret (44fd62bc-5047-4414-a4ca-83105740b624)
Would you like to submit anonymous plugin usage to nbbpm? (yes) no
Which database to use (mongo) postgres
2022-09-10T10:10:43.237Z [2633] - info:
Now configuring postgres database:
Host IP or address of your PostgreSQL instance (127.0.0.1)
Host port of your PostgreSQL instance (5432)
PostgreSQL username nbbuser
Password of your PostgreSQL database
PostgreSQL database name (nodebb) nodebbdb
Enable SSL for PostgreSQL database access (false)
........

Pour la valeur de l’URL utilisée pour accéder à ce NodeBB, choisissez l’URL finale à laquelle vous souhaitez accéder au forum. Si vous accédez au forum via l’IP de votre serveur, entrez cela ou entrez le domaine complet du forum. Ici, nous entrerons https://forum.example.com. Choisissez non comme réponse à la question concernant la soumission de l’utilisation anonyme des plugins. Tapez postgres comme type de base de données.

Ensuite, choisissez l’IP et le port par défaut en appuyant sur entrer et entrez votre nom d’utilisateur PostgreSQL qui est lorsque vous entrez nbbuser et le mot de passe que vous avez choisi précédemment pour cet utilisateur lors de la configuration de MongoDB. Votre base de données nodebbdb devrait être choisie.

Vous serez également invité à créer un utilisateur administrateur et ses détails.

.....
2022-09-10T10:11:14.121Z [2633] - warn: No administrators have been detected, running initial user setup

Administrator username navjot
Administrator email address [email protected]
Password
Confirm Password
.....
....
2022-09-10T10:14:28.160Z [2633] - info: [build] Asset compilation successful. Completed in 118.777sec.

     =================================================================================================================================================================

NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.

Une fois la configuration terminée, exécutez la commande suivante pour démarrer NodeBB.

$ ./nodebb start
Starting NodeBB
  "./nodebb stop" to stop the NodeBB server
  "./nodebb log" to view server output
  "./nodebb help" for more commands

Quittez l’utilisateur NodeBB.

$ exit

Étape 7 - Exécuter NodeBB en tant que service système

Le service NodeBB ne fonctionnera pas après un redémarrage du système. Pour éviter de démarrer NodeBB à chaque fois, nous devons l’installer en tant que service système.

Arrêtez d’abord le service NodeBB. Passez au répertoire NodeBB, puis exécutez la commande directement en utilisant la commande sudo -u.

$ cd /var/www/html/nodebb  
$ sudo -u nodebb ./nodebb stop

Exécutez la commande suivante pour créer et éditer le fichier de configuration d’unité nodebb.service systemd.

$ sudo nano /etc/systemd/system/nodebb.service

Collez le code suivant dans l’éditeur.

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target postgresql.service

[Service]
Type=simple
User=nodebb

StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/var/www/html/nodebb
ExecStart=/usr/bin/env node loader.js --no-silent --no-daemon
Restart=always

[Install]
WantedBy=multi-user.target

Ici, nous avons choisi le nom d’utilisateur comme nodebb que nous avons créé à l’étape 6 et le chemin que nous avons choisi pour installer NodeBB.

Activez le service NodeBB.

$ sudo systemctl enable nodebb

Démarrez le service NodeBB.

$ sudo systemctl start nodebb

Vérifiez l’état du service.

$ sudo systemctl status nodebb
? nodebb.service - NodeBB
     Loaded: loaded (/etc/systemd/system/nodebb.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-09-11 21:41:07 UTC; 2s ago
       Docs: https://docs.nodebb.org
   Main PID: 26844 (node)
      Tasks: 18 (limit: 2237)
     Memory: 94.1M
        CPU: 2.114s
     CGroup: /system.slice/nodebb.service
             ??26844 node loader.js --no-silent --no-daemon
             ??26855 /usr/bin/node /var/www/html/nodebb/app.js

Sep 11 21:41:07 forum systemd[1]: Started NodeBB.
Sep 11 21:41:07 forum nodebb[26844]: NodeBB v2.5.2 Copyright (C) 2013-2022 NodeBB Inc.
Sep 11 21:41:07 forum nodebb[26844]: This program comes with ABSOLUTELY NO WARRANTY.
Sep 11 21:41:07 forum nodebb[26844]: This is free software, and you are welcome to redistribute it under certain conditions.
Sep 11 21:41:07 forum nodebb[26844]: For the full license, please visit: http://www.gnu.org/copyleft/gpl.html
Sep 11 21:41:07 forum nodebb[26844]: Clustering enabled: Spinning up 1 process(es).
Sep 11 21:41:08 forum nodebb[26855]: 2022-09-11T21:41:08.002Z [4567/26855] - info: Initializing NodeBB v2.5.2 https://forum.example.com

Étape 8 - Installer Nginx

Ubuntu 22.04 est livré avec une version plus ancienne de Nginx. Pour installer la dernière version, vous devez télécharger le dépôt officiel de Nginx.

Importez la clé de signature de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Ajoutez le dépôt pour la version stable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Mettez à jour les dépôts système.

$ sudo apt update

Installez Nginx.

$ sudo apt install nginx

Vérifiez l’installation.

$ nginx -v
nginx version: nginx/1.22.0

Démarrez le serveur Nginx.

$ sudo systemctl start nginx

Étape 9 - Installer SSL

Nous devons installer Certbot pour générer le certificat SSL. Vous pouvez soit installer Certbot en utilisant le dépôt d’Ubuntu, soit obtenir la dernière version en utilisant l’outil Snapd. Nous allons utiliser la version Snapd.

Ubuntu 22.04 est livré avec Snapd installé par défaut. Exécutez les commandes suivantes pour vous assurer que votre version de Snapd est à jour.

$ sudo snap install core
$ sudo snap refresh core

Installez Certbot.

$ sudo snap install --classic certbot

Utilisez la commande suivante pour vous assurer que la commande Certbot peut être exécutée en créant un lien symbolique vers le répertoire /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Exécutez la commande suivante pour générer un certificat SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d forum.example.com

La commande ci-dessus téléchargera un certificat dans le répertoire /etc/letsencrypt/live/forum.example.com sur votre serveur.

Générez un certificat de groupe Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Pour vérifier si le renouvellement SSL fonctionne correctement, effectuez un essai à sec du processus.

$ sudo certbot renew --dry-run

Si vous ne voyez aucune erreur, vous êtes prêt. Votre certificat se renouvellera automatiquement.

Étape 10 - Configurer Nginx

Ouvrez le fichier /etc/nginx/nginx.conf pour l’éditer.

$ sudo nano /etc/nginx/nginx.conf

Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Créez et ouvrez le fichier /etc/nginx/conf.d/nodebb.conf pour l’éditer.

$ sudo nano /etc/nginx/conf.d/nodebb.conf

Collez le code suivant dedans. Remplacez forum.example.com par votre nom de domaine. Assurez-vous que la valeur de client_max_body_size est définie sur 25 Mo pour définir la taille de téléchargement pour le forum.

server {
  listen 80 default_server;
  server_name forum.example.com;
  return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl http2;
   server_name forum.example.com;

   http2_push_preload on; # Enable HTTP/2 Server Push

   ssl_certificate /etc/letsencrypt/live/forum.example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/forum.example.com/privkey.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/forum.example.com/chain.pem;
   ssl_session_timeout 1d;

   # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
   ssl_protocols TLSv1.2 TLSv1.3;

   # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
   # prevent replay attacks.
   #
   # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
   ssl_early_data on;

   ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:50m;

   # OCSP Stapling ---
   # fetch OCSP records from URL in ssl_certificate and cache them
   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_dhparam /etc/ssl/certs/dhparam.pem;
   client_max_body_size 25M;

   gzip            on;
   gzip_min_length 1000;
   gzip_proxied    off;
   gzip_types      text/plain application/xml text/javascript application/javascript application/x-javascript text/css application/json;

   add_header X-Early-Data $tls1_3_early_data;

   location / {       
       # Socket.IO Support
       proxy_set_header Connection "upgrade";
       proxy_set_header Upgrade $http_upgrade;
       proxy_http_version 1.1;

       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-NginX-Proxy true;
       proxy_set_header X-Frame-Options SAMEORIGIN;

       proxy_pass http://127.0.0.1:4567;  # no trailing slash
       proxy_redirect off;
   }

   location @nodebb {
       proxy_pass http://127.0.0.1:4567;
   }

   location ~ ^/assets/(.*) {
       root /var/www/html/nodebb/;
       try_files /build/public/$1 /public/$1 @nodebb;
   }
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the "$ssl_early_data" variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Vérifiez votre configuration Nginx.

$ sudo nginx -t

Redémarrez le serveur Nginx.

$ sudo systemctl restart nginx

Étape 11 - Accéder et configurer le forum

Vous pouvez accéder au forum en visitant l’URL https://forum.example.com dans votre navigateur. Vous obtiendrez la page suivante.

Page d'accueil du forum NodeBB

Cliquez sur la page de connexion et entrez les identifiants administratifs que vous avez créés à l’étape 6.

Page de connexion NodeBB

Vous serez connecté. Ensuite, cliquez sur l’icône la plus à droite en haut de la barre de menu pour accéder au panneau d’administration.

À partir de là, vous pouvez gérer le forum. Étendez-le en installant des thèmes et des plugins.

Tableau de bord d'administration du forum NodeBB

Après avoir installé un thème et un plugin, vous devez reconstruire et redémarrer le forum en utilisant le bouton en haut à droite du tableau de bord d’administration comme indiqué ici.

Assurez-vous de configurer votre service de messagerie en allant dans Tableau de bord >> Paramètres >> Email afin que vos utilisateurs de forum puissent recevoir des e-mails. Sélectionnez les paramètres suivants pour garantir des paramètres de livraison d’e-mail optimaux.

Paramètres de messagerie du forum NodeBB

Faites défiler la page vers le bas et sélectionnez un expéditeur de messagerie personnalisé dans le menu déroulant ou utilisez un expéditeur de messagerie personnalisé si votre service SMTP n’est pas dans la liste. Pour notre tutoriel, nous utilisons le service SES.

Paramètres SMTP du forum NodeBB

Cliquez sur l’icône de disquette en bas à droite pour enregistrer les paramètres.

Faites défiler vers le bas de la page pour envoyer un e-mail de test. Par défaut, il enverra un modèle d’e-mail banni. Vous pouvez sélectionner tout autre modèle de messagerie à tester. Nous allons envoyer l’e-mail de bienvenue.

Test d'e-mail du forum NodeBB

Vous recevrez un e-mail de test comme indiqué ci-dessous confirmant les paramètres.

E-mail de test du forum NodeBB

Conclusion

Cela conclut notre tutoriel sur l’installation du forum NodeBB en utilisant la base de données PostgreSQL et Nginx sur un serveur Ubuntu 22.04. Si vous avez des questions, posez-les dans les commentaires ci-dessous.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.