Zahtjevi
Prije nego što počneš
Instalirajte Node.js
Instalirajte i konfigurirajte MongoDB
Instalirajte i konfigurirajte Nginx
Instalirajte Acme.sh klijent i nabavite certifikat Let's Encrypt (opcionalno)
Instalirajte NodeBB
Pokrenite NodeBB s PM2
NodeBB je forumski softver baziran na Node.js. Koristi web utičnice za trenutne interakcije i obavijesti u stvarnom vremenu. Izvorni kod NodeBB-a javno se nalazi na Githubu . Ovaj vodič će vas provesti kroz proces instalacije NodeBB-a na svježoj instanci FreeBSD 12 Vultr, koristeći Node.js, MongoDB kao bazu podataka, Nginx kao obrnuti proxy i Acme.sh za SSL certifikate.
Zahtjevi
NodeBB zahtijeva instaliranje sljedećeg softvera:
- Node.js verzija 6.9.0 ili novija
- MongoDB verzija 2.6 ili novija
- Nginx
- Git
- Najmanje 1024 MB RAM-a
- Ime domene sa
A/ AAAApostavljenim zapisima
Prije nego što počneš
Provjerite verziju FreeBSD-a.
uname -ro
# FreeBSD 12.0-RELEASE
Provjerite je li vaš FreeBSD sustav ažuriran.
freebsd-update fetch install
pkg update && pkg upgrade -y
Instalirajte potrebne pakete ako nisu prisutni na vašem sustavu.
pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips
Izradite novi korisnički račun sa svojim željenim korisničkim imenom (koristit ćemo 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!
Pokrenite visudonaredbu i dekomentirajte %wheel ALL=(ALL) ALLredak kako biste omogućili članovima wheelgrupe da izvrše bilo koju naredbu.
visudo
# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL
Sada se prebacite na svog novostvorenog korisnika pomoću su.
su - johndoe
NAPOMENA: Zamijenite johndoesvojim korisničkim imenom.
Postavite vremensku zonu.
sudo tzsetup
Instalirajte Node.js
NodeBB pokreće Node.js, pa ga je potrebno instalirati. Preporuča se instalacija trenutne LTS verzije Node.js.
Instalirajte Node.js i npm.
sudo pkg install -y node10 npm-node10
Provjerite verzije.
node -v && npm -v
# v10.15.3
# 6.9.0
MongoDB je zadana baza podataka za NodeBB.
Instalirajte MongoDB.
sudo pkg install -y mongodb40
Provjerite verziju.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.6
# db version v4.0.6
Omogućite i pokrenite MongoDB.
sudo sysrc mongod_enable=yes
sudo service mongod start
Napravite bazu podataka i korisnika za NodeBB.
Prvo se povežite s MongoDB.
mongo
Prijeđite na ugrađenu adminbazu podataka.
> use admin
Stvorite administrativnog korisnika.
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
NAPOMENA: Zamijenite rezervirano mjesto <Enter a secure password>s vlastitom odabranom lozinkom.
Dodajte novu bazu podataka pod nazivom nodebb.
> use nodebb
Baza podataka će biti stvorena i kontekst će se prebaciti na nodebb. Zatim stvorite nodebbkorisnika s odgovarajućim privilegijama.
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
NAPOMENA: Ponovno zamijenite rezervirano mjesto <Enter a secure password>svojom lozinkom.
Izađite iz ljuske Mongo.
> quit()
Ponovno pokrenite MongoDB i osigurajte da se administrativni korisnik koji je ranije kreiran može povezati.
sudo service mongod restart
mongo -u admin -p your_password --authenticationDatabase=admin
Instalirajte Nginx.
sudo pkg install -y nginx
Provjerite verziju.
nginx -v
# nginx version: nginx/1.14.2
Omogućite i pokrenite Nginx.
sudo sysrc nginx_enable=yes
sudo service nginx start
NodeBB prema zadanim postavkama radi na portu 4567. Kako bismo izbjegli tipkanje http://example.com:4567, konfigurirat ćemo Nginx kao obrnuti proxy za NodeBB aplikaciju. Svaki zahtjev na portu 80ili 443, ako se koristi SSL, bit će proslijeđen na port 4567.
Pokrenite ga sudo vim /usr/local/etc/nginx/nodebb.confi popunite ga osnovnom konfiguracijom obrnutog proxyja u nastavku.
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";
}
}
U gornjoj konfiguraciji ažurirajte server_namedirektivu s vašom domenom/imenom hosta.
Spremite datoteku i izađite s :+ W+ Q.
Sada moramo uključiti nodebb.confu glavnu nginx.confdatoteku.
Pokrenite sudo vim /usr/local/etc/nginx/nginx.confi dodajte sljedeći redak u http {}blok.
include nodebb.conf;
Provjerite konfiguraciju.
sudo nginx -t
Ponovno učitajte Nginx.
sudo service nginx reload
Instalirajte Acme.sh klijent i nabavite certifikat Let's Encrypt (opcionalno)
Osiguravanje vašeg foruma HTTPS-om nije potrebno, ali će osigurati promet vaše stranice. Acme.sh je čista unix shell softver za dobivanje SSL certifikata od Let's Encrypt s nula ovisnosti.
Preuzmite i instalirajte 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 ~
Provjerite verziju.
/etc/letsencrypt/acme.sh --version
# v2.8.1
Dobiti RSA i ECDSA certifikate za 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
Nakon izvođenja gornjih naredbi, vaši će certifikati i ključevi biti u:
- RSA:
/etc/letsencrypt/forum.example.com.
- ECC/ECDSA:
/etc/letsencrypt/forum.example.com_ecc.
Nakon što smo dobili certifikate od Let's Encrypt, moramo konfigurirati Nginx da ih koristi.
Pokrenite sudo vim /usr/local/etc/nginx/nodebb.confponovno i konfigurirajte Nginx kao HTTPS obrnuti proxy.
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";
}
}
Provjerite konfiguraciju.
sudo nginx -t
Ponovno učitajte Nginx.
sudo service nginx reload
Instalirajte NodeBB
Napravite korijenski direktorij dokumenta.
sudo mkdir -p /usr/local/www/nodebb
Promijenite vlasništvo nad /usr/local/www/nodebbimenikom u johndoe.
sudo chown -R johndoe:johndoe /usr/local/www/nodebb
Idite do korijenske mape dokumenta.
cd /usr/local/www/nodebb
Klonirajte najnoviji NodeBB u korijensku mapu dokumenta.
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .
Pokrenite naredbu za postavljanje NodeBB i odgovorite na svako pitanje kada se to od vas zatraži.
./nodebb setup
Nakon što je postavljanje NodeBB-a dovršeno, pokrenite ./nodebb startda biste ručno pokrenuli svoj NodeBB poslužitelj.
./nodebb start
Nakon ove naredbe, moći ćete pristupiti svojoj instanci NodeBB foruma u web pregledniku.
Pokrenite NodeBB s PM2
Kada se pokrene putem ./nodebb start, NodeBB se neće automatski ponovno pokrenuti kada se sustav ponovno pokrene. Da bismo to izbjegli, morat ćemo postaviti NodeBB kao sistemsku uslugu.
Ako radi, zaustavi NodeBB.
./nodebb stop
Instalirajte PM2 globalno.
sudo npm install pm2 -g
Provjerite verziju.
pm2 -v
# 3.5.0
Idite na korijen dokumenta NodeBB.
cd /usr/local/www/nodebb
Pokrenite NodeBB putem PM2.
pm2 start app.js
Navedite proces NodeBB.
pm2 ls
Otkrijte dostupni init sustav.
pm2 startup
Kopirajte i zalijepite izlaz ove naredbe u CLI da biste postavili svoju zakačicu za pokretanje.
Spremite popis procesa.
pm2 save
To je to. Vaša NodeBB instanca je sada pokrenuta i radi.