Krav
Før du begynner
Installer Node.js
Installer og konfigurer MongoDB
Installer og konfigurer Nginx
Installer Acme.sh-klienten og få et Let's Encrypt-sertifikat (valgfritt)
Installer NodeBB
Kjør NodeBB med PM2
NodeBB er en Node.js-basert forumprogramvare . Den bruker web-sockets for umiddelbare interaksjoner og sanntidsvarsler. NodeBB-kildekoden er offentlig vert på Github . Denne guiden vil lede deg gjennom NodeBB-installasjonsprosessen på en fersk FreeBSD 12 Vultr-forekomst, ved å bruke Node.js, MongoDB som en database, Nginx som en omvendt proxy og Acme.sh for SSL-sertifikater.
Krav
NodeBB krever at følgende programvare er installert:
- Node.js versjon 6.9.0 eller nyere
- MongoDB versjon 2.6 eller nyere
- Nginx
- Git
- Minimum 1024MB RAM
- Domenenavn med
A/ AAAAposter satt opp
Før du begynner
Sjekk FreeBSD-versjonen.
uname -ro
# FreeBSD 12.0-RELEASE
Sørg for at ditt FreeBSD-system er oppdatert.
freebsd-update fetch install
pkg update && pkg upgrade -y
Installer nødvendige pakker hvis de ikke finnes på systemet ditt.
pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips
Opprett en ny brukerkonto med ditt foretrukne brukernavn (vi bruker 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!
Kjør visudokommandoen og fjern kommentarfeltet for %wheel ALL=(ALL) ALLå la medlemmer av wheelgruppen utføre en hvilken som helst kommando.
visudo
# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL
Bytt nå til den nyopprettede brukeren med su.
su - johndoe
MERK: Erstatt johndoemed brukernavnet ditt.
Sett opp tidssonen.
sudo tzsetup
Installer Node.js
NodeBB er drevet av Node.js, og derfor må den installeres. Installasjon av gjeldende LTS-versjon av Node.js anbefales.
Installer Node.js og npm.
sudo pkg install -y node10 npm-node10
Sjekk versjonene.
node -v && npm -v
# v10.15.3
# 6.9.0
MongoDB er standarddatabasen for NodeBB.
Installer MongoDB.
sudo pkg install -y mongodb40
Sjekk versjonen.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.6
# db version v4.0.6
Aktiver og start MongoDB.
sudo sysrc mongod_enable=yes
sudo service mongod start
Opprett en database og bruker for NodeBB.
Koble til MongoDB først.
mongo
Bytt til den innebygde admindatabasen.
> use admin
Opprett en administrativ bruker.
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
MERK: Bytt ut plassholderen <Enter a secure password>med ditt eget valgte passord.
Legg til en ny database kalt nodebb.
> use nodebb
Databasen vil bli opprettet og kontekst byttet til nodebb. Opprett deretter nodebbbrukeren med de riktige rettighetene.
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
MERK: Igjen, erstatt plassholderen <Enter a secure password>med ditt eget valgte passord.
Gå ut av Mongo-skallet.
> quit()
Start MongoDB på nytt og sørg for at den administrative brukeren opprettet tidligere kan koble til.
sudo service mongod restart
mongo -u admin -p your_password --authenticationDatabase=admin
Installer Nginx.
sudo pkg install -y nginx
Sjekk versjonen.
nginx -v
# nginx version: nginx/1.14.2
Aktiver og start Nginx.
sudo sysrc nginx_enable=yes
sudo service nginx start
NodeBB kjører som standard på port 4567. For å unngå å skrive http://example.com:4567, vil vi konfigurere Nginx som en omvendt proxy for NodeBB-applikasjonen. Hver forespørsel på port 80eller 443, hvis SSL brukes, vil bli videresendt til port 4567.
Kjør sudo vim /usr/local/etc/nginx/nodebb.confog fyll den med den grunnleggende omvendte proxy-konfigurasjonen nedenfor.
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";
}
}
I konfigurasjonen ovenfor oppdaterer du server_namedirektivet med ditt domene/vertsnavn.
Lagre filen og avslutt med :+ W+ Q.
Nå må vi inkludere nodebb.confi hovedfilen nginx.conf.
Kjør sudo vim /usr/local/etc/nginx/nginx.confog legg til følgende linje i http {}blokken.
include nodebb.conf;
Sjekk konfigurasjonen.
sudo nginx -t
Last inn Nginx på nytt.
sudo service nginx reload
Installer Acme.sh-klienten og få et Let's Encrypt-sertifikat (valgfritt)
Det er ikke nødvendig å sikre forumet ditt med HTTPS, men det vil sikre nettstedets trafikk. Acme.sh er en ren unix-skallprogramvare for å få SSL-sertifikater fra Let's Encrypt med null avhengigheter.
Last ned og installer 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 ~
Sjekk versjonen.
/etc/letsencrypt/acme.sh --version
# v2.8.1
Skaff RSA- og ECDSA-sertifikater 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
Etter å ha kjørt kommandoene ovenfor, vil sertifikatene og nøklene dine være i:
- RSA:
/etc/letsencrypt/forum.example.com.
- ECC/ECDSA:
/etc/letsencrypt/forum.example.com_ecc.
Etter å ha fått sertifikater fra Let's Encrypt, må vi konfigurere Nginx til å bruke dem.
Kjør sudo vim /usr/local/etc/nginx/nodebb.configjen og konfigurer Nginx som en HTTPS omvendt 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";
}
}
Sjekk konfigurasjonen.
sudo nginx -t
Last inn Nginx på nytt.
sudo service nginx reload
Installer NodeBB
Opprett en dokumentrotkatalog.
sudo mkdir -p /usr/local/www/nodebb
Endre eierskap av /usr/local/www/nodebbkatalogen til johndoe.
sudo chown -R johndoe:johndoe /usr/local/www/nodebb
Naviger til dokumentrotmappen.
cd /usr/local/www/nodebb
Klon den nyeste NodeBB inn i dokumentrotmappen.
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .
Kjør NodeBB setup-kommandoen og svar på hvert spørsmål når du blir bedt om det.
./nodebb setup
Etter at NodeBB-oppsettet er fullført, kjør ./nodebb startfor å starte NodeBB-serveren manuelt.
./nodebb start
Etter denne kommandoen vil du kunne få tilgang til NodeBB-forumforekomsten din i en nettleser.
Kjør NodeBB med PM2
Når den startes via ./nodebb start, vil ikke NodeBB automatisk starte opp igjen når systemet starter på nytt. For å unngå det, må vi sette opp NodeBB som en systemtjeneste.
Hvis du kjører, stopp NodeBB.
./nodebb stop
Installer PM2 globalt.
sudo npm install pm2 -g
Sjekk versjonen.
pm2 -v
# 3.5.0
Naviger til NodeBB-dokumentroten.
cd /usr/local/www/nodebb
Start NodeBB via PM2.
pm2 start app.js
List opp NodeBB-prosessen.
pm2 ls
Finn det tilgjengelige init-systemet.
pm2 startup
Kopier og lim inn utdata fra denne kommandoen i CLI for å sette opp oppstartskroken.
Lagre prosesslisten din.
pm2 save
Det er det. Din NodeBB-forekomst er nå oppe og går.