NodeBB Forum te installeren op Fedora 29

NodeBB is eenNode.js gebaseerde forum software gebouwd voor het moderne web.Hetis gebouwd op een MongoDB of Redis databank.Het gebruikt web sockets voor onmiddellijke interacties en real-time meldingen. NodeBB heeft veel moderne functies uit de doos, zoals integratie in sociale netwerken en streaming discussies.Extra functionaliteit wordt mogelijk gemaakt door het gebruik van plugins van derden.NodeBB is een open bron project dat je op Github kunt vinden.In deze gids lopen we je door het stap-voor-stap installatieproces van NodeBB op het Fedora 29 besturingssysteem door Nginx als reverse proxy te gebruiken, MongoDB als de database en acme.sh en Let’s Encrypt voor HTTPS.

Vereisten

NodeBB vereist dat de volgende software geïnstalleerd is:

  • Node.js versie6of hoger
  • MongoDB versie2.6of hoger ofRedis versie2.8.9of hoger
  • Nginx versie1.3.13of hoger
  • Git

OPMERKING: Het installeren van de afhankelijkheden van NodeBB kan meer dan 512 megabyte systeemgeheugen vergen. Het is aan te raden een swap-partitie in te schakelen om te compenseren als je Linux systeem onvoldoende geheugen heeft.

Vereisten

  • Een draaiend Fedora 29 systeem met tenminste 1GB of RAM.
  • Domeinnaam metA/AAAArecords ingesteld.
  • Een niet-root gebruiker met sudo privileges.

Eerste stappen

Controleer je Fedora versie:

cat /etc/fedora-release
# Fedora release 29 (Twenty Nine)

Stel de tijdzone in:

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

Werk je besturingssysteem pakketten (software) bij. Dit is een belangrijke eerste stap omdat je er zeker van bent dat je de laatste updates en beveiligingsfixes voor de standaard softwarepakketten van je besturingssysteem hebt:

sudo dnf check-upgrade || sudo dnf upgrade -y

Installeer enkele essentiële pakketten die nodig zijn voor basisbeheer van het Fedora besturingssysteem:

sudo dnf install -y curl wget vim bash-completion git socat

Schakel omwille van de eenvoud SELinux en Firewall uit:

sudo setenforce 0; sudo systemctl stop firewalld.service; sudo systemctl disable firewalld.service

Stap 1: Installeer Node.js en npm

NodeBB is gebouwd op Node.js.We gaan het volgende installerenaanbevolenversie voor NodeBB die versie 8 isop het moment van dit schrijven. Op Linux heb je een paar Node.js installatie mogelijkheden: Linux Binaries (x86/x64), Broncode of via Pakketbeheer. We zullen de optie Pakketbeheer gebruiken, die het installeren en bijwerken van Node.js een fluitje van een cent maakt.

Download en installeer de nieuwste Long-Term Support (LTS) versie van Node.js uit de Fedora repo:

sudo dnf -y install nodejs

Om native add-ons van npm te compileren en te installeren moet je misschien ook build tools installeren:

sudo dnf install -y gcc-c++ make
# or
# sudo dnf groupinstall -y 'Development Tools'

OPMERKING:npm wordt met Node.js verspreid – wat betekent dat wanneer je Node.js downloadt, je automatisch npm op je systeem geïnstalleerd krijgt.

Controleer de Node.js en npmversies:

node -v && npm -v
# v10.15.0
# 6.4.1

Npm is een apart project van Node.js, en heeft de neiging vaker bij te werken. Daardoor zul je, zelfs als je net Node.js (en dus npm) gedownload hebt, waarschijnlijk npm moeten bijwerken. Gelukkig weet npm hoe ze zichzelf moet bijwerken! Om je npm bij te werken, typ je dit in je terminal:

sudo npm install -g npm@latest

Dit commando zal npm bijwerken naar de nieuwste stabiele versie.

Controleer npm versie opnieuw met:

npm -v
# 6.7.0

En het zou de nieuwste versienummers moeten teruggeven.

Stap 2: Installeer en configureer MongoDB

NodeBB heeft een databank nodig om zijn gegevens op te slaan, en het ondersteunt MongoDB en Redis. In deze handleiding kiezen we MongoDB als gegevensopslag-engine. In de volgende stappen zullen we dus de databank MongoDB downloaden en installeren uit de officiële MongoDB rpm repository:

Om de stabiele versie van het MongoDB pakket te installeren, geef je het volgende commando:

sudo dnf install -y mongodb mongodb-server

Controleer de versie van MongoDB:

mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.1
# db version v4.0.1

Start de MongoDB service en schakelhemin(stel in dat hij start bij opnieuw opstarten):

sudo systemctl start mongod.service
sudo systemctl enable mongod.service

Controleer de status van de MongoDB Database Server door te draaien:

sudo systemctl status mongod.service
# active (running)

Maak vervolgens een MongoDB databank en gebruiker voor NodeBB.

Maak eerst verbinding met de MongoDB server.

mongo

Schakel over naar de ingebouwdeadmindatabank.

> use admin

Maak een administratieve gebruiker.

> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )

OPMERKING:Vervang de plaatshouder<Enter a secure password>door je eigen gekozen wachtwoord.

Voeg een nieuwe database toe met de naamnodebb.

> use nodebb

De databank wordt aangemaakt en de context overschakelt naarnodebb. Maak vervolgens de gebruikernodebbaan met de juiste rechten.

> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

OPMERKING:Vervang ook hier de plaatshouder<Enter a secure password>door je eigen gekozen wachtwoord.

Verlaat de Mongo shell.

> quit()

Start MongoDB opnieuw op en controleer of de eerder aangemaakte administratieve gebruiker verbinding kan maken.

sudo systemctl restart mongod.service
mongo -u admin -p your_password --authenticationDatabase=admin

Als alles goed gegaan is, is je MongoDB geïnstalleerd en voorbereid voor NodeBB. In de volgende stap behandelen we de webserver installatie en configuratie.

Stap 3 – Installeeracme.shclient en verkrijg Let’s Encrypt certificaat(optioneel)

Je NodeBB Forum beveiligen met HTTPS is niet noodzakelijk, maar het is een goede gewoonte om je site verkeer te beveiligen. Om een TLS certificaat van Let’s Encrypt te verkrijgen gebruiken we het acme.sh programma. Acme.sh is een zuivere unix shell software voor het verkrijgen van TLS certificaten van Let’s Encrypt zonder afhankelijkheden.

Download en installeer acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

Controleer de versie van acme.sh:

acme.sh --version
# v2.8.0

VerkrijgRSAenECC/ECDSAcertificaten voor je domein/hostnaam:

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Als je nep-certificaten wilt om te testen kun je--stagingflage toe aan de bovenstaande commando’s.

Na het uitvoeren van de bovenstaande commando’s staan jecertificaten ensleutels in:

  • VoorRSA:/home/username/example.commap.
  • VoorECC/ECDSA:/home/username/example.com_eccmap.

Om je uitgegeven certs op te sommen kun je uitvoeren:

acme.sh --list

Maak een directory om je certs in op te slaan. We zullen/etc/letsencrypt directory gebruiken.

mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Installeer/kopieer certificaten naar/etc/letsencryptmap.

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"

Alle certificaten worden om de 60 dagen automatisch vernieuwd.

Verlaat na het verkrijgen van de certs de root gebruiker en ga terug naar de gewone sudo gebruiker:

exit

Stap 4: Installeer en configureer Nginx

NodeBB kan prima werken met veel webservers. In deze handleiding kiezen we voor Nginx.

Installeer Nginx pakket, door het volgende commando uit te voeren:

sudo dnf install -y nginx

Na de installatie kun je de Nginx versie controleren door te draaien:

nginx -v
# 1.14.1

Start en activeer(stel in op starten bij opnieuw opstarten) Nginx service:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Controleer de Nginx webserver status door te draaien:

sudo systemctl status nginx.service
# active (running)

NodeBB draait standaard op poort4567. Om te vermijden dat wehttp://example.com:4567, zullen we Nginx instellen als een omgekeerde proxy voor de NodeBB toepassing. Elk verzoek op poort80of443(als SSL gebruikt wordt) zal worden doorgestuurd naar poort4567.

Voer uitsudo vim /etc/nginx/conf.d/nodebb.confen configureer Nginx als een HTTPS reverse proxy.

server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;

server_name forum.example.com;

client_max_body_size 50M;

# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.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";
}

}

Controleer de Nginx configuratie:

sudo nginx -t

Om de veranderingen te laten inwerken, moeten we Nginx opnieuw laden:

sudo systemctl reload nginx.service

Stap 5: Installeer en stel NodeBB in

Maak een document root directory waar NodeBB in moet komen te staan:

sudo mkdir -p /var/www/nodebb

Navigeer naar de document root directory:

cd /var/www/nodebb

Verander het eigendom van de/var/www/nodebbmap naarje_gebruiker.

sudo chown -R [your_user]:[your_user] /var/www/nodebb

OPMERKING:Vervang je_gebruiker in het bovenstaande commando door je niet-root gebruiker die je als voorwaarde voor deze tutorial gemaakt moet hebben.

Kloon de nieuwste NodeBBrepositoryin de document root map:

git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .

Start het setup script door de app te draaien met desetupvlag. Beantwoord elk van de vragen:

./nodebb setup

Nadat de installatie van NodeBB voltooid is, voer je./nodebb startuit om je NodeBB server handmatig te starten:

./nodebb start

Na het uitvoeren van dit commando zou je je gloednieuwe forum in je webbrowser moeten kunnen openen:

NodeBB in Browser

Stap 6: Start NodeBB als systeemdienst

Als je NodeBB start via./nodebb start, zal het niet automatisch weer opstarten als het systeem opnieuw opstart. Om dat te voorkomen, moeten we NodeBB als systeemdienst instellen.

Als die draait, stop dan NodeBB:

./nodebb stop

Maak een nieuwenodebbgebruiker aan:

sudo useradd nodebb

Verander het eigendom van de/var/www/nodebbdirectory innodebbgebruiker:

sudo chown -R nodebb:nodebb /var/www/nodebb

Maaknodebb.servicesystemd unit config bestand. Dit unit bestand zal het opstarten van NodeBB deamon afhandelen. Startsudo vim /etc/systemd/system/nodebb.serviceen voeg de onderstaande inhoud toe:

[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

OPMERKING:Stel gebruikersnaam en directory paden in volgens je gekozen namen.

Schakelnodebb.servicein bij opnieuw opstarten en start onmiddellijknodebb.service:

sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service

Controleer denodebb.servicestatus:

sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service

Gefeliciteerd! Je hebt met succes het NodeBB discussie platform geïnstalleerd en ingezet op een Fedora 29 systeem.Je zou nu toegang moeten kunnen krijgen tot je forum op je domeinen met je forum moeten kunnen interageren.

Links