NodeBB è un forum basato su Node.js. Utilizza socket Web per interazioni istantanee e notifiche in tempo reale. Il codice sorgente di NodeBB è ospitato pubblicamente su Github . Questa guida ti guiderà attraverso il processo di installazione di NodeBB su una nuova istanza di Ubuntu 18.04 LTS Vultr usando Node.js, MongoDB come database, Nginx come proxy inverso e Acme.sh per i certificati SSL.
Requisiti
NodeBB richiede l'installazione del seguente software:
- Idiota
- Node.js versione 6.9.0 o successiva
- MongoDB versione 2.6 o successive
- nginx
- Almeno 1024 MB di RAM
- Nome dominio con
A
/ AAAA
record impostati
Prima di iniziare
Controlla la versione di Ubuntu.
lsb_release -ds
# Ubuntu 18.04 LTS
Crea un nuovo non-root
account utente con sudo
accesso e passa ad esso.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
NOTA : sostituisci johndoe
con il tuo nome utente.
Imposta il fuso orario.
sudo dpkg-reconfigure tzdata
Assicurati che il tuo sistema sia aggiornato.
sudo apt update && sudo apt upgrade -y
Installa i pacchetti necessari.
sudo apt install -y git build-essential apt-transport-https
Installa Node.js
NodeBB è gestito da Node.js e quindi deve essere installato. Si consiglia l'installazione dell'attuale versione LTS di Node.js.
Installa Node.js dal repository NodeSource.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
Verifica l'installazione di Node.js e npm.
node -v && npm -v
# v10.15.0
# 5.6.0
MongoDB è il database predefinito per NodeBB.
Installa MongoDB.
sudo apt install -y mongodb
Controlla la versione
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.3
# db version v3.6.3
Creare un database MongoDB e l'utente per NodeBB.
Collegati prima al server MongoDB.
mongo
Passa al admin
database integrato .
> use admin
Crea un utente amministrativo.
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
NOTA: sostituire il segnaposto <Enter a secure password>
con la propria password selezionata.
Aggiungi un nuovo database chiamato nodebb
.
> use nodebb
Il database verrà creato e il contesto verrà cambiato nodebb
. Quindi creare l' nodebb
utente con i privilegi appropriati.
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
NOTA: ancora una volta, sostituire il segnaposto <Enter a secure password>
con la propria password selezionata.
Esci dal guscio di Mongo.
> quit()
Riavvia MongoDB e verifica che l'utente amministrativo creato in precedenza possa connettersi.
sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=admin
Installa l'ultima versione mainline di Nginx dal repository ufficiale di Nginx.
wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx
Controlla la versione
sudo nginx -v
# nginx version: nginx/1.15.0
Abilita e avvia Nginx.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
NodeBB per impostazione predefinita viene eseguito sulla porta 4567
. Per evitare di dover digitare http://example.com:4567
, configureremo Nginx come proxy inverso per l'applicazione NodeBB. Ogni richiesta sulla porta 80
o 443
(se si utilizza SSL) verrà inoltrata alla porta 4567
.
Eseguilo sudo vim /etc/nginx/conf.d/nodebb.conf
e popolalo con la configurazione di base del proxy inverso di seguito.
server {
listen [::]:80;
listen 80;
server_name forum.example.com;
root /usr/share/nginx/html;
client_max_body_size 50M;
location /.well-known/acme-challenge/ {
allow all;
}
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_hide_header X-Powered-By;
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";
}
}
Nota: aggiorna la server_name
direttiva con il tuo dominio / nome host.
Controlla la configurazione.
sudo nginx -t
Ricarica Nginx.
sudo systemctl reload nginx.service
Installa il client Acme.sh e ottieni un certificato Let's Encrypt (opzionale)
Non è necessario proteggere il tuo forum con HTTPS, ma proteggerà il traffico del tuo sito. Acme.sh è un software di shell unix puro per ottenere certificati SSL da Let's Encrypt con zero dipendenze.
Scarica e installa Acme.sh.
sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~
source ~/.bashrc
Controlla la versione
acme.sh --version
# v2.7.9
Ottieni i certificati RSA ed ECDSA per forum.example.com
.
# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail [email protected] --ocsp-must-staple --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail [email protected] --ocsp-must-staple --keylength ec-256
Dopo aver eseguito i comandi precedenti, i certificati e le chiavi saranno nelle seguenti directory:
- RSA:
/etc/letsencrypt/forum.example.com
- ECC / ECDSA:
/etc/letsencrypt/forum.example.com_ecc
Dopo aver ottenuto i certificati da Let's Encrypt, dobbiamo configurare Nginx per usarli.
Eseguire di sudo vim /etc/nginx/conf.d/nodebb.conf
nuovo e configurare Nginx come proxy inverso HTTPS.
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name forum.example.com;
root /usr/share/nginx/html;
client_max_body_size 50M;
location /.well-known/acme-challenge/ {
allow all;
}
# RSA
ssl_certificate /etc/letsencrypt/forum.example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/forum.example.com/forum.example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/forum.example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/forum.example.com_ecc/forum.example.com.key;
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";
}
}
Controlla la configurazione.
sudo nginx -t
Ricarica Nginx.
sudo systemctl reload nginx.service
Installa NodeBB
Creare una directory radice del documento.
sudo mkdir -p /var/www/nodebb
Cambia la proprietà della /var/www/nodebb
directory in johndoe
.
sudo chown -R johndoe:johndoe /var/www/nodebb
Passare alla cartella principale del documento.
cd /var/www/nodebb
Clonare l'ultima versione di NodeBB nella cartella principale del documento.
git clone -b v1.10.x https://github.com/NodeBB/NodeBB.git .
Eseguire il comando di installazione NodeBB e rispondere a ogni domanda quando richiesto.
./nodebb setup
Al termine dell'installazione di NodeBB, eseguire ./nodebb start
per avviare manualmente il server NodeBB.
./nodebb start
Dopo questo comando, sarai in grado di accedere al tuo forum nel tuo browser web.
Esegui NodeBB come servizio di sistema
Se avviato tramite ./nodebb start
, NodeBB non si riavvierà automaticamente al riavvio del sistema. Per evitarlo, dovremo configurare NodeBB come servizio di sistema.
Se in esecuzione, arrestare NodeBB.
./nodebb stop
Crea un nuovo nodebb
utente senza privilegi .
sudo adduser nodebb
Cambia la proprietà della /var/www/nodebb
directory per l' nodebb
utente.
sudo chown -R nodebb:nodebb /var/www/nodebb
Crea il nodebb.service
file di configurazione dell'unità systemd. Questo file di unità gestirà l'avvio del deamon NodeBB. Esegui sudo vim /etc/systemd/system/nodebb.service
e compila il file con il seguente contenuto:
[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
NOTA: impostare i percorsi di nome utente e directory in base ai nomi scelti.
Abilita nodebb.service
al riavvio e avvia immediatamente nodebb.service
.
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service
Controlla lo nodebb.service
stato.
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service
Questo è tutto. L'istanza di NodeBB è ora attiva e funzionante.