Wie installiert man NodeBB Forum mit Nginx und Let’s Encrypt SSL auf Ubuntu 20.04 LTS

NodeBB ist eine moderne Forensoftware, die auf Node.js basiert und MongoDB/Redis als Datenbankplattform verwendet. Es verwendet Web-Sockets für sofortige Interaktionen und Echtzeit-Benachrichtigungen.

In diesem Tutorial werden wir lernen, wie man das NodeBB-Forum auf einem Ubuntu 20.04-basierten Server installiert.

Voraussetzungen

  • Ein Ubuntu 20.04-basierter Server mit einem Nicht-Root-Benutzer mit sudo-Privilegien.
  • Mindestens 2 GB RAM. Wenn Ihr Server nur 1 GB RAM hat, ist es am besten, eine Swap-Partition zu aktivieren.
  • Stellen Sie sicher, dass alles aktualisiert ist.
    $ sudo apt update && sudo apt upgrade
    
  • Wenige wesentliche Pakete. Einige davon werden sich bereits auf Ihrem Server befinden.
    $ sudo apt install curl wget nano ca-certificates gnupg2 lsb-release
    

Schritt 1 – Konfigurieren der Firewall

Der erste Schritt ist die Konfiguration der Firewall. Ubuntu wird standardmäßig mit ufw (Unkomplizierte Firewall) ausgeliefert.

Prüfen Sie, ob die Firewall läuft.

$ sudo ufw status

Sie sollten die folgende Ausgabe erhalten.

Status: inactive

Erlauben Sie den SSH-Port, so dass die Firewall beim Aktivieren die aktuelle Verbindung nicht unterbricht.

$ sudo ufw allow OpenSSH

Lassen 27017Sie den Port für den MongoDB-Server und 4567den Port für den Betrieb des NodeBB-Forums zu. Erlauben HTTPund auch HTTPSPorts.

$ sudo ufw allow 27017
$ sudo ufw allow 4567
$ sudo ufw allow 80
$ sudo ufw allow 443

Aktivieren Sie die Firewall.

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Überprüfen Sie den Status der Firewall erneut.

$ sudo ufw status

Sie sollten eine ähnliche Ausgabe sehen.

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)

Schritt 2 – Installieren Sie Node.js

Wir werden die LTS-Version von Node.js hier installieren. Führen Sie die folgenden Befehle aus, um Node.js zu installieren.

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

Prüfen Sie, ob Node richtig installiert ist.

$ node --version

Sie sollten eine ähnliche Ausgabe sehen.

v12.18.3

Prüfen Sie auch npm.

$ npm --version
6.14.6

Schritt 3 – MongoDB installieren

MongoDB ist die Standarddatenbank für NodeBB. Sie können auch Redis anstelle von MongoDB verwenden. Wir werden beide Datenbanken in unserem Tutorial behandeln.

Das Repository von MongoDB für Ubuntu 20.04 ist noch nicht fertig und Ubuntu selbst trägt eine sehr alte Version. Für unseren Zweck werden wir das MongoDB-Repository für 18.04 verwenden, was sehr gut funktioniert. Sie können die Paketliste mit dem neuesten Repository aktualisieren, sobald offizielle Unterstützung verfügbar ist.

Importieren Sie den öffentlichen Schlüssel für MongoDB.

$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

Fügen Sie das MongoDB-Repository hinzu.

$ 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

Aktualisieren Sie die lokale Paketdatenbank.

$ sudo apt update

MongoDB installieren.

$ sudo apt install mongodb-org

Überprüfen Sie die Installation von MongoDB.

$ mongod --version
db version v4.2.8
...

Starten Sie den MongoDB-Dienst.

$ sudo systemctl start mongod

Aktivieren Sie den MongoDB-Dienst.

$ sudo systemctl enable mongod

Überprüfen Sie den Status des MongoDB-Dienstes.

$ sudo systemctl status mongod

Schritt 4 – Konfigurieren von MongoDB

Die Verwaltung von Mongo erfolgt über die MongoDB-Shell. Die Standardinstallation von MongoDB lauscht auf Port 27017.

Zugriff auf die MongoDB-Shell.

$ mongo

Wechseln Sie zur eingebauten adminDatenbank.

> use admin

Erstellen Sie einen administrativen Benutzer. Dies ist nicht dasselbe wie der NodeBB-Admin-Benutzer.

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

Ändern Sie den Platzhalter “yourpassword”in Ihr eigenes Passwort.

Fügen Sie eine neue Datenbank für NodeBB hinzu.

> use nodebb

Als nächstes erstellen Sie den nodebbBenutzer zur Verwaltung der nodebbDatenbank.

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

Die readwriteBerechtigung erlaubt es NodeBB, Daten in der nodebbDatenbank zu speichern und aus der Datenbank abzurufen. Die clustermonitorBerechtigung ermöglicht NodeBB den Nur-Lese-Zugriff auf die Datenbankstatistiken, die über sein Admin-Panel sichtbar sind.

Beenden Sie die Mongo-Shell.

> quit()

Öffnen Sie die MongoDB-Konfigurationsdatei zum Bearbeiten.

$ sudo nano /etc/mongod.conf

Fügen Sie die folgende Zeile am Ende der Datei an.

security:
  authorization: enabled

Starten Sie MongoDB neu und überprüfen Sie den zuvor erstellten administrativen Benutzer.

$ sudo systemctl restart mongod
$ mongo -u admin -p yourpassword --authenticationDatabase=admin

Sie sollten die Mongo-Eingabeaufforderung sehen, wenn alles korrekt konfiguriert wurde.

Schritt 5 – Git installieren

Bevor wir mit der Installation von NodeBB fortfahren, müssen wir Git installieren.

Führen Sie den folgenden Befehl aus, um Git zu installieren.

$ sudo apt install git

Führen Sie die folgenden Befehle aus, um die anfängliche Konfiguration von Git durchzuführen.

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

Schritt 6 – Installieren Sie NodeBB

Es ist nicht ratsam, NodeBB als Root-Benutzer auszuführen.

Erstellen Sie einen unprivilegierten Benutzer.

$ sudo adduser nodebb

Setzen Sie ein Passwort Ihrer Wahl und überspringen Sie andere Optionen.

Erstellen Sie das Verzeichnis, in dem Ihr NodeBB-Forum leben wird.

$ sudo mkdir /var/www/nodebb

Ändern Sie den Eigentümer des Ordners auf den neu erstellten Benutzer.

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

Melden Sie sich bei dem neu erstellten Benutzer an.

$ su nodebb

Wechseln Sie in das Installationsverzeichnis von NodeBB.

$ cd /var/www/nodebb

Um NodeBB zu installieren, müssen wir zuerst sein Github-Repository klonen.

Klonen Sie NodeBB in das /var/www/nodebbVerzeichnis. Der Punkt am Ende des Befehls bezieht sich auf das aktuelle Verzeichnis.

$ git clone -b v1.14.2 https://github.com/NodeBB/NodeBB.git .

Hier haben wir die v1.14.2 von NodeBB geklont, die zum Zeitpunkt des Schreibens des Tutorials die letzte stabile Version war. Sie finden den neuesten stabilen Zweig auf der Seite der neuesten Version von NodeBB.

NodeBB wird mit einem Kommandozeilen-Dienstprogramm ausgeliefert. Verwenden Sie den folgenden Befehl, um NodeBB zu installieren.

$ ./nodebb setup

Sie können die Eingabetaste drücken, um den Standardwert zu wählen.

Für den Wert der URL, die für den Zugriff auf diesen NodeBB verwendet wird, wählen Sie die endgültige URL, unter der Sie auf das Forum zugreifen möchten. Wenn Sie auf das Forum über Ihre Server-IP zugreifen wollen, geben Sie diese oder die vollständige Domäne des Forums ein. Hier werden wir eingebenhttp://forum.example.com.

Wählen Sie solange Standardwerte, bis Sie zur Eingabe des MongoDB-Benutzernamens aufgefordert werden, d.h. wenn Sie nodebb und das Passwort eingeben, das Sie zuvor bei der Konfiguration von MongoDB für diesen Benutzernamen gewählt haben. Ihr Datenbank-Nodebb sollte gewählt werden. Sie werden auch aufgefordert, einen Administrator-Benutzer und dessen Details zu erstellen.

Sobald die Einrichtung abgeschlossen ist, führen Sie den folgenden Befehl aus, um NodeBB zu starten.

$ ./nodebb start

Ihr Forum läuft nun. Sie sollten darauf zugreifen können über http://<yourserverip>:4567.

Sie werden möglicherweise eine Fehlermeldung sehen, die besagt, dass Ihre Verbindung zu NodeBB verloren gegangen ist. Bitte warten Sie, während wir versuchen, die Verbindung wieder herzustellen. Sie erscheint, weil wir die Standard-URL für NodeBB gewählt haben http://forum.example.comund nicht http://<yourserverip. Aber wenn Sie die IP-Adresse während der Einrichtung eingeben, erhalten Sie den Fehler nicht mehr, sondern müssen später erneut konfigurieren, nachdem Sie eine Domain für Ihr Forum gewählt haben.

Beenden Sie den NodeBB-Benutzer.

$ exit

Schritt 7 – Nginx installieren

Ubuntu 20.04 enthält standardmäßig die neueste stabile Version von Nginx. Wir werden diese installieren.

$ sudo apt install nginx

Überprüfen Sie, ob er korrekt installiert ist.

$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

Starten und aktivieren Sie Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Öffnen Sie die IP-Adresse Ihres Servers in Ihrem Webbrowser. Sie sollten die folgende Seite sehen, was bedeutet, dass Ihr Server betriebsbereit ist und läuft.

Schritt 8 – Konfigurieren von Nginx

Führen Sie den folgenden Befehl aus, um eine Konfigurationsdatei für Ihre Site hinzuzufügen.

$ sudo nano /etc/nginx/sites-available/nodebb.conf

Fügen Sie den folgenden Code in den Editor ein.

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";
    }
}

Drücken Ctrl + XSie , um den Editor zu verlassen und geben Sie ein, Ywenn Sie dazu aufgefordert werden.

Wenn Sie fertig sind, überprüfen Sie, ob die Nginx-Konfiguration korrekt ist.

$ sudo nginx -t

Laden Sie den Nginx-Dienst neu, um die Konfiguration zu aktivieren.

$ sudo systemctl reload nginx

Besuchen Sie http://forum.example.comin Ihrem Browser, um das NodeBB-Forum zu öffnen.

Schritt 9 – Führen Sie NodeBB als Systemdienst aus

Der NodeBB-Dienst läuft nach einem Systemneustart nicht mehr. Um zu vermeiden, dass NodeBB jedes Mal gestartet wird, müssen wir es als Systemdienst installieren.

Stoppen Sie den NodeBB-Dienst zuerst.

$ ./nodebb stop

Führen Sie den folgenden Befehl aus, um die Konfigurationsdatei der Systemeinheit zu erstellen und zu bearbeitennodebb.service.

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

Fügen Sie den folgenden Code in den Editor ein.

[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

Hier haben wir den Benutzernamen gewähltnodebb, den wir in Schritt 6 erstellt haben, und den Pfad, den wir gewählt haben, um NodeBB darin zu installieren.

Aktivieren Sie den NodeBB-Dienst.

$ sudo systemctl enable nodebb

Starten Sie den NodeBB-Dienst.

$ sudo systemctl start nodebb

Überprüfen Sie den Status des Dienstes.

$ sudo systemctl status nodebb

Schritt 10 – Erhalten Sie ein Let’s Encrypt SSL-Zertifikat

Die Sicherung Ihres NodeBB-Forums mit HTTPS ist ein notwendiger Schritt, um den Datenverkehr Ihrer Website zu sichern. In diesem Tutorial verwenden wir den Certbot-Client zur Installation von SSL.

Installieren Sie dazu zunächst das Certbot-Tool.

$ sudo apt install certbot python3-certbot-nginx

Erzeugen Sie die Zertifikate.

$ sudo certbot --nginx -d forum.example.com

Wenn Sie Certbot zum ersten Mal auf Ihrem System ausführen, werden Sie nach einer E-Mail-Adresse und der Zustimmung zu den Nutzungsbedingungen gefragt. Sie werden auch gefragt, ob Sie der Weitergabe von Daten an die Stiftung EFF zustimmen, die Sie ablehnen können. Danach wird Certbot mit den Servern von Let’s Encrypt kommunizieren und eine Challenge ausführen, um Ihre Domains zu überprüfen.

Wenn dies erfolgreich ist, werden Sie gefragt, wie mit HTTPS-Umleitungen umgegangen werden soll.

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):

Wählen Sie Securechoice und drücken Sie Enter. Dies stellt sicher, dass alle Anfragen an die http-Domain korrekt auf die https-Version umgeleitet werden. Ihre Zertifikate werden dann erstellt, und Ihre Nginx-Konfigurationsdateien werden mit SSL-Einstellungen aktualisiert.

Ihre Zertifikate sind bereit, und Sie können Ihre Website jetzt öffnen, indem Sie https://forum.example.com

Schritt 11 – Überprüfen der automatischen SSL-Verlängerung

Dies ist der letzte Schritt, bevor wir dieses Tutorial beenden.

Überprüfen Sie den Erneuerungsprozess, indem Sie einen Trockenlauf des Erneuerungsprozesses durchführen.

$ sudo certbot renew --dry-run

Wenn Sie keine Fehler erhalten, bedeutet dies, dass Sie eingestellt sind. Certbot wird Ihre Zertifikate automatisch für Sie erneuern. Sie erhalten eine E-Mail-Warnung über den Ablauf des Zertifikats.

Schlussfolgerung

Das ist alles zu diesem Tutorial. Die Einrichtung Ihres NodeBB-Forums ist abgeschlossen. Wenn Sie Fragen haben, stellen Sie diese in den Kommentaren unten.

Das könnte dich auch interessieren …