NodeBB est un logiciel de forum moderne alimenté par Node.js qui utilise MongoDB/Redis comme plates-formes de base de données. Il utilise des sockets Web pour des interactions instantanées et des notifications en temps réel.
Dans ce tutoriel, nous allons apprendre à installer le forum NodeBB sur un serveur basé sur Ubuntu 20.04.
Prérequis
-
Un serveur basé sur Ubuntu 20.04 avec un utilisateur non root ayant des privilèges sudo.
-
Au moins 2 Go de RAM. Si votre serveur ne dispose que de 1 Go de RAM, il est préférable d'activer une partition d'échange.
-
Assurez-vous que tout est mis à jour.
$ sudo apt update && sudo apt upgrade
-
Peu de forfaits indispensables. Certains d'entre eux seront déjà sur votre serveur.
$ sudo apt install curl wget nano ca-certificates gnupg2 lsb-release
Étape 1 - Configurer le pare-feu
La première étape consiste à configurer le pare-feu. Ubuntu est livré avec ufw (pare-feu non compliqué) par défaut.
Vérifiez si le pare-feu est en cours d'exécution.
$ sudo ufw status
Vous devriez obtenir le résultat suivant.
Status: inactive
Autorisez le port SSH afin que le pare-feu n'interrompe pas la connexion actuelle en l'activant.
$ sudo ufw allow OpenSSH
Autoriser 27017
port pour le serveur MongoDB et 4567
port pour exécuter le forum NodeBB. Autoriser HTTP
et HTTPS
ports également.
$ sudo ufw allow 27017
$ sudo ufw allow 4567
$ sudo ufw allow 80
$ sudo ufw allow 443
Activez le pare-feu.
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Vérifiez à nouveau l'état du pare-feu.
$ sudo ufw status
Vous devriez voir une sortie similaire.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
27017 ALLOW Anywhere
4567 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
27017 (v6) ALLOW Anywhere (v6)
4567 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Étape 2 - Installer Node.js
Nous allons installer la version LTS de Node.js ici. Exécutez les commandes suivantes pour installer Node.js.
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
Vérifiez si Node est correctement installé.
$ node --version
Vous devriez voir une sortie similaire.
v12.18.3
Vérifiez également npm.
$ npm --version
6.14.6
Étape 3 - Installer MongoDB
MongoDB est la base de données par défaut pour NodeBB. Vous pouvez également utiliser Redis au lieu de MongoDB. Nous couvrirons les deux bases de données dans notre tutoriel.
Le dépôt de MongoDB pour Ubuntu 20.04 n'est pas encore prêt et Ubuntu lui-même porte une version très ancienne. Pour notre objectif, nous utiliserons le référentiel MongoDB pour 18.04 qui fonctionne très bien. Vous pouvez mettre à jour la liste des packages avec le dernier référentiel une fois que le support officiel est disponible.
Importez la clé publique pour MongoDB.
$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Ajoutez le référentiel MongoDB.
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
Mettez à jour la base de données locale des packages.
$ sudo apt update
Installez MongoDB.
$ sudo apt install mongodb-org
Vérifiez l'installation de MongoDB.
$ mongod --version
db version v4.2.8
...
Démarrez le service MongoDB.
$ sudo systemctl start mongod
Activez le service MongoDB.
$ sudo systemctl enable mongod
Vérifiez l'état du service MongoDB.
$ sudo systemctl status mongod
Étape 4 - Configuration de MongoDB
L'administration de Mongo se fait via le shell MongoDB. L'installation par défaut de MongoDB écoute sur le port 27017.
Accédez au shell MongoDB.
$ mongo
Passer à l'admin
intégré base de données.
> use admin
Créez un utilisateur administratif. Ce n'est pas la même chose que l'utilisateur administrateur NodeBB.
> db.createUser( { user: "admin", pwd: "yourpassword", roles: [ { role: "root", db: "admin" } ] } )
Changez l'espace réservé “yourpassword”
à votre propre mot de passe.
Ajouter une nouvelle base de données pour NodeBB.
> use nodebb
Ensuite, créez le nodebb
utilisateur pour gérer le nodebb
base de données.
> db.createUser( { user: "nodebb", pwd: "yourpassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
Le readwrite
l'autorisation permet à NodeBB de stocker et de récupérer des données depuis le nodebb
base de données. Le clustermonitor
L'autorisation permet à NodeBB d'accéder en lecture seule aux statistiques de la base de données qui sont visibles via son panneau d'administration.
Quittez le shell Mongo.
> quit()
Ouvrez le fichier de configuration MongoDB pour le modifier.
$ sudo nano /etc/mongod.conf
Ajoutez la ligne suivante à la fin du fichier.
security:
authorization: enabled
Redémarrez MongoDB et vérifiez l'utilisateur administratif créé précédemment.
$ sudo systemctl restart mongod
$ mongo -u admin -p yourpassword --authenticationDatabase=admin
Vous devriez voir l'invite Mongo si tout a été configuré correctement.
É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 sans privilège.
$ sudo adduser nodebb
Définissez un mot de passe de votre choix et ignorez les autres options.
Créez le répertoire où votre forum NodeBB vivra.
$ sudo mkdir /var/www/nodebb
Modifiez la propriété du dossier pour l'utilisateur nouvellement créé.
$ sudo chown -R nodebb:nodebb /var/www/nodebb
Connectez-vous à l'utilisateur nouvellement créé.
$ su nodebb
Basculez vers le répertoire d'installation de NodeBB.
$ cd /var/www/nodebb
Pour installer NodeBB, nous devons d'abord cloner son dépôt Github.
Cloner NodeBB dans /var/www/nodebb
annuaire. Le point à la fin de la commande fait référence au répertoire courant.
$ git clone -b v1.14.2 https://github.com/NodeBB/NodeBB.git .
Ici nous avons cloné la v1.14.2 de NodeBB qui était la dernière version stable au moment de la rédaction du tutoriel. Vous pouvez trouver la dernière branche stable sur la page Dernière version de NodeBB.
NodeBB est livré avec un utilitaire de ligne de commande. Utilisez la commande suivante pour installer NodeBB.
$ ./nodebb setup
Vous pouvez appuyer sur Entrée pour choisir la valeur par défaut.
Pour la valeur de URL utilisée pour accéder à ce NodeBB choisissez l'URL finale sur laquelle vous souhaitez accéder au forum. Si vous accédez au forum via l'adresse IP de votre serveur, entrez-le ou entrez le domaine complet du forum. Ici, nous allons saisir http://forum.example.com
.
Continuez à choisir les valeurs par défaut jusqu'à ce que vous soyez invité à entrer le nom d'utilisateur MongoDB c'est-à-dire lorsque vous entrez nodebb et le mot de passe que vous avez choisi précédemment pour ce nom d'utilisateur lors de la configuration de MongoDB. Votre base de données nodebb devrait être choisi. Il vous sera également demandé de créer un utilisateur administrateur et ses détails.
Une fois la configuration terminée, exécutez la commande suivante pour démarrer NodeBB.
$ ./nodebb start
Votre forum est maintenant en cours d'exécution. Vous devriez pouvoir y accéder via http://<yourserverip>:4567
.
Vous pouvez voir un message d'erreur indiquant Il semble que votre connexion à NodeBB ait été perdue, veuillez patienter pendant que nous essayons de vous reconnecter. Il apparaît parce que nous avons choisi l'URL par défaut pour NodeBB http://forum.example.com
et non http://<yourserverip
. Mais si vous entrez l'adresse IP lors de la configuration, vous n'obtiendrez plus l'erreur, mais vous devrez configurer à nouveau plus tard après avoir choisi un domaine pour votre forum.
Quittez l'utilisateur NodeBB.
$ exit
Étape 7 - Installer Nginx
Ubuntu 20.04 porte par défaut la dernière version stable de Nginx. Nous allons l'installer.
$ sudo apt install nginx
Vérifiez s'il est correctement installé.
$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
Démarrez et activez Nginx.
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Ouvrez l'adresse IP de votre serveur dans votre navigateur Web. Vous devriez voir la page suivante, ce qui signifie que votre serveur est opérationnel.
Étape 8 - Configurer Nginx
Exécutez la commande suivante pour ajouter un fichier de configuration pour votre site.
$ sudo nano /etc/nginx/sites-available/nodebb.conf
Collez le code suivant dans l'éditeur.
server {
listen 80;
server_name forum.example.com;
access_log /var/log/nginx/forum.example.com.access.log;
error_log /var/log/nginx/forum.example.com.error.log;
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";
}
}
Appuyez sur Ctrl + X
pour quitter l'éditeur et saisir Y
lorsque vous y êtes invité.
Une fois que vous avez terminé, vérifiez que la configuration de Nginx est correcte.
$ sudo nginx -t
Rechargez le service Nginx pour activer la configuration.
$ sudo systemctl reload nginx
Visitez http://forum.example.com
dans votre navigateur pour ouvrir le forum NodeBB.
Étape 9 - 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.
$ ./nodebb stop
Exécutez la commande suivante pour créer et modifier nodebb.service
fichier de configuration de l'unité 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 mongod.service
[Service]
Type=forking
User=nodebb
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodebb
Environment=NODE_ENV=production
WorkingDirectory=/var/www/nodebb
PIDFile=/var/www/nodebb/pidfile
ExecStart=/usr/bin/env node loader.js
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 y 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
Étape 10 - Obtenir un certificat SSL Let's Encrypt
Sécuriser votre forum NodeBB avec HTTPS est une étape nécessaire pour sécuriser le trafic de votre site. Pour ce tutoriel, nous utiliserons le client Certbot pour installer le SSL.
Pour cela, installez d'abord l'outil Certbot.
$ sudo apt install certbot python3-certbot-nginx
Générez les certificats.
$ sudo certbot --nginx -d forum.example.com
Si c'est la première fois que vous utilisez Certbot sur votre système, il vous sera demandé une adresse e-mail et d'accepter les conditions d'utilisation. Il vous sera également demandé si vous acceptez de partager des données avec la fondation EFF, ce à quoi vous pouvez dire non. Après cela, Certbot communiquera avec les serveurs Let's Encrypt et lancera un défi pour vérifier vos domaines.
Si cela réussit, il vous sera demandé comment gérer les redirections HTTPS.
Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Sélectionnez Secure
choix et appuyez sur entrée. Cela garantira que toutes les demandes adressées au domaine http seront correctement redirigées vers la version https. Vos certificats seront alors créés et vos fichiers de configuration Nginx seront mis à jour avec les paramètres SSL.
Vos certificats sont prêts et vous pouvez ouvrir votre site maintenant en vous rendant sur https://forum.example.com
Étape 11 - Vérifier le renouvellement automatique SSL
Il s'agit de la dernière étape avant de terminer ce didacticiel.
Vérifiez le processus de renouvellement en faisant un essai du processus de renouvellement.
$ sudo certbot renew --dry-run
Si vous n'obtenez aucune erreur, cela signifie que vous êtes prêt. Certbot renouvellera automatiquement vos certificats pour vous. Vous recevrez un e-mail vous informant de l'expiration du certificat.
Conclusion
C'est tout pour ce tutoriel. La configuration de votre forum NodeBB est terminée. Si vous avez des questions, postez-les dans les commentaires ci-dessous.