Requisits
Abans que comencis
Instal·leu Node.js
Instal·leu i configureu MongoDB
Instal·leu i configureu Nginx
Instal·leu el client Acme.sh i obteniu un certificat Let's Encrypt (opcional)
Instal·leu NodeBB
Executeu NodeBB amb PM2
NodeBB és un programari de fòrum basat en Node.js. Utilitza endolls web per a interaccions instantànies i notificacions en temps real. El codi font de NodeBB està allotjat públicament a Github . Aquesta guia us guiarà pel procés d'instal·lació de NodeBB en una nova instància de FreeBSD 12 Vultr, utilitzant Node.js, MongoDB com a base de dades, Nginx com a servidor intermediari invers i Acme.sh per a certificats SSL.
Requisits
NodeBB requereix instal·lar el programari següent:
- Node.js versió 6.9.0 o posterior
- MongoDB versió 2.6 o superior
- Nginx
- Git
- Mínim de 1024 MB de RAM
- Nom de domini amb
A/ AAAAregistres configurats
Abans que comencis
Comproveu la versió de FreeBSD.
uname -ro
# FreeBSD 12.0-RELEASE
Assegureu-vos que el vostre sistema FreeBSD estigui actualitzat.
freebsd-update fetch install
pkg update && pkg upgrade -y
Instal·leu els paquets necessaris si no estan presents al vostre sistema.
pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips
Creeu un compte d'usuari nou amb el vostre nom d'usuari preferit (farem servir johndoe).
adduser
# Username: johndoe
# Full name: John Doe
# Uid (Leave empty for default): <Enter>
# Login group [johndoe]: <Enter>
# Login group is johndoe. Invite johndoe into other groups? []: wheel
# Login class [default]: <Enter>
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/johndoe]: <Enter>
# Home directory permissions (Leave empty for default): <Enter>
# Use password-based authentication? [yes]: <Enter>
# Use an empty password? (yes/no) [no]: <Enter>
# Use a random password? (yes/no) [no]: <Enter>
# Enter password: your_secure_password
# Enter password again: your_secure_password
# Lock out the account after creation? [no]: <Enter>
# OK? (yes/no): yes
# Add another user? (yes/no): no
# Goodbye!
Executeu l' visudoordre i descomenteu la %wheel ALL=(ALL) ALLlínia, per permetre que els membres del wheelgrup executin qualsevol ordre.
visudo
# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL
Ara, canvieu al vostre nou usuari creat amb su.
su - johndoe
NOTA: Substituïu-lo johndoepel vostre nom d'usuari.
Configura la zona horària.
sudo tzsetup
Instal·leu Node.js
NodeBB està impulsat per Node.js i, per tant, cal instal·lar-lo. Es recomana la instal·lació de la versió LTS actual de Node.js.
Instal·leu Node.js i npm.
sudo pkg install -y node10 npm-node10
Comproveu les versions.
node -v && npm -v
# v10.15.3
# 6.9.0
MongoDB és la base de dades predeterminada per a NodeBB.
Instal·leu MongoDB.
sudo pkg install -y mongodb40
Comproveu la versió.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.6
# db version v4.0.6
Activeu i inicieu MongoDB.
sudo sysrc mongod_enable=yes
sudo service mongod start
Creeu una base de dades i un usuari per a NodeBB.
Connecteu-vos primer a MongoDB.
mongo
Canvia a la adminbase de dades integrada .
> use admin
Crear un usuari administratiu.
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
NOTA: Substituïu el marcador de posició <Enter a secure password>per la vostra pròpia contrasenya seleccionada.
Afegiu una nova base de dades anomenada nodebb.
> use nodebb
Es crearà la base de dades i el context es canviarà a nodebb. A continuació, creeu l' nodebbusuari amb els privilegis adequats.
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
NOTA: de nou, substituïu el marcador de posició <Enter a secure password>per la vostra pròpia contrasenya seleccionada.
Sortiu de la closca de Mongo.
> quit()
Reinicieu MongoDB i assegureu-vos que l'usuari administratiu creat anteriorment es pugui connectar.
sudo service mongod restart
mongo -u admin -p your_password --authenticationDatabase=admin
Instal·leu Nginx.
sudo pkg install -y nginx
Comproveu la versió.
nginx -v
# nginx version: nginx/1.14.2
Activeu i inicieu Nginx.
sudo sysrc nginx_enable=yes
sudo service nginx start
NodeBB s'executa per defecte al port 4567. Per evitar escriure http://example.com:4567, configurarem Nginx com a servidor intermediari invers per a l'aplicació NodeBB. Cada sol·licitud al port 80o 443, si s'utilitza SSL, es reenviarà al port 4567.
Run sudo vim /usr/local/etc/nginx/nodebb.conf and populate it with the basic reverse proxy configuration below.
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";
}
}
In the above config, update the server_name directive with your domain/hostname.
Save the file and exit with :+W+Q.
Now we need to include nodebb.conf in the main nginx.conf file.
Run sudo vim /usr/local/etc/nginx/nginx.conf and add the following line to the http {} block.
include nodebb.conf;
Check the configuration.
sudo nginx -t
Reload Nginx.
sudo service nginx reload
Install Acme.sh client and obtain a Let's Encrypt certificate (optional)
Securing your forum with HTTPS is not necessary, but it will secure your site's traffic. Acme.sh is a pure unix shell software for obtaining SSL certificates from Let's Encrypt with zero dependencies.
Download and install 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 your_email@example.com
cd ~
Check the version.
/etc/letsencrypt/acme.sh --version
# v2.8.1
Obtain RSA and ECDSA certificates for 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 service nginx reload" --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 service nginx reload" --keylength ec-256
Després d'executar les ordres anteriors, els vostres certificats i claus estaran a:
- RSA:
/etc/letsencrypt/forum.example.com.
- ECC/ECDSA:
/etc/letsencrypt/forum.example.com_ecc.
Després d'obtenir els certificats de Let's Encrypt, hem de configurar Nginx per utilitzar-los.
sudo vim /usr/local/etc/nginx/nodebb.confTorna a executar i configura Nginx com a servidor intermediari invers 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";
}
}
Comproveu la configuració.
sudo nginx -t
Torna a carregar Nginx.
sudo service nginx reload
Instal·leu NodeBB
Creeu un directori arrel del document.
sudo mkdir -p /usr/local/www/nodebb
Canvia la propietat del /usr/local/www/nodebbdirectori a johndoe.
sudo chown -R johndoe:johndoe /usr/local/www/nodebb
Navegueu a la carpeta arrel del document.
cd /usr/local/www/nodebb
Cloneu l'últim NodeBB a la carpeta arrel del document.
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .
Executeu l'ordre de configuració de NodeBB i responeu a cada pregunta quan se us demani.
./nodebb setup
Un cop finalitzada la configuració de NodeBB, executeu-lo ./nodebb startper iniciar manualment el vostre servidor NodeBB.
./nodebb start
Després d'aquesta ordre, podreu accedir a la vostra instància del fòrum NodeBB en un navegador web.
Executeu NodeBB amb PM2
Quan s'inicia mitjançant ./nodebb start, NodeBB no es tornarà a iniciar automàticament quan es reiniciï el sistema. Per evitar-ho, haurem de configurar NodeBB com a servei del sistema.
Si s'executa, atureu NodeBB.
./nodebb stop
Instal·leu PM2 globalment.
sudo npm install pm2 -g
Comproveu la versió.
pm2 -v
# 3.5.0
Navegueu a l'arrel del document NodeBB.
cd /usr/local/www/nodebb
Inicieu NodeBB mitjançant PM2.
pm2 start app.js
Enumereu el procés NodeBB.
pm2 ls
Detecteu el sistema d'inici disponible.
pm2 startup
Copieu i enganxeu la sortida d'aquesta ordre a la CLI per configurar el vostre ganxo d'inici.
Desa la llista de processos.
pm2 save
Això és. La vostra instància de NodeBB ja està en funcionament.