Hoe installeer ik het NodeBB-forum op FreeBSD 12

NodeBB is een op Node.js gebaseerde forumsoftware. Het maakt gebruik van webaansluitingen voor directe interacties en realtime meldingen. De NodeBB-broncode wordt openbaar gehost op Github . Deze gids leidt u door het installatieproces van NodeBB op een nieuwe FreeBSD 12 Vultr-instantie door Node.js, MongoDB als database, Nginx als reverse proxy en Acme.sh voor SSL-certificaten te gebruiken.

Vereisten

NodeBB vereist dat de volgende software wordt geïnstalleerd:

  • Node.js versie 6.9.0 of hoger
  • MongoDB versie 2.6 of hoger
  • Nginx
  • Git
  • Minimaal 1024 MB RAM
  • Domeinnaam met A/ AAAArecords ingesteld

Voordat je begint

Controleer de FreeBSD-versie.

uname -ro
# FreeBSD 12.0-RELEASE

Zorg ervoor dat uw FreeBSD-systeem up-to-date is.

freebsd-update fetch install
pkg update && pkg upgrade -y

Installeer de benodigde pakketten als ze niet aanwezig zijn op uw systeem.

pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips

Maak een nieuw gebruikersaccount aan met uw favoriete gebruikersnaam (we zullen gebruiken 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!

Voer de visudoopdracht uit en maak een commentaar op de %wheel ALL=(ALL) ALLregel, zodat leden van de wheelgroep elke opdracht kunnen uitvoeren.

visudo

# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL

Schakel nu over naar uw nieuw aangemaakte gebruiker met su.

su - johndoe

OPMERKING: vervang johndoedoor uw gebruikersnaam.

Stel de tijdzone in.

sudo tzsetup

Installeer Node.js

NodeBB wordt aangestuurd door Node.js en moet dus worden geïnstalleerd. De installatie van de huidige LTS-versie van Node.js wordt aanbevolen.

Installeer Node.js en npm.

sudo pkg install -y node10 npm-node10

Controleer de versies.

node -v && npm -v
# v10.15.3
# 6.9.0

Installeer en configureer MongoDB

MongoDB is de standaarddatabase voor NodeBB.

Installeer MongoDB.

sudo pkg install -y mongodb40

Controleer de versie.

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

Schakel MongoDB in en start het.

sudo sysrc mongod_enable=yes
sudo service mongod start

Maak een database en gebruiker voor NodeBB.

Maak eerst verbinding met MongoDB.

mongo

Schakel over naar de ingebouwde admindatabase.

> 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 tijdelijke aanduiding <Enter a secure password>door uw eigen geselecteerde wachtwoord.

Voeg een nieuwe database toe met de naam nodebb.

> use nodebb

De database wordt gemaakt en de context wordt gewijzigd nodebb. Maak vervolgens de nodebbgebruiker met de juiste rechten.

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

OPMERKING: Vervang nogmaals de tijdelijke aanduiding <Enter a secure password>door uw eigen geselecteerde wachtwoord.

Verlaat de Mongo-shell.

> quit()

Start MongoDB opnieuw op en zorg ervoor dat de eerder gemaakte administratieve gebruiker verbinding kan maken.

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

Installeer en configureer Nginx

Installeer Nginx.

sudo pkg install -y nginx

Controleer de versie.

nginx -v
# nginx version: nginx/1.14.2

Schakel Nginx in en start het.

sudo sysrc nginx_enable=yes
sudo service nginx start

NodeBB draait standaard op poort 4567. Om typen te voorkomen http://example.com:4567, zullen we Nginx configureren als een reverse proxy voor de NodeBB-applicatie. Elk verzoek over poort 80of 443, als SSL wordt gebruikt, wordt doorgestuurd naar poort 4567.

Voer het uit sudo vim /usr/local/etc/nginx/nodebb.confen vul het in met de basis omgekeerde proxyconfiguratie hieronder.

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";
  }

}

Werk in de bovenstaande configuratie de server_namerichtlijn bij met uw domein / hostnaam.

Sla het bestand op en sluit af met :+ W+ Q.

Nu moeten we opnemen nodebb.confin het hoofdbestand nginx.conf.

Ren sudo vim /usr/local/etc/nginx/nginx.confen voeg de volgende regel toe aan het http {}blok.

include nodebb.conf;

Controleer de configuratie.

sudo nginx -t

Herlaad Nginx.

sudo service nginx reload

Installeer de Acme.sh-client en verkrijg een Let's Encrypt-certificaat (optioneel)

Het beveiligen van uw forum met HTTPS is niet nodig, maar het beveiligt het verkeer van uw site. Acme.sh is pure unix shell-software voor het verkrijgen van SSL-certificaten van Let's Encrypt zonder afhankelijkheden.

Download en installeer 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 [email protected]
cd ~

Controleer de versie.

/etc/letsencrypt/acme.sh --version
# v2.8.1

Verkrijgen van RSA- en ECDSA-certificaten voor 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

Na het uitvoeren van de bovenstaande opdrachten, bevinden uw certificaten en sleutels zich in:

  • RSA: /etc/letsencrypt/forum.example.com.
  • ECC / ECDSA: /etc/letsencrypt/forum.example.com_ecc.

Na het verkrijgen van certificaten van Let's Encrypt, moeten we Nginx configureren om ze te gebruiken.

Voer sudo vim /usr/local/etc/nginx/nodebb.confopnieuw uit en configureer Nginx als een HTTPS-omgekeerde 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";
  }

}

Controleer de configuratie.

sudo nginx -t

Herlaad Nginx.

sudo service nginx reload

Installeer NodeBB

Maak een documenthoofdmap.

sudo mkdir -p /usr/local/www/nodebb

Verander het eigendom van de /usr/local/www/nodebbdirectory in johndoe.

sudo chown -R johndoe:johndoe /usr/local/www/nodebb

Navigeer naar de hoofdmap van het document.

cd /usr/local/www/nodebb

Kloon de nieuwste NodeBB in de documenthoofdmap.

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

Voer de NodeBB-installatieopdracht uit en beantwoord elke vraag wanneer daarom wordt gevraagd.

./nodebb setup

Nadat de installatie van NodeBB is voltooid, voert ./nodebb startu uit om uw NodeBB-server handmatig te starten.

./nodebb start

Na deze opdracht krijgt u toegang tot uw NodeBB-foruminstantie in een webbrowser.

Voer NodeBB uit met PM2

Wanneer gestart via ./nodebb start, zal NodeBB niet automatisch opnieuw opstarten wanneer het systeem opnieuw opstart. Om dat te voorkomen, moeten we NodeBB instellen als systeemservice.

Stop NodeBB als het draait.

./nodebb stop

Installeer PM2 wereldwijd.

sudo npm install pm2 -g

Controleer de versie.

pm2 -v
# 3.5.0

Navigeer naar de NodeBB-documentroot.

cd /usr/local/www/nodebb

Start NodeBB via PM2.

pm2 start app.js

Maak een lijst van het NodeBB-proces.

pm2 ls

Detecteer het beschikbare init-systeem.

pm2 startup

Kopieer en plak de uitvoer van deze opdracht in de CLI om uw opstarthaak in te stellen.

Sla uw proceslijst op.

pm2 save

Dat is het. Uw NodeBB-instantie is nu actief.



Leave a Comment

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.