Wie installiere ich NodeBB mit Nginx Proxy unter Debian 12

NodeBB ist eine Open-Source-Forensoftware, die in JavaScript und Node.js geschrieben wurde. Sie nutzt MongoDB als Standarddatenbank. NodeBB bietet zahlreiche Funktionen, wie z.B. Echtzeit-Benachrichtigungen über Web-Socket, Social-Media-Integration und auch vollständige REST-APIs.

Diese Anleitung zeigt dir, wie du NodeBB auf einem Debian 12 Server mit MongoDB als Datenbank und Nginx als Reverse Proxy installierst.

Voraussetzungen

Bevor du beginnst, solltest du sicherstellen, dass du Folgendes hast

  • Einen Debian 12 Server.
  • Einen Nicht-Root-Benutzer mit sudo-Rechten.
  • Einen Domainnamen, der auf eine Server-IP-Adresse zeigt.

Installieren der Abhängigkeiten

Um den Prozess zu beginnen, musst du die Abhängigkeiten für NodeBB installieren. Dazu gehören Node.js, NPM (Node.js Package Manager) und der Webserver Nginx aus dem Debian-Repository. MongoDB installierst du über das offizielle MongoDB-Repository.

Führe zunächst den folgenden Befehl aus, um die Pakete gnupg und curl auf deinem Debian-System zu installieren.

sudo apt install gnupg curl -y

Füge den MongoDB GPG-Schlüssel und das Repository mit dem folgenden Befehl hinzu:

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

Mongodb Repo hinzufügen

Aktualisiere nun deinen Debian-Paketindex und installiere MongoDB, Node.js, NPM, Nginx und Git. Gib Y ein, um die Installation zu bestätigen.

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

Abhängigkeiten installieren

Nachdem die Installation abgeschlossen ist, lade den systemd Manager mit folgendem Befehl neu:

sudo systemctl daemon-reload

Führe nun den folgenden Befehl aus, um den MongoDB-Dienst zu starten, zu aktivieren und den Status zu überprüfen.

sudo systemctl enable --now mongod
sudo systemctl status mongod

Die folgende Ausgabe bestätigt, dass MongoDB läuft.

mongodb prüfen

Als Nächstes überprüfe den Status des Nginx-Dienstes mit dem folgenden Befehl. Du solltest sehen, dass Nginx aktiviert ist und auf deinem System läuft.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

nginx prüfen

Überprüfe abschließend die Node.js- und NPM-Version mit folgendem Befehl:

sudo node-v
sudo npm -v

Unten siehst du, dass Node.js 18 und NPM 9 installiert sind.

node.js und npm überprüfen

Einrichten des MongoDB-Servers

In diesem Abschnitt aktivierst du die MongoDB-Authentifizierung, legst einen neuen Administrator-Benutzer für MongoDB an und erstellst dann eine neue Datenbank und einen neuen Benutzer für die NodeBB-Installation.

Melde dich mit dem unten stehenden Befehl am MongoDB-Server an.

mongosh

Führe die folgende Abfrage aus, um zur Datenbank „admin“ zu wechseln und einen neuen Administratorbenutzer„admin“ für MongoDB anzulegen. Achte darauf, dass du das Passwort„MongoDBAdminPass“ durch das neue Passwort änderst.

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

Als Nächstes erstellst du eine neue Datenbank und den Benutzer„nodebb“ mit dem Passwort„NodeBBPassword„. Diese Datenbank und dieser Benutzer werden für die NodeBB-Installation verwendet.

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

Tippe nun ‚quit()ein, um die MongoDB zu verlassen.

mgonodb admin einrichten und neue Datenbank und Benutzer erstellen

Als nächstes öffnest du die MongoDB-Konfiguration„/etc/mongod.conf“ mit dem nano-Editor.

sudo nano /etc/mongod.conf

Aktiviere die MongoDB-Authentifizierung, indem du die folgende Konfiguration hinzufügst.

security:
 authorization: enabled

Speichere und schließe die Datei, wenn du fertig bist.

Führe nun den folgenden Befehl aus, um den MongoDB-Dienst neu zu starten und deine neuen Änderungen zu übernehmen. Nachdem der Befehl ausgeführt wurde, ist die MongoDB-Authentifizierung aktiviert.

sudo systemctl restart mongod

Um sicherzustellen, dass deine MongoDB-Konfiguration erfolgreich ist, melde dich bei der MongoDB mit dem Benutzer„nodebb“ an der Datenbank„nodebb“ an. Gib dein Passwort ein, wenn du dazu aufgefordert wirst.

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

Nachdem du dich eingeloggt hast, führe die folgende Abfrage aus, um deine Verbindung zu überprüfen und die MongoDB zu verlassen.

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

In der folgenden Ausgabe siehst du, dass du dich als„nodebb“ bei der Datenbank„nodebb“ authentifiziert hast.

Mongodb-Benutzerverbindung prüfen

NodeBB installieren

Nachdem du die MongoDB-Konfiguration abgeschlossen hast, lädst du NodeBB herunter und installierst es. Du legst einen eigenen Benutzer für NodeBB an, lädst die NodeBB-Abhängigkeiten herunter und installierst sie und richtest dann eine Servicedatei für deine NodeBB-Installation ein.

Füge mit dem folgenden Befehl einen neuen Systembenutzer„nodebb“ mit dem Standard-Home-Verzeichnis„/opt/nodebb“ hinzu.

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

Neuen Benutzer hinzufügen

Lade nun den NodeBB-Quellcode v3 mit git in das Verzeichnis„/opt/nodebb“ herunter und ändere die Eigentumsrechte am Verzeichnis„/opt/nodebb“ auf den Benutzer„nodebb„.

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

Gehe in das Verzeichnis „/opt/nodebb“ und konfiguriere deine NodeBB-Installation mit dem unten stehenden Befehl.

cd /opt/nodebb
sudo su -s /bin/bash -c "./nodebb setup" nodebb
  • Gib deinen Domainnamen für NodeBB ein.
  • Belasse das NodeBB-Geheimnis als Standard und drücke ENTER.
  • Gib no ein, um die anonyme Nutzung des Plugins zu deaktivieren.
  • Wähle als Datenbank MongoDB aus.
  • Gib die MongoDB-Datenbank mit dem URL-String ein: mongodb://nodebb:NodeBBPassword@127.0.0.1:27017/nodebb.
  • Gib deinen Administrator-Benutzer und deine E-Mail-Adresse für NodeBB ein.
  • Gib dein Passwort ein und wiederhole den Vorgang.

Wenn der Vorgang abgeschlossen ist, siehst du die Meldung„NodeBB Setup Completed„. Du kannst auch den Befehl zum Starten von NodeBB sehen.

Einrichtung abgeschlossen

Als Nächstes führst du den unten stehenden Befehl aus, um NodeBB zu starten oder zu stoppen. Du kannst diesen Befehl verwenden, wenn du NodeBB manuell starten oder stoppen möchtest.

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

Nodebb starten und stoppen

Um die Verwaltung von NodeBB zu erleichtern, erstellst du eine neue systemd-Dienstdatei für NodeBB. Damit wird deine NodeBB-Installation im Hintergrund laufen und du kannst sie mit dem Befehl systemctl verwalten.

Erstelle eine neue systemd-Dienstdatei„/etc/systemd/system/nodebb.service“ mit dem Editor-Befehl nano.

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

Füge die folgende Konfiguration in die Datei ein:

[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

Speichere und schließe die Datei.

Führe nun den folgenden Befehl aus, um den systemd manager neu zu laden und die neue NodeBB-Dienstdatei anzuwenden.

sudo systemctl daemon-reload

Starte und aktiviere anschließend den Dienst„nodebb“ mit dem folgenden systemctl-Befehl.

sudo systemctl start nodebb
sudo systemctl enable nodebb

Überprüfe den„nodebb„-Dienst mit folgendem Befehl, um sicherzustellen, dass der Dienst läuft.

sudo systemctl status nodebb

Du kannst unten sehen, dass NodeBB im Hintergrund als systemd-Dienst läuft.

nodebb systemd einrichten

Nginx als Reverse Proxy einrichten

Zu diesem Zeitpunkt läuft NodeBB im Hintergrund auf Port 4567. Jetzt erstellst du einen neuen Nginx-Serverblock, der als Reverse-Proxy für dein NodeBB-Forum verwendet wird. Stelle sicher, dass dein Domainname auf deine Server-IP-Adresse zeigt.

Erstelle eine neue Nginx-Serverblock-Konfiguration„/etc/nginx/sites-available/nodebb“ mit dem nano-Editor.

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

Füge die folgende Konfiguration hinzu, um Nginx als Reverse Proxy für NodeBB einzurichten. Achte darauf, dass du den Parameter server_name durch deinen Domainnamen ersetzt.

server {
 listen 80;
server_name forum.hwdomain.io;

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

Wenn du fertig bist, speichere die Datei und beende sie.

Aktiviere nun die Server-Block-Datei „nodebb“ und teste deine Nginx-Syntax mit dem folgenden Beispiel:

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

Wenn du eine korrekte Nginx-Syntax hast, siehst du die Ausgabe „syntax is ok – test is successful“.

nginx-Einrichtung

Zum Schluss führst du den folgenden Befehl aus, um den Nginx-Dienst neu zu starten und deine Änderungen zu übernehmen.

sudo systemctl restart nginx

NodeBB mit HTTPS absichern

In dieser Anleitung wirst du NodeBB mit HTTPS über Certbot und Letsencrypt absichern. Wenn du eine lokale Domain verwendest, kannst du diesen Schritt überspringen oder du kannst auch selbst signierte Zertifikate erstellen.

Installiere Certbot und das Certbot Nginx Plugin mit dem folgenden apt Befehl. Gib Y ein, um mit der Installation fortzufahren.

sudo apt install certbot python3-certbot-nginx

Führe nun den folgenden Certbot-Befehl aus, um die SSL-Zertifikate für deine NodeBB-Domain zu erstellen. Achte darauf, dass du sowohl die E-Mail-Adresse als auch den Domainnamen mit deinen Daten änderst.

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

Nachdem du den Vorgang abgeschlossen hast, sollte deine NodeBB-Installation automatisch mit HTTPS gesichert sein. Deine SSL/TLS-Zertifikate sind im Verzeichnis„/etc/letsencrypt/live/domain.com“ verfügbar.

Zugriff auf NodeBB

Besuche https://forum.hwdomain.io/ mit deinem Webbrowser und du wirst die Standard-Indexseite von NodeBB wie folgt sehen:

Homepage

Von der Startseite aus klickst du auf das Menü „Login“ und die NodeBB-Login-Seite wird angezeigt. Gib deinen Admin-Benutzer und dein Passwort ein und klicke dann auf Login.

Login-Seite

Wenn du dich erfolgreich angemeldet hast, siehst du das folgende Benutzer-Dashboard.

user dashboard

Klicke auf das Menü Admin, um das NodeBB-Administrations-Dashboard aufzurufen, wie im Folgenden dargestellt:

Admin-Dashboard

Fazit

Herzlichen Glückwunsch! Du hast jetzt NodeBB auf dem Debian 12 Server installiert. Du hast NodeBB mit der MongoDB-Datenbank und dem Nginx-Reverse-Proxy zum Laufen gebracht. Außerdem hast du NodeBB mit HTTPS über Certbot und Letsencrypt gesichert.

Das könnte dich auch interessieren …