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 som en systemtjeneste
NodeBB er et Node.js-basert forum. 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 Ubuntu 18.04 LTS Vultr-forekomst som bruker Node.js, MongoDB som database, Nginx som omvendt proxy og Acme.sh for SSL-sertifikater.
Krav
NodeBB krever at følgende programvare er installert:
- Git
- Node.js versjon 6.9.0 eller nyere
- MongoDB versjon 2.6 eller nyere
- Nginx
- Minimum 1024MB RAM
- Domenenavn med
A/ AAAAposter satt opp
Før du begynner
Sjekk Ubuntu-versjonen.
lsb_release -ds
# Ubuntu 18.04 LTS
Opprett en ny non-rootbrukerkonto med sudotilgang og bytt til den.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
MERK : Erstatt johndoemed brukernavnet ditt.
Sett opp tidssonen.
sudo dpkg-reconfigure tzdata
Sørg for at systemet ditt er oppdatert.
sudo apt update && sudo apt upgrade -y
Installer nødvendige pakker.
sudo apt install -y git build-essential apt-transport-https
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 fra NodeSource-depotet.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
Bekreft installasjon av Node.js og npm.
node -v && npm -v
# v10.15.0
# 5.6.0
MongoDB er standarddatabasen for NodeBB.
Installer MongoDB.
sudo apt install -y mongodb
Sjekk versjonen.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.3
# db version v3.6.3
Opprett en MongoDB-database og bruker for NodeBB.
Koble til MongoDB-serveren 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 kontroller at den administrative brukeren opprettet tidligere kan koble til.
sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=admin
Installer den siste hovedversjonen av Nginx fra det offisielle Nginx-depotet.
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
Sjekk versjonen.
sudo nginx -v
# nginx version: nginx/1.15.0
Aktiver og start Nginx.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
NodeBB kjører som standard på port 4567. For å unngå å måtte 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 /etc/nginx/conf.d/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";
}
}
Merk: Oppdater server_namedirektivet med ditt domene/vertsnavn.
Sjekk konfigurasjonen.
sudo nginx -t
Last inn Nginx på nytt.
sudo systemctl reload nginx.service
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 ~
source ~/.bashrc
Sjekk versjonen.
acme.sh --version
# v2.7.9
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 systemctl reload nginx.service" --accountemail your_email@example.com --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 your_email@example.com --ocsp-must-staple --keylength ec-256
Etter å ha kjørt kommandoene ovenfor, vil sertifikatene og nøklene dine være i følgende kataloger:
- 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 /etc/nginx/conf.d/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 systemctl reload nginx.service
Installer NodeBB
Opprett en dokumentrotkatalog.
sudo mkdir -p /var/www/nodebb
Endre eierskap av /var/www/nodebbkatalogen til johndoe.
sudo chown -R johndoe:johndoe /var/www/nodebb
Naviger til dokumentrotmappen.
cd /var/www/nodebb
Klon den nyeste versjonen av NodeBB inn i dokumentrotmappen.
git clone -b v1.10.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 få tilgang til forumet ditt i nettleseren din.
Kjør NodeBB som en systemtjeneste
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
Opprett en ny uprivilegert nodebbbruker.
sudo adduser nodebb
Endre eierskapet til /var/www/nodebbkatalogen til nodebbbruker.
sudo chown -R nodebb:nodebb /var/www/nodebb
Opprett nodebb.servicesystemd-enhetens konfigurasjonsfil. Denne enhetsfilen vil håndtere oppstart av NodeBB-deamonen. Kjør sudo vim /etc/systemd/system/nodebb.serviceog fyll filen med følgende innhold:
[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
MERK: Angi brukernavn og katalogstier i henhold til dine valgte navn.
Aktiver nodebb.serviceved omstart og start umiddelbart nodebb.service.
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service
Sjekk nodebb.servicestatusen.
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service
Det er det. Din NodeBB-forekomst er nå oppe og går.