Installazione Forum · 12 min read · Oct 14, 2025

Come installare il forum NodeBB su Ubuntu 22.04

NodeBB è un software per forum moderno alimentato dal framework Node.js. Utilizza MongoDB, PostgreSQL o Redis per memorizzare i dati. Sfrutta i web socket per notifiche in tempo reale e interazioni istantanee. Ha funzionalità moderne come integrazione con i social network, supporto per plugin, reattività mobile e API REST complete per lettura/scrittura.

NodeBB è disponibile sia come progetto open-source auto-ospitato che come servizio cloud. In questo tutorial, imparerai come installare il forum NodeBB utilizzando Nginx su un server Ubuntu 22.04. Ubuntu 22.04 non supporta ufficialmente MongoDB; pertanto, utilizzeremo PostgreSQL per memorizzare i dati.

Prerequisiti

  • Un server che esegue Ubuntu 22.04 con un minimo di 1 GB di RAM.
  • Un utente non root con privilegi sudo.
  • Il firewall Uncomplicated Firewall (UFW) è abilitato e in esecuzione.
  • Un nome di dominio completamente qualificato (FQDN) che punta al server come forum.example.com.
  • Tutto è aggiornato. $ sudo apt update && sudo apt upgrade

Passo 1 - Configurare il Firewall

Prima di installare qualsiasi pacchetto, il primo passo è configurare il firewall per consentire connessioni HTTP e HTTPS.

Controlla lo stato del firewall.

$ sudo ufw status

Dovresti vedere qualcosa di simile al seguente.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Consenti le porte HTTP e HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Controlla di nuovo lo stato per confermare.

$ 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)

Passo 2 - Installare PostgreSQL

Il primo passo per installare PostgreSQL è aggiungere la sua chiave GPG.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Aggiungi il repository APT alla tua lista di sorgenti.

$ 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'

Aggiorna il repository di sistema.

$ sudo apt update

Ora puoi installare PostgreSQL.

$ sudo apt install postgresql postgresql-contrib

Controlla lo stato del servizio PostgreSQL.

$ 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.

Passo 3 - Configurare PostgreSQL

Dobbiamo impostare una password per l’utente amministrativo predefinito di Postgres postgres. Prima, accedi alla shell di Postgres.

$ sudo -u postgres psql

Inserisci il seguente comando per cambiare la password.

postgres=# \password postgres

Ti verrà chiesto di inserire una nuova password.

Enter new password for user "postgres":
Enter it again:

Crea un nuovo utente per NodeBB.

postgres=# CREATE ROLE nbbuser WITH LOGIN ENCRYPTED PASSWORD 'YourNodeBBPassword';

Crea un nuovo database per NodeBB.

postgres=# CREATE DATABASE nodebbdb OWNER nbbuser;

Digita \q per uscire dalla shell.

postgres=# \q

Passo 4 - Installare Node.js

Poiché il forum NodeBB è scritto utilizzando il framework Node.js, dobbiamo installarlo per farlo funzionare.

Esegui i seguenti comandi per installare la versione LTS (v16.x) di Node.js.

$ curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
$ sudo apt install nodejs

Verifica l’installazione di Node.js e NPM.

$ node -v
v16.17.0
$ npm -v
8.15.0

Passo 5 - Installare Git

Prima di procedere all’installazione di NodeBB, dobbiamo installare Git. Esegui il seguente comando per installare Git.

$ sudo apt install git

Esegui i seguenti comandi per eseguire la configurazione iniziale di Git.

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

Passo 6 - Installare NodeBB

Non è consigliabile eseguire NodeBB come utente root. Crea un utente di sistema non privilegiato senza password.

$ sudo adduser nodebb --disabled-password

Salta tutte le altre opzioni.

Crea la directory in cui vivrà il tuo forum NodeBB.

$ sudo mkdir /var/www/html/nodebb -p

Cambia la proprietà della cartella all’utente appena creato.

$ sudo chown -R nodebb:nodebb /var/www/html/nodebb

Accedi all’utente appena creato.

$ sudo su - nodebb

Passa alla directory di installazione di NodeBB.

$ cd /var/www/html/nodebb

Per installare NodeBB, prima dobbiamo clonare il suo repository GitHub.

Clona NodeBB nella directory /var/www/nodebb. Il punto alla fine del comando si riferisce alla directory corrente.

$ git clone -b v2.x https://github.com/NodeBB/NodeBB.git .

Qui abbiamo clonato il ramo v2.x di NodeBB che contiene l’ultima versione stabile di NodeBB. Puoi trovare l’ultima branch stabile dalla pagina delle Ultime Branches di NodeBB.

NodeBB viene fornito con un’utilità da riga di comando. Usa il seguente comando per installare NodeBB.

$ ./nodebb setup

Puoi premere invio per scegliere il valore predefinito.

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)
........

Per il valore dell’URL utilizzato per accedere a questo NodeBB, scegli l’URL finale con cui desideri accedere al forum. Se accederai al forum tramite l’IP del tuo server, inserisci quello o inserisci il dominio completo del forum. Qui inseriremo https://forum.example.com. Scegli no come risposta alla domanda riguardante l’invio anonimo dell’uso dei plugin. Digita postgres come tipo di database.

Poi scegli l’IP e la porta predefiniti premendo invio e inserisci il tuo nome utente PostgreSQL che è quando inserisci nbbuser e la password che hai scelto in precedenza per quel nome utente durante la configurazione di MongoDB. Il tuo database nodebbdb dovrebbe essere scelto.

Ti verrà anche chiesto di creare un utente amministratore e i suoi dettagli.

.....
2022-09-10T10:11:14.121Z [2633] - warn: No administrators have been detected, running initial user setup

Administrator username navjot
Administrator email address [email protected]
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.

Una volta completata la configurazione, esegui il seguente comando per avviare NodeBB.

$ ./nodebb start
Starting NodeBB
  "./nodebb stop" to stop the NodeBB server
  "./nodebb log" to view server output
  "./nodebb help" for more commands

Esci dall’utente NodeBB.

$ exit

Passo 7 - Eseguire NodeBB come Servizio di Sistema

Il servizio NodeBB non verrà eseguito dopo un riavvio del sistema. Per evitare di avviare NodeBB ogni volta, dobbiamo installarlo come Servizio di Sistema.

Ferma prima il servizio NodeBB. Passa alla directory di NodeBB e poi esegui il comando direttamente utilizzando il comando sudo -u.

$ cd /var/www/html/nodebb  
$ sudo -u nodebb ./nodebb stop

Esegui il seguente comando per creare e modificare il file di configurazione dell’unità nodebb.service di systemd.

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

Incolla il seguente codice nell’editor.

[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

Qui abbiamo scelto il nome utente come nodebb che abbiamo creato nel Passo 6 e il percorso che abbiamo scelto per installare NodeBB.

Abilita il servizio NodeBB.

$ sudo systemctl enable nodebb

Avvia il servizio NodeBB.

$ sudo systemctl start nodebb

Controlla lo stato del servizio.

$ 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

Passo 8 - Installare Nginx

Ubuntu 22.04 viene fornito con una versione più vecchia di Nginx. Per installare l’ultima versione, devi scaricare il repository ufficiale di Nginx.

Importa la chiave di firma di Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Aggiungi il repository per la versione stabile di Nginx.

$ 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

Aggiorna i repository di sistema.

$ sudo apt update

Installa Nginx.

$ sudo apt install nginx

Verifica l’installazione.

$ nginx -v
nginx version: nginx/1.22.0

Avvia il server Nginx.

$ sudo systemctl start nginx

Passo 9 - Installare SSL

Dobbiamo installare Certbot per generare il certificato SSL. Puoi installare Certbot utilizzando il repository di Ubuntu o scaricare l’ultima versione utilizzando lo strumento Snapd. Useremo la versione Snapd.

Ubuntu 22.04 viene fornito con Snapd installato per impostazione predefinita. Esegui i seguenti comandi per assicurarti che la tua versione di Snapd sia aggiornata.

$ sudo snap install core
$ sudo snap refresh core

Installa Certbot.

$ sudo snap install --classic certbot

Usa il seguente comando per assicurarti che il comando Certbot possa essere eseguito creando un collegamento simbolico alla directory /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Esegui il seguente comando per generare un certificato SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d forum.example.com

Il comando sopra scaricherà un certificato nella directory /etc/letsencrypt/live/forum.example.com sul tuo server.

Genera un certificato per il gruppo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Per controllare se il rinnovo SSL funziona correttamente, esegui un test del processo.

$ sudo certbot renew --dry-run

Se non vedi errori, sei a posto. Il tuo certificato si rinnoverà automaticamente.

Passo 10 - Configurare Nginx

Apri il file /etc/nginx/nginx.conf per la modifica.

$ sudo nano /etc/nginx/nginx.conf

Aggiungi la seguente riga prima della riga include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Crea e apri il file /etc/nginx/conf.d/nodebb.conf per la modifica.

$ sudo nano /etc/nginx/conf.d/nodebb.conf

Incolla il seguente codice. Sostituisci forum.example.com con il tuo nome di dominio. Assicurati che il valore di client_max_body_size sia impostato su 25 MB per impostare la dimensione di caricamento per il forum.

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; # Abilita 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;

   # Abilita le versioni TLS (TLSv1.3 è richiesto per il prossimo HTTP/3 QUIC).
   ssl_protocols TLSv1.2 TLSv1.3;

   # Abilita 0-RTT di TLSv1.3. Usa $ssl_early_data quando si fa reverse proxy per
   # prevenire attacchi di replay.
   #
   # @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 ---
   # recupera i record OCSP dall'URL nel ssl_certificate e memorizzali nella cache
   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 / {       
       # Supporto Socket.IO
       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;  # nessuna barra finale
       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;
   }
}

# Questo blocco è utile per il debug di TLS v1.3. Sentiti libero di rimuoverlo
# e utilizzare la variabile `$ssl_early_data` esposta da NGINX direttamente se lo desideri.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Verifica la tua configurazione Nginx.

$ sudo nginx -t

Riavvia il server Nginx.

$ sudo systemctl restart nginx

Passo 11 - Accedere e Configurare il Forum

Puoi accedere al forum visitando l’URL https://forum.example.com nel tuo browser. Otterrai la seguente pagina.

Homepage del Forum NodeBB

Clicca sulla pagina di accesso e inserisci le credenziali dell’amministratore che hai creato nel passo 6.

Pagina di Accesso NodeBB

Sarai connesso. Successivamente, fai clic sull’icona più a destra nella parte superiore della barra dei menu per accedere al pannello di amministrazione.

Da qui in poi, puoi gestire il forum. Estendilo installando temi e plugin.

Dashboard di Amministrazione del Forum NodeBB

Dopo aver installato qualsiasi tema e plugin, devi ricostruire e riavviare il forum utilizzando il pulsante nell’angolo in alto a destra della dashboard di amministrazione come mostrato qui.

Assicurati di configurare il tuo servizio email andando su Dashboard >> Impostazioni >> Email affinché gli utenti del tuo forum possano ricevere email. Seleziona le seguenti impostazioni per garantire impostazioni ottimali per la consegna delle email.

Impostazioni Email del Forum NodeBB

Scorri verso il basso nella pagina e seleziona un mittente personalizzato dal menu a discesa o utilizza il mittente personalizzato se il tuo servizio SMTP non è nell’elenco. Per il nostro tutorial, stiamo utilizzando il servizio SES.

Impostazioni SMTP del Forum NodeBB

Clicca sull’icona del floppy disk in basso a destra per salvare le impostazioni.

Scorri verso il basso fino alla fine della pagina per inviare un’email di prova. Per impostazione predefinita, verrà inviata un’email di modello bannato. Puoi selezionare qualsiasi altro modello di email per testare. Invieremo l’email di benvenuto.

Test Email del Forum NodeBB

Riceverai un’email di prova come mostrato di seguito che conferma le impostazioni.

Email di Prova del Forum NodeBB

Conclusione

Questo conclude il nostro tutorial su come installare il forum NodeBB utilizzando il database PostgreSQL e Nginx su un server Ubuntu 22.04. Se hai domande, pubblicale nei commenti qui sotto.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.