Recherche de site Web

Comment installer NodeBB avec le proxy Nginx sur Debian 12


Sur cette page

  1. Conditions préalables
  2. Installation des dépendances
  3. Configuration du serveur MongoDB
  4. Installation de NodeBB
  5. Configurer Nginx comme proxy inverse
  6. Sécuriser NodeBB avec HTTPS
  7. Accéder à NodeBB
  8. Conclusion

NodeBB est un logiciel de forum open source écrit en JavaScript et Node.js. Il utilise MongoDB comme base de données par défaut. NodeBB offre plusieurs fonctionnalités, telles que les notifications en temps réel via socket Web, l'intégration des médias sociaux et également des API REST complètes.

Ce guide vous montrera comment installer NodeBB sur un serveur Debian 12 avec MongoDB comme base de données et Nginx comme proxy inverse.

Conditions préalables

Avant de commencer, assurez-vous d'avoir les éléments suivants :

  • Un serveur Debian 12.
  • Un utilisateur non root avec les privilèges sudo.
  • Un nom de domaine pointait vers une adresse IP de serveur.

Installation des dépendances

Pour démarrer le processus, vous installerez des dépendances pour NodeBB. Cela inclut le serveur Web Node.js, NPM (Node.js Package Manager) et Nginx du référentiel Debian. Quant à MongoDB, vous l'installerez via le référentiel officiel MongoDB.

Tout d’abord, exécutez la commande suivante pour installer les packages gnupg et curl sur votre système Debian.

sudo apt install gnupg curl -y

Ajoutez la clé MongoDB GPG et le référentiel avec la commande suivante :

curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
--dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

Mettez maintenant à jour l'index de votre package Debian et installez MongoDB, Node.js, NPM, Nginx et Git. Saisissez Y pour confirmer l’installation.

sudo apt update
sudo apt install mongodb-org nodejs npm git nginx

Une fois l'installation terminée, rechargez le gestionnaire systemd avec ce qui suit :

sudo systemctl daemon-reload

Exécutez maintenant la commande ci-dessous pour démarrer, activer et vérifier l'état du service MongoDB.

sudo systemctl enable --now mongod
sudo systemctl status mongod

La sortie suivante confirme que MongoDB est en cours d'exécution.

Ensuite, vérifiez l'état du service Nginx avec la commande ci-dessous. Vous devriez voir que Nginx est activé et exécuté sur votre système.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Enfin, vérifiez la version de Node.js et NPM avec ce qui suit :

sudo node-v
sudo npm -v

Vous pouvez voir ci-dessous que Node.js 18 et NPM 9 sont installés.

Configuration du serveur MongoDB

Dans cette section, vous allez activer l'authentification MongoDB, créer un nouvel utilisateur administrateur pour MongoDB, puis créer une nouvelle base de données et un nouvel utilisateur pour l'installation de NodeBB.

Connectez-vous au serveur MongoDB avec la commande ci-dessous.

mongosh

Exécutez la requête suivante pour basculer vers la base de données « admin » et créer un nouvel utilisateur administrateur « admin » pour MongoDB. Assurez-vous de changer le mot de passe « MongoDBAdminPass » avec le nouveau mot de passe.

use admin
db.createUser( { user: "admin", pwd: "MongoDBAdminPass", roles: [ { role: "root", db: "admin" } ] } )

Ensuite, créez une nouvelle base de données et un nouvel utilisateur 'nodebb' avec le mot de passe 'NodeBBPassword'. Cette base de données et cet utilisateur seront utilisés pour l'installation de NodeBB.

use nodebb
db.createUser( { user: "nodebb", pwd: "NodeBBPassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

Tapez maintenant 'quit()' pour quitter MongoDB.

Ensuite, ouvrez la configuration MongoDB '/etc/mongod.conf' avec l'éditeur nano.

sudo nano /etc/mongod.conf

Activez l'authentification MongoDB en ajoutant la configuration suivante.

security:
 authorization: enabled

Enregistrez et fermez le fichier une fois terminé.

Exécutez maintenant la commande ci-dessous pour redémarrer le service MongoDB et appliquer vos nouvelles modifications. Une fois la commande exécutée, l'authentification MongoDB sera activée.

sudo systemctl restart mongod

Pour vous assurer que votre configuration MongoDB réussit, connectez-vous à MongoDB avec l'utilisateur 'nodebb' à la base de données 'nodebb'. Entrez votre mot de passe lorsque vous y êtes invité.

mongosh "mongodb://127.0.0.1:27017" --username nodebb --authenticationDatabase nodebb

Après vous être connecté, exécutez la requête ci-dessous pour vérifier votre connexion et quitter MongoDB.

db.runCommand( { connectionStatus: 1, showPrivileges: false } )
quit()

Dans le résultat suivant, vous pouvez voir l'authentification en tant que « nodebb » dans la base de données « nodebb ».

Installation de NodeBB

Une fois la configuration de MongoDB terminée, vous allez télécharger et installer NodeBB. Vous allez créer un utilisateur dédié pour NodeBB, télécharger et installer les dépendances NodeBB, puis configurer un fichier de service pour votre installation NodeBB.

Ajoutez un nouvel utilisateur système « nodebb » avec le répertoire personnel par défaut « /opt/nodebb » à l'aide de la commande suivante.

sudo adduser --system --no-create-home --home=/opt/nodebb --group nodebb

Téléchargez maintenant la source NodeBB v3 dans le répertoire '/opt/nodebb' en utilisant git et modifiez la propriété du répertoire '/opt/nodebb'. à l'utilisateur 'nodebb'.

git clone -b v3.x https://github.com/NodeBB/NodeBB.git /opt/nodebb
sudo chown -R nodebb:nodebb /opt/nodebb

Accédez au répertoire '/opt/nodebb' et configurez votre installation NodeBB avec la commande ci-dessous.

cd /opt/nodebb
sudo su -s /bin/bash -c "./nodebb setup" nodebb
  • Saisissez votre nom de domaine pour NodeBB.
  • Laissez le secret NodeBB par défaut et appuyez sur ENTRÉE.
  • Tapez non pour désactiver l’utilisation anonyme du plugin.
  • Sélectionnez la base de données comme MongoDB.
  • Saisissez la base de données MongoDB avec la chaîne d'URL : mongodb://nodebb:[email :27017/nodebb.
  • Saisissez votre utilisateur administrateur et votre adresse e-mail pour NodeBB.
  • Saisissez votre mot de passe et répétez.

Une fois le processus terminé, vous verrez une sortie « Configuration NodeBB terminée ». Vous pouvez également voir la commande pour exécuter NodeBB.

Ensuite, exécutez la commande ci-dessous pour démarrer ou arrêter NodeBB. Vous pouvez l'utiliser lorsque vous devez commencer à arrêter NodeBB manuellement.

sudo su -s /bin/bash -c "./nodebb start" nodebb
sudo su -s /bin/bash -c "./nodebb stop" nodebb

Pour faciliter la gestion de NodeBB, vous allez créer un nouveau fichier de service systemd pour NodeBB. Avec cela, votre installation NodeBB s'exécutera en arrière-plan et vous pourrez la gérer avec la commande systemctl.

Créez un nouveau fichier de service systemd '/etc/systemd/system/nodebb.service' avec la commande nano editor.

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

Insérez la configuration suivante dans le fichier :

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service
[Service]
Type=simple
User=nodebb
StandardError=syslog
SyslogIdentifier=nodebb
Environment=NODE_ENV=production
WorkingDirectory=/opt/nodebb
ExecStart=/usr/bin/env node loader.js --no-silent --no-daemon
Restart=always
[Install]
WantedBy=multi-user.target

Enregistrez et fermez le fichier.

Exécutez maintenant la commande ci-dessous pour recharger le gestionnaire systemd et appliquer le nouveau fichier de service NodeBB.

sudo systemctl daemon-reload

Après cela, démarrez et activez le service 'nodebb' avec la commande systemctl suivante.

sudo systemctl start nodebb
sudo systemctl enable nodebb

Vérifiez le service 'nodebb' avec les éléments suivants pour vous assurer que le service est en cours d'exécution.

sudo systemctl status nodebb

Vous pouvez voir ci-dessous que NodeBB s'exécute en arrière-plan en tant que service systemd.

Configurer Nginx comme proxy inverse

À ce stade, NodeBB s'exécute en arrière-plan sur le port « 4567 ». Vous allez maintenant créer un nouveau bloc de serveur Nginx qui sera utilisé comme proxy inverse pour votre forum NodeBB. assurez-vous que votre nom de domaine pointe vers l'adresse IP de votre serveur.

Créez une nouvelle configuration de bloc de serveur Nginx '/etc/nginx/sites-available/nodebb' avec l'éditeur nano.

sudo nano /etc/nginx/sites-available/nodebb

Ajoutez la configuration suivante pour configurer Nginx en tant que proxy inverse pour NodeBB. Assurez-vous de modifier le paramètre server_name avec votre nom de domaine.

server {
 listen 80;
 server_name forum.howtoforge.local;
 location / {
 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 Host $http_host;
 proxy_set_header X-NginX-Proxy true;
 proxy_pass http://127.0.0.1:4567;
 proxy_redirect off;
 # Socket.IO Support
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 }
}

Une fois terminé, enregistrez le fichier et quittez.

Activez maintenant le fichier de bloc du serveur 'nodebb' et testez votre syntaxe Nginx avec ce qui suit :

sudo ln -s /etc/nginx/sites-available/nodebb /etc/nginx/sites-enabled/
sudo nginx -t

Si vous disposez de la syntaxe Nginx appropriée, vous verrez une sortie 'la syntaxe est correcte - le test est réussi'.

Enfin, exécutez la commande ci-dessous pour redémarrer le service Nginx et appliquer vos modifications.

sudo systemctl restart nginx

Sécuriser NodeBB avec HTTPS

Dans ce guide, vous sécuriserez NodeBB avec HTTPS via Certbot et Letsencrypt. Si vous utilisez un domaine local, vous pouvez ignorer cette étape ou générer des certificats auto-signés.

Installez le plugin Certbot et Certbot Nginx avec la commande apt suivante. Tapez Y pour procéder à l’installation.

sudo apt install certbot python3-certbot-nginx

Exécutez maintenant la commande certbot ci-dessous pour générer les certificats SSL pour votre nom de domaine NodeBB. Assurez-vous de modifier à la fois l'adresse e-mail et le nom de domaine avec vos informations.

sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [email  -d forum.hwdomain.i

Une fois le processus terminé, votre installation NodeBB devrait être automatiquement sécurisée avec HTTPS. Vos certificats SSL/TLS seront disponibles dans le répertoire '/etc/letsencrypt/live/domain.com'.

Accéder à NodeBB

Visitez https://forum.howtoforge.local/ à l'aide de votre navigateur Web et vous verrez la page d'index par défaut de NodeBB comme celle-ci :

Depuis la page d'accueil, cliquez sur le menu Connexion et la page de connexion NodeBB s'affichera. Entrez votre utilisateur administrateur et votre mot de passe, puis cliquez sur Connexion.

En cas de succès, vous verrez le tableau de bord utilisateur suivant.

Cliquez sur le menu Admin pour accéder au tableau de bord d'administration NodeBB comme suit :

Conclusion

Félicitations! Vous avez maintenant installé NodeBB sur le serveur Debian 12. NodeBB fonctionne avec la base de données MongoDB et le proxy inverse Nginx. Vous avez également sécurisé NodeBB avec HTTPS via Certbot et Letsencrypt.

Articles connexes: