GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer NodeBB Forum avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04 LTS

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.


Ubuntu
  1. Sécurisez Nginx avec Lets Encrypt sur Ubuntu 20.04

  2. Comment installer Nextcloud avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04 LTS

  3. Comment installer Magento 2 avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04 LTS

  4. Comment installer Shopware avec NGINX et Lets encrypt sur Ubuntu 18.04 LTS

  5. Installez Automad CMS avec Nginx et Lets Encrypt SSL sur Ubuntu 18.04

Comment installer MediaWiki avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04

Comment installer Gitea avec Nginx et Lets Encrypt SSL gratuit sur Ubuntu 20.04

Comment installer Let's Encrypt SSL avec Nginx sur Ubuntu 16.04 LTS

Comment installer Let's Encrypt SSL pour Nginx sur Ubuntu 18.04 LTS

Comment installer Nginx avec Let's Encrypt SSL sur Ubuntu 20.04 LTS

Comment installer Apache avec Let's Encrypt SSL sur Ubuntu 20.04 LTS