NodeBB - Node.js Forensoftware
28.01.2020Kleine Eigenwerbung: Wenn ihr ein NodeBB Forum betreiben möchtet, aber euch das Administrieren eines Servers nicht zutraut, könnt ihr euch gerne mein Webspace Angebot anschauen. Ihr erhaltet dort eine Webspace auf einem eigenem vServer, daher können problemlos zusätzliche Dienste wie Node.js installiert werden. Natürlich kann ich gerne auch direkt beim Aufsetzen NodeBB für euch einrichten, dann könnt ihr sofort loslegen.
Hinweis: Ihr benötigt für viele oder alle Schritte dieser Anleitung einen User mit sudo Rechten oder den root User. Ich nutze den root User, tut ihr dies nicht, müsst ihr bei den angegebenen Befehlen "sudo" voranstellen, z.B. "sudo apt update".
Sprungmarken: Node.js MongoDB NodeBB Nginx & TLS Zertifikat
Server Update
Bevor ihr mit der eigentlichen Anleitung beginnt, solltet ihr vorab den Server updaten!
apt update && apt dist-upgrade && apt autoremove && apt clean
Mit dieser Befehls-Kombination aktualisiert ihr die Paketquellen, sucht nach Upgrades für installierte Pakete, entfernt überflüssige Abhängigkeiten und leert den Paket-Cache. "dist-upgrade" hat gegenüber "upgrade" den Vorteil, dass zusätzlich geprüft wird, ob durch geänderte Abhängigkeiten bestimmte Pakete deinstalliert bzw. neu installiert werden sollten.
Node.js
Bevor ihr NodeBB installieren könnt, benötigt ihr natürlich zuerst Node.js. Dafür solltet ihr zuerst das NodeSource Repository hinterlegen, um eine aktuelle Version zu erhalten. Ihr benötigt einen root User oder einen User mit sudo Rechten.
curl -sL https://deb.nodesource.com/setup_10.x | bash -
Anschließend aktualisiert ihr die Paketquellen und installiert Node.js.
apt -y install nodejs
Kontrolliert anschließend noch die installierten Versionen von Node.js und npm, es sollte Version 10.x und 6.x installiert sein.
node -v ; npm -v
Das war auch schon Alles für Node.js.
MongoDB
Als nächstes müsst ihr noch MongoDB als Datenbank für NoteBB installieren. Alternativ kann auch Redis verwendet werden, ich empfehle aber MongoDB zu nutzen. Der Geschwindigkeitsunterschied ist eher gering, dafür benötigt Redis aber mehr RAM. Für sehr große Foren kann es interessant sein, beides zu verwenden (Clustering), das ist aber ein eher fortgeschrittenes Thema. Ihr solltet nun also MongoDB installieren. Dafür installiert ihr GnuPG (für den GPG Schlüssel benötigt), hinterlegt einen apt-key und die offizielle MongoDB Repository, aktualisiert anschließend die Paketquellen, installiert schlussendlich MongoDB und kontrolliert die installiere Version.
apt -y install gnupg2
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | tee /etc/apt/sources.list.d/mongodb-org-4.2.list
apt update
apt -y install mongodb-org
mongod --version
Die angezeigte "db version" sollte v4.x sein. Hat alles geklappt, könnt ihr MongoDB starten.
systemctl start mongod
Nun geht es an die Konfiguration und Vorbereitung der Datenbank. Greift dafür auf MongoDB zu und wechselt zur admin Datenbank.
mongo
use admin
Nun erstellen wir einen Admin User (der ist noch nicht für NodeBB!).
db.createUser( { user: "admin", pwd: "PASSWORD", roles: [ { role: "root", db: "admin" } ] } )
Ihr solltet PASSWORD natürlich durch ein sicheres Passwort eurer Wahl ersetzen!
Anschließend erstellt ihr die Datenbank und einen User für NodeBB und schließt dann die Verbindung zu MongoDB.
use nodebb
db.createUser( { user: "nodebb", pwd: "PASSWORD", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
quit()
Auch hier bitte PASSWORD durch ein sicheres Passwort eurer Wahl ersetzen!
Nun solltet ihr noch die Datenbank Autorisierung in der MongoDB Konfiguration unter /etc/mongod.conf aktivieren.
nano /etc/mongod.conf
Ergänzt in dieser Datei folgende Zeilen:
security:
authorization: enabled
Startet nun MongoDB neu und fügt es dem Autostart hinzu. Testet anschließend die Verbindung mit dem Admin User und eurem vergebenen Passwort.
systemctl restart mongod && systemctl enable mongod
mongo -u admin -p 'PASSWORD' --authenticationDatabase=admin
Ihr solltet nun eine Verbindung zu MongoDB haben. Ihr könnt die Verbindung dann wieder schließen und seid auch mit diesem Teil fertig.
quit()
NodeBB
Nachdem ihr euren Server vorbereitet habt, könnt ihr nun NodeBB installieren. Falls noch nicht auf dem Server vorhanden, solltet ihr zuerst git installieren, um NodeBB von Github zu klonen.
apt -y install git
Wechselt nun in das Verzeichnis, in dem ihr NodeBB installieren wollt und klont die Software von Github.
cd /var/www/
git clone -b v1.13.x https://github.com/NodeBB/NodeBB.git nodebb
Nun wechselt in das neue nodebb Verzeichnis und startet das Setup.
cd /var/www/nodebb
./nodebb setup
Ihr müsst im Laufe des Setup einige Fragen beantworten, diese habe ich nachfolgend für euch aufgeführt.
- URL; gebt hier unbedingt die vollständige URL an, unter der euer Forum erreichbar sein soll, z.B. https://domain.tld oder https://forum.domain.tld.
- Secret; ihr könnt ein eigenes Secret eingeben oder einfach Enter drücken, um das in Klammern angezeigte zu nutzen.
- Anonymius Plugin Usage; "no" eingeben, wenn ihr keine anonymisierten Daten über die Verwendung von Plugins senden wollt. Ansonsten drückt Enter.
- Database; drückt einfach Enter, um MongoDB als Datenbank einzustellen.
- MongoDB connection URI; Hier ebenfalls einfach Enter drücken, um anschließend einzeln die Daten eurer Datenbank anzugeben.
- IP; Enter drücken (localhost)
- Port; Enter drücken (Standardport)
- Username; "nodebb" angeben (sofern ihr den im MongoDB Abschnitt nicht geändert hattet)
- Password; euer oben vergebenes Passwort eintragen
- Database; Enter drücken (nodebb)
- Administrator; hier erstellt ihr euren Admin Account für das Forum. Gebt einen Usernamen, eine Mailadresse und ein Passwort für den Account ein.
Damit habt ihr NodeBB erfolgreich konfiguriert. Wollt ihr später etwas anpassen, könnt ihr das in der Datei config.json im nodebb Ordner.
Ihr könnt NodeBB nun erstmals starten!
./nodebb start
Im Browser könnt ihr nun die im Setup angegebene URL mit dem Port aufrufen, um an euer Forum zu kommen: http://domain.tld:4567
Hinweis: Auch wenn ihr oben eine https URL angegeben habt, könnt ihr es zum testen erstmal mit http aufrufen, da ihr noch kein Zertifikat habt. Einloggen könnt ihr euch aber noch nicht!
Nginx & TLS Zertifikat
Eigentlich seid ihr bereits fertig mit der Einrichtung von NodeBB. Allerdings möchtet ihr das Forum für den produktiven Einsatz vermutlich ohne Angabe des Ports und mit https aufrufen können. Daher zeige ich euch noch, wie ihr Nginx als Proxy einrichtet und ein TLS Zertifikat mit Certbot (Lets Encrypt) erstellt. Ihr müsst nun erstmal Nginx und Certbot installieren.
apt -y install nginx certbot python-certbot-nginx
Nun könnt ihr ein TLS Zertifikat für eure Domain/Subdomain beantragen.
certbot certonly --rsa-key-size 4096 -d domain.tld -d www.domain.tld --nginx
Wenn ihr das erste Mal ein Zertifikat beantragt, müsst ihr eine E-Mail Adresse angeben, den ToS zustimmen und Entscheiden ob ihr die E-Mail Adresse mit Partnern von Lets Encrypt teilen wollt (N für ablehnen).
Anschließend erstellt ihr eine Seiten-Konfiguration für euer NodeBB Forum unter /etc/nginx/sites-available/.
nano /etc/nginx/sites-available/nodebb
Dort tragt ihr die folgenden Angaben ein (domain.tld zu eurer Domain ändern!):
server {
listen 80;
server_name www.domain.tld domain.tld;
return 301 https://domain.tld$request_uri;
}
server {
listen 443 ssl;
server_name www.domain.tld;
ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem;
return 301 https://domain.tld$request_uri;
}
server {
listen 443 ssl http2;
server_name domain.tld;
ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_session_cache shared:SSL:5m;
ssl_session_timeout 30m;
access_log /var/log/nginx/domain.tld_access.log;
error_log /var/log/nginx/domain.tld_error.log error;
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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Wenn ihr nur eine Subdomain (forum.domain.tld) konfigurieren wollt, müsst ihr den 2. server {} Block entfernen, um eine Endlos-Schleife zu vermeiden.
Nun müsst ihr die Konfiguration unter /etc/nginx/sites-available/ verknüpfen und nginx neustarten.
ln -s /etc/nginx/sites-available/nodebb /etc/nginx/sites-enabled/nodebb
service nginx restart
Das wars! Ihr solltet nun euer NodeBB unter https://domain.tld aufrufen können
Ihr könnt euch nun auch mit dem im Setup erstellten Admin Account im Forum einloggen. Die Sprache sollte automatisch erkannt werden. Wenn ihr die Standardsprache auf Deutsch stellen wollt, navigiert zu Admin > General > Languages und wählt als Default Language "Deutsch (de)" aus und speichert die Einstellung ab. Auch die automatische Erkennung der Sprache kann dort deaktiviert werden. Wenn ihr ein rein deutschsprachiges Forum betreiben wollt, ist das auch durchaus zu empfehlen.
Hinweis: Ich zeige hier bewusst nur das Minimum an nötiger Konfiguration für die Nutzung von Nginx. Wenn euch dahingehend weitere Informationen zur Konfiguration interessieren, könnt ihr euch gerne meinen Beitrag Webserver mit Nginx, PHP7 & MariaDB anschauen.
Zuletzt bearbeitet: 01.02.2020