Come installare NodeBB Forum con Nginx e consente di crittografare SSL su Ubuntu 20.04 LTS
Questo tutorial esiste per queste versioni del sistema operativo
- Ubuntu 20.04 (Focal Fossa)
- Ubuntu 18.04 (Bionic Beaver)
Su questa pagina
- Prerequisiti
- Passaggio 1: configurazione del firewall
- Passaggio 2 - Installa Node.js
- Passaggio 3 - Installa MongoDB
- Passaggio 4 - Configurazione di MongoDB
- Passaggio 5 - Installa Git
- Passaggio 6 - Installa NodeBB
- Passaggio 7 - Installa Nginx
- Passaggio 8 - Configura Nginx
- Passaggio 9 - Esegui NodeBB come servizio di sistema
- Passaggio 10 - Ottieni un certificato SSL Let's Encrypt
- Passaggio 11 - Verificare il rinnovo automatico SSL
- Conclusione
NodeBB è un moderno software per forum alimentato da Node.js che utilizza MongoDB/Redis come piattaforme di database. Utilizza socket Web per interazioni istantanee e notifiche in tempo reale.
In questo tutorial impareremo come installare il forum NodeBB su un server basato su Ubuntu 20.04.
Prerequisiti
-
An Ubuntu 20.04 based server with non-root user having sudo privileges.
-
Minimum 2GB RAM. If your server has only 1GB RAM, its best to enable a swap partition.
-
Make sure everything is updated.
$ sudo apt update && sudo apt upgrade
-
Few essential packages. Some of these will already be on your server.
$ sudo apt install curl wget nano ca-certificates gnupg2 lsb-release
Passaggio 1: configurare il firewall
Il primo passo è configurare il firewall. Ubuntu viene fornito con ufw (Uncomplicated Firewall) per impostazione predefinita.
Controlla se il firewall è in esecuzione.
$ sudo ufw status
Dovresti ottenere il seguente output.
Status: inactive
Consenti porta SSH in modo che il firewall non interrompa la connessione corrente attivandola.
$ sudo ufw allow OpenSSH
Consenti la porta 27017
per il server MongoDB e la porta 4567
per l'esecuzione del forum NodeBB. Consenti anche le porte HTTP
e HTTPS
.
$ sudo ufw allow 27017
$ sudo ufw allow 4567
$ sudo ufw allow 80
$ sudo ufw allow 443
Abilita il firewall.
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Controlla di nuovo lo stato del firewall.
$ sudo ufw status
Dovresti vedere un output simile.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
27017 ALLOW Anywhere
4567 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
27017 (v6) ALLOW Anywhere (v6)
4567 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Passaggio 2: installa Node.js
Installeremo qui la versione LTS di Node.js. Esegui i seguenti comandi per installare Node.js.
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
Controlla se Node è installato correttamente.
$ node --version
Dovresti vedere un output simile.
v12.18.3
Controlla anche npm.
$ npm --version
6.14.6
Passaggio 3: installa MongoDB
MongoDB è il database predefinito per NodeBB. Puoi anche usare Redis invece di MongoDB. Tratteremo entrambi i database nel nostro tutorial.
Il repository MongoDB per Ubuntu 20.04 non è ancora pronto e Ubuntu stesso ha una versione molto vecchia. Per il nostro scopo, utilizzeremo il repository MongoDB per 18.04 che funziona perfettamente. È possibile aggiornare l'elenco dei pacchetti con l'ultimo repository una volta disponibile il supporto ufficiale.
Importa la chiave pubblica per MongoDB.
$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Aggiungi il repository MongoDB.
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
Aggiorna il database dei pacchetti locale.
$ sudo apt update
Installa MongoDB.
$ sudo apt install mongodb-org
Verificare l'installazione di MongoDB.
$ mongod --version
db version v4.2.8
...
Avvia il servizio MongoDB.
$ sudo systemctl start mongod
Abilita il servizio MongoDB.
$ sudo systemctl enable mongod
Controlla lo stato del servizio MongoDB.
$ sudo systemctl status mongod
Passaggio 4: configurazione di MongoDB
L'amministrazione di Mongo viene eseguita tramite la shell MongoDB. L'installazione predefinita di MongoDB è in ascolto sulla porta 27017.
Accedi alla shell MongoDB.
$ mongo
Passa al database admin
integrato.
> use admin
Creare un utente amministrativo. Questo non è lo stesso dell'utente amministratore di NodeBB.
> db.createUser( { user: "admin", pwd: "yourpassword", roles: [ { role: "root", db: "admin" } ] } )
Cambia il segnaposto \yourpassword”
con la tua password.
Aggiungi un nuovo database per NodeBB.
> use nodebb
Successivamente, crea l'utente nodebb
per gestire il database nodebb
.
> db.createUser( { user: "nodebb", pwd: "yourpassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
L'autorizzazione readwrite
consente a NodeBB di archiviare e recuperare dati dal database nodebb
. L'autorizzazione clustermonitor
consente a NodeBB l'accesso in sola lettura alle statistiche del database che sono visibili tramite il suo pannello di amministrazione.
Esci dalla shell Mongo.
> quit()
Apri il file di configurazione di MongoDB per la modifica.
$ sudo nano /etc/mongod.conf
Aggiungi la seguente riga alla fine del file.
security:
authorization: enabled
Riavvia MongoDB e verifica l'utente amministrativo creato in precedenza.
$ sudo systemctl restart mongod
$ mongo -u admin -p yourpassword --authenticationDatabase=admin
Dovresti vedere il prompt di Mongo se tutto è stato configurato correttamente.
Passaggio 5: installa Git
Prima di procedere con l'installazione di NodeBB, dobbiamo installare Git.
Eseguire il comando seguente per installare Git.
$ sudo apt install git
Eseguire i seguenti comandi per eseguire la configurazione iniziale di Git.
$ git config --global user.name "Your Name"
$ git config --global user.email ""
Passaggio 6: installare NodeBB
Non è consigliabile eseguire NodeBB come utente root.
Crea un utente senza privilegi.
$ sudo adduser nodebb
Imposta una password a tua scelta e salta attraverso altre opzioni.
Crea la directory in cui vivrà il tuo forum NodeBB.
$ sudo mkdir /var/www/nodebb
Cambia la proprietà della cartella all'utente appena creato.
$ sudo chown -R nodebb:nodebb /var/www/nodebb
Accedi all'utente appena creato.
$ su nodebb
Passa alla directory di installazione di NodeBB.
$ cd /var/www/nodebb
Per installare NodeBB, prima dobbiamo clonare il suo repository Github.
Clonare NodeBB nella directory /var/www/nodebb
. Il punto alla fine del comando si riferisce alla directory corrente.
$ git clone -b v1.14.2 https://github.com/NodeBB/NodeBB.git .
Qui abbiamo clonato la v1.14.2 di NodeBB che era l'ultima versione stabile al momento della stesura del tutorial. Puoi trovare l'ultimo ramo stabile dalla pagina dell'ultima versione di NodeBB.
NodeBB viene fornito con un'utilità della riga di comando. Utilizzare il seguente comando per installare NodeBB.
$ ./nodebb setup
È possibile premere Invio per scegliere il valore predefinito.
Per il valore dell'URL utilizzato per accedere a questo NodeBB scegli l'URL finale a cui vuoi accedere al forum. Se accederai al forum tramite l'IP del tuo server, inseriscilo o inserisci il dominio completo del forum. Qui inseriremo http://forum.example.com
.
Continua a scegliere i valori predefiniti fino a quando non ti viene richiesto il nome utente MongoDB, ovvero quando inserisci nodebb e la password che hai scelto in precedenza per quel nome utente durante la configurazione di MongoDB. Il tuo database nodebb dovrebbe essere scelto. Ti verrà anche chiesto di creare un utente amministratore e i suoi dettagli.
Una volta completata la configurazione, eseguire il seguente comando per avviare NodeBB.
$ ./nodebb start
Il tuo forum è ora in esecuzione. Dovresti essere in grado di accedervi tramite http://
.
Potresti visualizzare un messaggio di errore che dice Sembra che la tua connessione a NodeBB sia stata persa, attendi mentre proviamo a riconnetterti. Sembra perché abbiamo scelto l'URL predefinito per NodeBB http://forum.example.com
e non http://
Uscire dall'utente NodeBB.
$ exit
Passaggio 7: installa Nginx
Ubuntu 20.04 per impostazione predefinita porta l'ultima versione stabile di Nginx. Lo installeremo.
$ sudo apt install nginx
Controlla se è installato correttamente.
$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
Avvia e abilita Nginx.
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Apri l'indirizzo IP del tuo server nel tuo browser web. Dovresti vedere la seguente pagina che significa che il tuo server è attivo e funzionante.
Passaggio 8: configurare Nginx
Esegui il seguente comando per aggiungere un file di configurazione per il tuo sito.
$ sudo nano /etc/nginx/sites-available/nodebb.conf
Incolla il seguente codice nell'editor.
server {
listen 80;
server_name forum.example.com;
access_log /var/log/nginx/forum.example.com.access.log;
error_log /var/log/nginx/forum.example.com.error.log;
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";
}
}
Premi Ctrl + X
per uscire dall'editor e inserisci Y
quando richiesto.
Una volta terminato, verifica che la configurazione di Nginx sia corretta.
$ sudo nginx -t
Ricarica il servizio Nginx per abilitare la configurazione.
$ sudo systemctl reload nginx
Visita http://forum.example.com
nel tuo browser per aprire il forum NodeBB.
Passaggio 9: eseguire NodeBB come servizio di sistema
Il servizio NodeBB non verrà eseguito dopo il riavvio del sistema. Per evitare di avviare NodeBB ogni volta, dobbiamo installarlo come servizio di sistema.
Arrestare prima il servizio NodeBB.
$ ./nodebb stop
Esegui il seguente comando per creare e modificare il file di configurazione dell'unità systemd nodebb.service
.
$ 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 mongod.service
[Service]
Type=forking
User=nodebb
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodebb
Environment=NODE_ENV=production
WorkingDirectory=/var/www/nodebb
PIDFile=/var/www/nodebb/pidfile
ExecStart=/usr/bin/env node loader.js
Restart=always
[Install]
WantedBy=multi-user.target
Qui abbiamo scelto il nome utente come nodebb
che abbiamo creato nel passaggio 6 e il percorso che abbiamo scelto per installare NodeBB al suo interno.
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
Passaggio 10: ottenere un certificato SSL Let's Encrypt
Proteggere il tuo forum NodeBB con HTTPS è un passaggio necessario per proteggere il traffico del tuo sito. Per questo tutorial, utilizzeremo il client Certbot per installare SSL.
Per prima cosa, installa lo strumento Certbot.
$ sudo apt install certbot python3-certbot-nginx
Genera i certificati.
$ sudo certbot --nginx -d forum.example.com
Se è la prima volta che esegui Certbot sul tuo sistema, ti verrà chiesto di inserire un indirizzo email e di accettare i termini di servizio. Ti verrà anche chiesto se accetti di condividere i dati con la fondazione EFF a cui puoi dire di no. Dopo averlo fatto, Certbot comunicherà con i server Lets Encrypt ed eseguirà una sfida per verificare i tuoi domini.
In caso di successo, ti verrà chiesto come gestire i reindirizzamenti HTTPS.
Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Seleziona l'opzione Sicuro
e premi invio. Ciò garantirà che tutte le richieste al dominio http vengano reindirizzate correttamente alla versione https. I tuoi certificati verranno quindi creati e i tuoi file di configurazione Nginx verranno aggiornati con le impostazioni SSL.
I tuoi certificati sono pronti e puoi aprire il tuo sito ora andando su https://forum.example.com
Passaggio 11: verifica il rinnovo automatico SSL
Questo è l'ultimo passaggio prima di concludere questo tutorial.
Controllare il processo di rinnovo eseguendo un ciclo di prova del processo di rinnovo.
$ sudo certbot renew --dry-run
Se non ricevi errori, significa che sei a posto. Certbot rinnoverà automaticamente i tuoi certificati per te. Ti verrà inviata un'e-mail di avviso della scadenza del certificato.
Conclusione
Questo è tutto per questo tutorial. La configurazione del tuo forum NodeBB è completa. Se hai domande, pubblicale nei commenti qui sotto.