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.

NodeBB Forum Homepage

Klicke auf die Anmeldeseite und gib die in Schritt 6 erstellten Administrator-Anmeldedaten ein.

NodeBB Login Seite

Du wirst eingeloggt sein. Als nächstes klickst du auf das Symbol ganz rechts oben in der Menüleiste, um das Administrationspanel aufzurufen.

NodeBB Forum Admin Panel Link

Von hier aus kannst du das Forum verwalten. Erweitere es, indem du Themen und Plugins installierst.

NodeBB Forum Admin Dashboard

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.

NodeBB Forum Wiederherstellen und Neustart Schaltfläche

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.

NodeBB Forum E-Mail Einstellungen

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.

NodeBB Forum SMTP Einstellungen

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.

NodeBB Forum E-Mail-Tests

Du erhältst eine Test-E-Mail (siehe unten), die die Einstellungen bestätigt.

NodeBB Forum Test E-Mail

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.

Das könnte dich auch interessieren …