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
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
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.
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
Ü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.
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.
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.
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
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.
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
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.
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“.
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:
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.
Wenn du dich erfolgreich angemeldet hast, siehst du das folgende Benutzer-Dashboard.
Klicke auf das Menü Admin, um das NodeBB-Administrations-Dashboard aufzurufen, wie im Folgenden dargestellt:
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.