Wie installiere ich NodeBB Forum auf Ubuntu 22.04
NodeBB ist eine moderne Forensoftware, die auf dem Node.js-Framework basiert. Sie nutzt MongoDB, PostgreSQL oder Redis als Datenbank. Es nutzt Web Sockets für Echtzeit-Benachrichtigungen und sofortige Interaktionen. Es verfügt über moderne Funktionen wie die Integration sozialer Netzwerke, Plugin-Unterstützung, mobile Reaktionsfähigkeit und vollständige REST-APIs zum Lesen und Schreiben.
NodeBB ist sowohl als Open-Source-Projekt zum Selbsthosten als auch als Cloud-Service verfügbar. In diesem Tutorial lernst du, wie du das NodeBB-Forum mit Nginx auf einem Ubuntu 22.04 Server installierst. Ubuntu 22.04 unterstützt offiziell keine MongoDB; daher werden wir PostgreSQL zum Speichern von Daten verwenden.
Voraussetzungen
- Ein Server mit Ubuntu 22.04 und mindestens 1 GB RAM.
- Ein Nicht-Root-Benutzer mit sudo-Rechten.
- Die Unkomplizierte Firewall (UFW) ist aktiviert und läuft.
- Ein Fully Qualified Domain Name (FQDN), der auf den Server zeigt, z.B.
forum.example.com
. - Alles ist auf dem neuesten Stand.
$ sudo apt update && sudo apt upgrade
Schritt 1 – Firewall konfigurieren
Bevor du die Pakete installierst, musst du zunächst die Firewall so konfigurieren, dass HTTP- und HTTPS-Verbindungen zugelassen werden.
Überprüfe den Status der Firewall.
$ sudo ufw status
Du solltest etwas wie das Folgende sehen.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Erlaube HTTP- und HTTPs-Ports.
$ sudo ufw allow http $ sudo ufw allow https
Überprüfe den Status zur Bestätigung noch einmal.
$ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
Schritt 2 – PostgreSQL installieren
Der erste Schritt bei der Installation von PostgreSQL ist das Hinzufügen des GPG-Schlüssels.
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Füge das APT-Repository zu deiner Quellenliste hinzu.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Aktualisiere das System-Repository.
$ sudo apt update
Jetzt kannst du PostgreSQL installieren.
$ sudo apt install postgresql postgresql-contrib
Überprüfe den Status des PostgreSQL-Dienstes.
$ sudo systemctl status postgresql ? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Sat 2022-09-10 06:25:11 UTC; 13s ago Process: 12083 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 12083 (code=exited, status=0/SUCCESS) CPU: 1ms Sep 10 06:25:11 nodebb systemd[1]: Starting PostgreSQL RDBMS... Sep 10 06:25:11 nodebb systemd[1]: Finished PostgreSQL RDBMS.
Schritt 3 – PostgreSQL konfigurieren
Wir müssen ein Passwort für den administrativen Standardbenutzer von Postgres postgres
festlegen. Melde dich zunächst in der Postgres Shell an.
$ sudo -u postgres psql
Gib den folgenden Befehl ein, um das Passwort zu ändern.
postgres=# \password postgres
Du wirst zur Eingabe eines neuen Passworts aufgefordert.
Enter new password for user "postgres": Enter it again:
Erstelle einen neuen Benutzer für NodeBB.
postgres=# CREATE ROLE nbbuser WITH LOGIN ENCRYPTED PASSWORD 'YourNodeBBPassword';
Erstelle eine neue Datenbank für NodeBB.
postgres=# CREATE DATABASE nodebbdb OWNER nbbuser;
Gib \q
ein, um die Shell zu beenden.
postgres=# \q
Schritt 4 – Node.js installieren
Da das Nodebb-Forum mit dem Node.js-Framework geschrieben wurde, müssen wir es installieren, damit es funktioniert.
Gib die folgenden Befehle ein, um die LTS(v16.x) Version von Nodejs zu installieren.
$ curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash - $ sudo apt install nodejs
Überprüfe die Installation von Node.js und NPM.
$ node -v v16.17.0 $ npm -v 8.15.0
Schritt 5 – Git installieren
Bevor wir mit der Installation von NodeBB fortfahren, müssen wir Git installieren. Führe den folgenden Befehl aus, um Git zu installieren.
$ sudo apt install git
Führe die folgenden Befehle aus, um die erste Konfiguration von Git vorzunehmen.
$ git config --global user.name "Your Name" $ git config --global user.email "youremail@domain.com"
Schritt 6 – NodeBB installieren
Es ist nicht ratsam, NodeBB als Root-Benutzer auszuführen. Erstelle einen unprivilegierten Systembenutzer ohne Passwort.
$ sudo adduser nodebb --disabled-password
Überspringe alle anderen Optionen.
Erstelle das Verzeichnis, in dem dein NodeBB-Forum liegen wird.
$ sudo mkdir /var/www/html/nodebb -p
Ändere den Besitz des Ordners auf den neu angelegten Benutzer.
$ sudo chown -R nodebb:nodebb /var/www/html/nodebb
Melde dich mit dem neu angelegten Benutzer an.
$ sudo su - nodebb
Wechsle in das NodeBB-Installationsverzeichnis.
$ cd /var/www/html/nodebb
Um NodeBB zu installieren, müssen wir zunächst das GitHub-Repository klonen.
Klone NodeBB in das Verzeichnis /var/www/nodebb
. Der Punkt am Ende des Befehls bezieht sich auf das aktuelle Verzeichnis.
$ git clone -b v2.x https://github.com/NodeBB/NodeBB.git .
Hier haben wir den v2.x-Zweig von NodeBB geklont, der die letzte stabile Version von NodeBB enthält. Den neuesten stabilen Zweig findest du auf der Seite Latest Branches von NodeBB.
NodeBB wird mit einem Kommandozeilenprogramm ausgeliefert. Benutze den folgenden Befehl, um NodeBB zu installieren.
$ ./nodebb setup
Du kannst die Eingabetaste drücken, um den Standardwert zu wählen.
2022-09-10T10:10:27.957Z [2633] - info: NodeBB Setup Triggered via Command Line Welcome to NodeBB v2.5.2! This looks like a new installation, so you'll have to answer a few questions about your environment before we can proceed. Press enter to accept the default setting (shown in brackets). URL used to access this NodeBB (http://localhost:4567) https://forum.example.com Please enter a NodeBB secret (44fd62bc-5047-4414-a4ca-83105740b624) Would you like to submit anonymous plugin usage to nbbpm? (yes) no Which database to use (mongo) postgres 2022-09-10T10:10:43.237Z [2633] - info: Now configuring postgres database: Host IP or address of your PostgreSQL instance (127.0.0.1) Host port of your PostgreSQL instance (5432) PostgreSQL username nbbuser Password of your PostgreSQL database PostgreSQL database name (nodebb) nodebbdb Enable SSL for PostgreSQL database access (false) ........
Als Wert für die URL, mit der du auf dieses NodeBB zugreifst, wählst du die endgültige URL, unter der du das Forum erreichen willst. Wenn du über die IP deines Servers auf das Forum zugreifen willst, gibst du diese ein oder gibst die vollständige Domain des Forums ein. Hier werden wir https://forum.example.com
eingeben. Wähle no
als Antwort auf die Frage nach der anonymen Plugin-Nutzung. Gib postgres
als Datenbanktyp ein.
Wähle dann die Standard-Host-IP und den Standard-Port aus, indem du die Eingabetaste drückst, und gib deinen PostgreSQL-Benutzernamen nbbuser und das Passwort ein, das du zuvor bei der Konfiguration von MongoDB für diesen Benutzernamen gewählt hast. Deine Datenbank nodebbdb sollte ausgewählt werden.
Du wirst außerdem aufgefordert, einen Administrator-Benutzer anzulegen und dessen Daten einzugeben.
..... 2022-09-10T10:11:14.121Z [2633] - warn: No administrators have been detected, running initial user setup Administrator username navjot Administrator email address name@example.com Password Confirm Password ..... .... 2022-09-10T10:14:28.160Z [2633] - info: [build] Asset compilation successful. Completed in 118.777sec. ================================================================================================================================================================= NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.
Sobald die Einrichtung abgeschlossen ist, führe den folgenden Befehl aus, um NodeBB zu starten.
$ ./nodebb start Starting NodeBB "./nodebb stop" to stop the NodeBB server "./nodebb log" to view server output "./nodebb help" for more commands
Beende den NodeBB-Benutzer.
$ exit
Schritt 7 – NodeBB als Systemdienst starten
Der NodeBB-Dienst wird nach einem Neustart des Systems nicht mehr ausgeführt. Um zu vermeiden, dass NodeBB jedes Mal gestartet wird, müssen wir es als Systemdienst installieren.
Beende zunächst den NodeBB-Dienst. Wechsle in das NodeBB-Verzeichnis und führe den Befehl direkt mit dem Befehl sudo -u
aus.
$ cd /var/www/html/nodebb $ sudo -u nodebb ./nodebb stop
Führe den folgenden Befehl aus, um die nodebb.service
systemd unit Konfigurationsdatei zu erstellen und zu bearbeiten.
$ sudo nano /etc/systemd/system/nodebb.service
Füge den folgenden Code in den Editor ein.
[Unit] Description=NodeBB Documentation=https://docs.nodebb.org After=system.slice multi-user.target postgresql.service [Service] Type=simple User=nodebb StandardError=syslog SyslogIdentifier=nodebb Environment=NODE_ENV=production WorkingDirectory=/var/www/html/nodebb ExecStart=/usr/bin/env node loader.js --no-silent --no-daemon Restart=always [Install] WantedBy=multi-user.target
Hier haben wir den Benutzernamen nodebb
gewählt, den wir in Schritt 6 erstellt haben, und den Pfad, in dem wir NodeBB installieren wollen.
Aktiviere den NodeBB-Dienst.
$ sudo systemctl enable nodebb
Starte den NodeBB-Dienst.
$ sudo systemctl start nodebb
Überprüfe den Status des Dienstes.
$ sudo systemctl status nodebb ? nodebb.service - NodeBB Loaded: loaded (/etc/systemd/system/nodebb.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-09-11 21:41:07 UTC; 2s ago Docs: https://docs.nodebb.org Main PID: 26844 (node) Tasks: 18 (limit: 2237) Memory: 94.1M CPU: 2.114s CGroup: /system.slice/nodebb.service ??26844 node loader.js --no-silent --no-daemon ??26855 /usr/bin/node /var/www/html/nodebb/app.js Sep 11 21:41:07 forum systemd[1]: Started NodeBB. Sep 11 21:41:07 forum nodebb[26844]: NodeBB v2.5.2 Copyright (C) 2013-2022 NodeBB Inc. Sep 11 21:41:07 forum nodebb[26844]: This program comes with ABSOLUTELY NO WARRANTY. Sep 11 21:41:07 forum nodebb[26844]: This is free software, and you are welcome to redistribute it under certain conditions. Sep 11 21:41:07 forum nodebb[26844]: For the full license, please visit: http://www.gnu.org/copyleft/gpl.html Sep 11 21:41:07 forum nodebb[26844]: Clustering enabled: Spinning up 1 process(es). Sep 11 21:41:08 forum nodebb[26855]: 2022-09-11T21:41:08.002Z [4567/26855] - info: Initializing NodeBB v2.5.2 https://forum.example.com
Schritt 8 – Nginx installieren
Ubuntu 22.04 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.
Importiere den Signierschlüssel von Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Füge das Repository für die stabile Version von Nginx hinzu.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Aktualisiere die System-Repositories.
$ sudo apt update
Installiere Nginx.
$ sudo apt install nginx
Überprüfe die Installation.
$ nginx -v nginx version: nginx/1.22.0
Starte den Nginx-Server.
$ sudo systemctl start nginx
Schritt 9 – SSL installieren
Wir müssen Certbot installieren, um das SSL-Zertifikat zu erstellen. Du kannst Certbot entweder über das Repository von Ubuntu installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.
Bei Ubuntu 22.04 ist Snapd standardmäßig installiert. Führe die folgenden Befehle aus, um sicherzustellen, dass deine Version von Snapd auf dem neuesten Stand ist.
$ sudo snap install core $ sudo snap refresh core
Installiere Certbot.
$ sudo snap install --classic certbot
Verwende den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link zum Verzeichnis /usr/bin
erstellst.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Führe den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d forum.example.com
Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/forum.example.com
auf deinem Server heruntergeladen.
Erstelle ein Diffie-Hellman-Gruppenzertifikat.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert, führe einen Probelauf des Prozesses durch.
$ sudo certbot renew --dry-run
Wenn du keine Fehler siehst, ist alles in Ordnung. Dein Zertifikat wird automatisch erneuert.
Schritt 10 – Nginx konfigurieren
Öffne die Datei /etc/nginx/nginx.conf
zum Bearbeiten.
$ sudo nano /etc/nginx/nginx.conf
Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf;
ein.
server_names_hash_bucket_size 64;
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Erstelle und öffne die Datei /etc/nginx/conf.d/nodebb.conf
zum Bearbeiten.
$ sudo nano /etc/nginx/conf.d/nodebb.conf
Füge den folgenden Code in die Datei ein. Ersetze forum.example.com
durch deinen Domainnamen. Vergewissere dich, dass der Wert von client_max_body_size
auf 25 MB gesetzt ist, um die Uploadgröße für das Forum festzulegen.
server { listen 80 default_server; server_name forum.example.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name forum.example.com; http2_push_preload on; # Enable HTTP/2 Server Push ssl_certificate /etc/letsencrypt/live/forum.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/forum.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/forum.example.com/chain.pem; ssl_session_timeout 1d; # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC). ssl_protocols TLSv1.2 TLSv1.3; # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; client_max_body_size 25M; gzip on; gzip_min_length 1000; gzip_proxied off; gzip_types text/plain application/xml text/javascript application/javascript application/x-javascript text/css application/json; add_header X-Early-Data $tls1_3_early_data; location / { # Socket.IO Support proxy_set_header Connection "upgrade"; proxy_set_header Upgrade $http_upgrade; proxy_http_version 1.1; proxy_set_header Host $http_host; 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 X-NginX-Proxy true; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_pass http://127.0.0.1:4567; # no trailing slash proxy_redirect off; } location @nodebb { proxy_pass http://127.0.0.1:4567; } location ~ ^/assets/(.*) { root /var/www/html/nodebb/; try_files /build/public/$1 /public/$1 @nodebb; } } # This block is useful for debugging TLS v1.3. Please feel free to remove this # and use the `$ssl_early_data` variable exposed by NGINX directly should you # wish to do so. map $ssl_early_data $tls1_3_early_data { "~." $ssl_early_data; default ""; }
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Überprüfe deine Nginx-Konfiguration.
$ sudo nginx -t
Starte den Nginx-Server neu.
$ sudo systemctl restart nginx
Schritt 11 – Forum aufrufen und konfigurieren
Du kannst auf das Forum zugreifen, indem du die URL https://forum.example.com
in deinem Browser aufrufst. Du wirst die folgende Seite erhalten.
Klicke auf die Anmeldeseite und gib die in Schritt 6 erstellten Administrator-Anmeldedaten ein.
Du wirst eingeloggt sein. Als nächstes klickst du auf das Symbol ganz rechts oben in der Menüleiste, um das Administrationspanel aufzurufen.
Von hier aus kannst du das Forum verwalten. Erweitere es, indem du Themen und Plugins installierst.
Nach der Installation eines Themes oder Plugins musst du das Forum neu erstellen und neu starten, indem du auf die Schaltfläche oben rechts im Administrationsbereich klickst, wie hier gezeigt.
Stelle sicher, dass du deinen E-Mail-Dienst unter Dashboard >> Einstellungen >> E-Mail konfigurierst, damit deine Forumsnutzer E-Mails erhalten können. Wähle die folgenden Einstellungen, um eine optimale E-Mail-Zustellung zu gewährleisten.
Scrolle auf der Seite nach unten und wähle einen benutzerdefinierten Mailer aus dem Dropdown-Menü oder benutze Benutzerdefinierter Mailer, wenn dein SMTP-Dienst nicht in der Liste ist. Für unser Lernprogramm verwenden wir den SES-Dienst.
Klicke auf das Disketten-Symbol unten rechts, um die Einstellungen zu speichern.
Scrolle bis zum Ende der Seite, um eine Test-E-Mail zu versenden. Standardmäßig wird eine verbotene E-Mail-Vorlage versendet. Du kannst jede andere E-Mail-Vorlage zum Testen auswählen. Wir senden die Willkommens-E-Mail.
Du erhältst eine Test-E-Mail (siehe unten), die die Einstellungen bestätigt.
Fazit
Damit ist unser Tutorium zur Installation des NodeBB-Forums mit der PostgreSQL-Datenbank und Nginx auf einem Ubuntu 22.04-Server abgeschlossen. Wenn du noch Fragen hast, schreibe sie in die Kommentare unten.