installeer je NodeBB Forum met Nginx en Let’s Encrypt SSL op Ubuntu 20.04 LTS
NodeBB is een moderne forum software aangedreven door Node.js die MongoDB/Redis gebruikt als databank platforms. Het gebruikt web sockets voor directe interacties en real-time meldingen.
In deze handleiding leren we hoe je een NodeBB forum kunt installeren op een Ubuntu 20.04 gebaseerde server.
Vereisten
Een Ubuntu 20.04 gebaseerde server met een niet-root gebruiker met sudo privileges.
Minimaal 2GB RAM. Als je server slechts 1GB RAM heeft, kun je het beste een swap partitie inschakelen.
Zorg ervoor dat alles bijgewerkt is.
$ sudo apt update && sudo apt upgrade
Enkele essentiële pakketten. Sommige daarvan zullen al op je server staan.
$ sudo apt install curl wget nano ca-certificates gnupg2 lsb-release
Stap 1 - Firewall instellen
De eerste stap is het instellen van de firewall. Ubuntu wordt standaard geleverd met ufw (Uncomplicated Firewall).
Controleer of de firewall draait.
$ sudo ufw status
Je zou de volgende uitvoer moeten krijgen.
Status: inactive
Sta SSH poort toe, zodat de firewall de huidige verbinding niet verbreekt bij het inschakelen ervan.
$ sudo ufw allow OpenSSH
Sta 27017
poort toe voor de MongoDB server en 4567
poort voor het runnen van het NodeBB forum. Sta ook HTTP
en HTTPS
poorten toe.
$ sudo ufw allow 27017
$ sudo ufw allow 4567
$ sudo ufw allow 80
$ sudo ufw allow 443
Schakel de firewall in.
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Controleer opnieuw de status van de firewall.
$ sudo ufw status
Je zou een gelijkaardige uitvoer moeten zien.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
27017 ALLOW Anywhere
4567 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
27017 (v6) ALLOW Anywhere (v6)
4567 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Stap 2 - Installeer Node.js
We zullen hier de LTS versie van Node.js installeren. Voer de volgende commando's uit om Node.js te installeren.
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
Controleer of Node goed geïnstalleerd is.
$ node --version
Je zou een soortgelijke uitvoer moeten zien.
v12.18.3
Controleer ook npm.
$ npm --version
6.14.6
Stap 3 - Installeer MongoDB
MongoDB is de standaard databank voor NodeBB. Je kunt ook Redis gebruiken in plaats van MongoDB. We zullen beide databases in onze handleiding behandelen.
De repository van MongoDB voor Ubuntu 20.04 is nog niet klaar en Ubuntu zelf draagt een erg oude versie. Voor ons doel zullen we de MongoDB repository voor 18.04 gebruiken, die prima werkt. Je kunt de pakketlijst bijwerken met de nieuwste repository zodra officiële ondersteuning beschikbaar is.
Importeer de publieke sleutel voor MongoDB.
$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Voeg de MongoDB repository toe.
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
Werk de lokale pakketdatabase bij.
$ sudo apt update
Installeer MongoDB.
$ sudo apt install mongodb-org
Verifieer de installatie van MongoDB.
$ mongod --version
db version v4.2.8
...
Start de MongoDB dienst.
$ sudo systemctl start mongod
Schakel de MongoDB dienst in.
$ sudo systemctl enable mongod
Controleer de status van de MongoDB dienst.
$ sudo systemctl status mongod
Stap 4 - MongoDB instellen
Mongo beheer gebeurt via de MongoDB shell. De standaard installatie van MongoDB luistert op poort 27017.
Ga naar de MongoDB shell.
$ mongo
Schakel over naar de ingebouwde admin
databank.
> use admin
Maak een administratieve gebruiker aan. Dit is niet dezelfde als de NodeBB admin gebruiker.
> db.createUser( { user: "admin", pwd: "yourpassword", roles: [ { role: "root", db: "admin" } ] } )
Verander de plaatshouder “yourpassword”
in je eigen wachtwoord.
Voeg een nieuwe databank voor NodeBB toe.
> use nodebb
Maak vervolgens de gebruiker nodebb
aan om de database nodebb
te beheren.
> db.createUser( { user: "nodebb", pwd: "yourpassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
De readwrite
toestemming staat NodeBB toe gegevens op te slaan en op te halen uit de nodebb
databank. De clustermonitor
toestemming geeft NodeBB alleen-lezen toegang tot de databasestatistieken die zichtbaar zijn via zijn Admin paneel.
Verlaat de Mongo shell.
> quit()
Open het MongoDB configuratiebestand om het te bewerken.
$ sudo nano /etc/mongod.conf
Voeg de volgende regel toe aan het eind van het bestand.
security:
authorization: enabled
Start MongoDB opnieuw op en controleer de eerder aangemaakte administratieve gebruiker.
$ sudo systemctl restart mongod
$ mongo -u admin -p yourpassword --authenticationDatabase=admin
Je zou de Mongo prompt moeten zien als alles correct werd geconfigureerd.
Stap 5 - Git installeren
Voor we verder gaan met de installatie van NodeBB, moeten we Git installeren.
Voer het volgende commando uit om Git te installeren.
$ sudo apt install git
Voer de volgende commando's uit om de eerste configuratie van Git uit te voeren.
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Stap 6 - Installeer NodeBB
Het is niet aan te raden NodeBB als de root gebruiker te draaien.
Maak een ongeprivilegieerde gebruiker aan.
$ sudo adduser nodebb
Stel een wachtwoord naar keuze in en sla de andere opties over.
Maak de map waar je NodeBB forum komt te staan.
$ sudo mkdir /var/www/nodebb
Verander het eigendom van de map in de nieuw aangemaakte gebruiker.
$ sudo chown -R nodebb:nodebb /var/www/nodebb
Log in op de nieuw aangemaakte gebruiker.
$ su nodebb
Ga naar de NodeBB installatiemap.
$ cd /var/www/nodebb
Om NodeBB te installeren moeten we eerst de Github repository klonen.
Kloon NodeBB naar de /var/www/nodebb
map. De punt aan het eind van het commando verwijst naar de huidige directory.
$ git clone -b v1.14.2 https://github.com/NodeBB/NodeBB.git .
Hier hebben we de v1.14.2 van NodeBB gekloond, wat de laatste stabiele versie was op het moment van schrijven van de handleiding. Je kunt de laatste stabiele branch vinden op NodeBB's Latest Release pagina.
NodeBB wordt geleverd met een command-line hulpprogramma. Gebruik het volgende commando om NodeBB te installeren.
$ ./nodebb setup
Je kunt op enter drukken om de standaardwaarde te kiezen.
Kies voor de waarde van URL die gebruikt wordt om dit NodeBB te benaderen de uiteindelijke URL, waar je het forum op wilt benaderen. Als je het forum via het IP van je server wilt benaderen, voer dat dan in of voer het volledige domein van het forum in. Hier voeren we http://forum.example.com
in .
Blijf standaardwaarden kiezen tot je gevraagd wordt om de gebruikersnaam voor MongoDB, dat is wanneer je nodebb invoert en het wachtwoord dat je eerder voor die gebruikersnaam koos bij het configureren van MongoDB. Je database nodebb moet gekozen zijn. Je wordt ook gevraagd een administrator gebruiker aan te maken en de gegevens daarvan.
Als de instelling voltooid is, voer je het volgende commando uit om NodeBB te starten.
$ ./nodebb start
Je forum draait nu. Je zou het moeten kunnen benaderen via http://<yourserverip>:4567
.
Het kan zijn dat je een foutmelding ziet met de tekst Looks like your connection to NodeBB was lost, please wait while we try to reconnect. Dat lijkt te komen omdat we de standaard URL kozen voor NodeBB http://forum.example.com
en niet voor http://<yourserverip
. Maar als je tijdens de setup het IP adres invult, krijg je de foutmelding niet meer, maar moet je later opnieuw configureren nadat je een domein voor je forum gekozen hebt.
Sluit de NodeBB gebruiker af.
$ exit
Stap 7 - Installeer Nginx
Ubuntu 20.04 draagt standaard de nieuwste stabiele versie van Nginx. We zullen dat installeren.
$ sudo apt install nginx
Controleer of het goed geïnstalleerd is.
$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
Start Nginx en schakel het in.
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Open het IP adres van je server in je web browser. Je zou de volgende pagina moeten zien, wat betekent dat je server up and running is.
Stap 8 - Configureer Nginx
Voer het volgende commando uit om een configuratiebestand voor je site toe te voegen.
$ sudo nano /etc/nginx/sites-available/nodebb.conf
Plak de volgende code in de editor.
server {
listen 80;
server_name forum.example.com;
access_log /var/log/nginx/forum.example.com.access.log;
error_log /var/log/nginx/forum.example.com.error.log;
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";
}
}
Druk op Ctrl + X
om de editor te verlaten en voer Y
in als daarom gevraagd wordt.
Als je klaar bent, controleer je of de Nginx configuratie juist is.
$ sudo nginx -t
Herlaad Nginx service om de configuratie in te schakelen.
$ sudo systemctl reload nginx
Ga in je browser naar http://forum.example.com
om het NodeBB forum te openen.
Stap 9 - Draai NodeBB als systeemdienst
De NodeBB dienst loopt niet meer na een herstart van het systeem. Om te voorkomen dat NodeBB elke keer start, moeten we het als een Systeemdienst installeren.
Stop eerst de NodeBB dienst.
$ ./nodebb stop
Voer het volgende commando uit om het configuratiebestand nodebb.service
systemd unit aan te maken en te bewerken.
$ sudo nano /etc/systemd/system/nodebb.service
Plak de volgende code in de editor.
[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
Hier hebben we de gebruikersnaam gekozen als nodebb
die we in stap 6 aanmaakten en het pad dat we gekozen hebben om er NodeBB in te installeren.
Schakel de NodeBB dienst in.
$ sudo systemctl enable nodebb
Start de NodeBB dienst.
$ sudo systemctl start nodebb
Controleer de status van de dienst.
$ sudo systemctl status nodebb
Stap 10 - Verkrijg een Let's Encrypt SSL certificaat
Je NodeBB forum beveiligen met HTTPS is een noodzakelijke stap om het verkeer op je site te beveiligen. Voor deze handleiding gebruiken we het Certbot programma om SSL te installeren.
Installeer daarvoor eerst het Certbot gereedschap.
$ sudo apt install certbot python3-certbot-nginx
Genereer de certificaten.
$ sudo certbot --nginx -d forum.example.com
Als dit de eerste keer is dat je Certbot op je systeem draait, wordt je gevraagd om een e-mail adres en om akkoord te gaan met de gebruiksvoorwaarden. Je wordt ook gevraagd of je ermee instemt gegevens te delen met stichting EFF, waar je nee op kunt zeggen. Als je dat gedaan hebt, communiceert Certbot met de Let's Encrypt servers en voert een uitdaging uit om je domeinen te verifiëren.
Als dat gelukt is, wordt je gevraagd hoe je HTTPS omleidingen wilt afhandelen.
Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Kies Secure
en druk op enter. Dit zorgt ervoor dat alle verzoeken aan http domeinen goed worden doorgestuurd naar de https versie. Je certificaten worden dan aangemaakt en je Nginx configuratiebestanden worden bijgewerkt met SSL instellingen.
Je certificaten zijn klaar en je kunt je site nu openen door te gaan naar https://forum.example.com
Stap 11 - Verifieer SSL auto-vernieuwing
Dit is de laatste stap voor we deze handleiding beëindigen.
Controleer het vernieuwingsproces door het even droog te draaien.
$ sudo certbot renew --dry-run
Als je geen fouten krijgt, betekent dit dat je klaar bent. Certbot zal automatisch je certificaten voor je vernieuwen. Je krijgt een waarschuwing per e-mail over het verlopen van het certificaat.
Conclusie
Dat was alles voor deze handleiding. De installatie van je NodeBB forum is voltooid. Als je nog vragen hebt, stel ze dan in de commentaar hieronder.