NodeBB je moderní fórový software založený na Node.js, který používá MongoDB/Redis jako databázové platformy. Používá webové sokety pro okamžité interakce a upozornění v reálném čase.
V tomto tutoriálu se naučíme, jak nainstalovat fórum NodeBB na server založený na Ubuntu 20.04.
Předpoklady
-
Server založený na Ubuntu 20.04 s uživatelem bez oprávnění root s právy sudo.
-
Minimálně 2 GB RAM. Pokud má váš server pouze 1 GB RAM, je nejlepší povolit swapovací oddíl.
-
Ujistěte se, že je vše aktualizováno.
$ sudo apt update && sudo apt upgrade
-
Několik nezbytných balíčků. Některé z nich již budou na vašem serveru.
$ sudo apt install curl wget nano ca-certificates gnupg2 lsb-release
Krok 1 – Konfigurace brány firewall
Prvním krokem je konfigurace firewallu. Ubuntu je standardně dodáváno s ufw (Uncomplicated Firewall).
Zkontrolujte, zda je spuštěna brána firewall.
$ sudo ufw status
Měli byste získat následující výstup.
Status: inactive
Povolte port SSH, aby firewall při jeho povolení nepřerušil aktuální připojení.
$ sudo ufw allow OpenSSH
Povolit 27017
port pro server MongoDB a 4567
port pro provoz fóra NodeBB. Povolit HTTP
a HTTPS
také porty.
$ sudo ufw allow 27017
$ sudo ufw allow 4567
$ sudo ufw allow 80
$ sudo ufw allow 443
Povolte bránu firewall.
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Znovu zkontrolujte stav brány firewall.
$ sudo ufw status
Měli byste vidět podobný výstup.
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)
Krok 2 – Instalace Node.js
Zde nainstalujeme LTS verzi Node.js. Spuštěním následujících příkazů nainstalujte Node.js.
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
Zkontrolujte, zda je Node správně nainstalován.
$ node --version
Měli byste vidět podobný výstup.
v12.18.3
Zkontrolujte také npm.
$ npm --version
6.14.6
Krok 3 – Instalace MongoDB
MongoDB je výchozí databáze pro NodeBB. Místo MongoDB můžete také použít Redis. Obě databáze probereme v našem tutoriálu.
Úložiště MongoDB pro Ubuntu 20.04 ještě není připraveno a samotné Ubuntu nese velmi starou verzi. Pro náš účel použijeme úložiště MongoDB pro 18.04, které funguje dobře. Jakmile bude k dispozici oficiální podpora, můžete seznam balíčků aktualizovat nejnovějším úložištěm.
Importujte veřejný klíč pro MongoDB.
$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Přidejte úložiště MongoDB.
$ 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
Aktualizujte místní databázi balíčků.
$ sudo apt update
Nainstalujte MongoDB.
$ sudo apt install mongodb-org
Ověřte instalaci MongoDB.
$ mongod --version
db version v4.2.8
...
Spusťte službu MongoDB.
$ sudo systemctl start mongod
Povolte službu MongoDB.
$ sudo systemctl enable mongod
Zkontrolujte stav služby MongoDB.
$ sudo systemctl status mongod
Krok 4 – Konfigurace MongoDB
Správa Mongo se provádí prostřednictvím shellu MongoDB. Výchozí instalace MongoDB naslouchá na portu 27017.
Vstupte do prostředí MongoDB.
$ mongo
Přepněte na vestavěného admin
databáze.
> use admin
Vytvořte administrátora. Toto není totéž jako uživatel admin NodeBB.
> db.createUser( { user: "admin", pwd: "yourpassword", roles: [ { role: "root", db: "admin" } ] } )
Změňte zástupný symbol “yourpassword”
na své vlastní heslo.
Přidejte novou databázi pro NodeBB.
> use nodebb
Dále vytvořte nodebb
uživatel ke správě nodebb
databáze.
> db.createUser( { user: "nodebb", pwd: "yourpassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
readwrite
oprávnění umožňuje NodeBB ukládat a získávat data z nodebb
databáze. clustermonitor
oprávnění umožňuje NodeBB přístup pouze pro čtení ke statistikám databáze, které jsou viditelné prostřednictvím jeho administrátorského panelu.
Opusťte Mongo shell.
> quit()
Otevřete konfigurační soubor MongoDB pro úpravy.
$ sudo nano /etc/mongod.conf
Připojte následující řádek na konec souboru.
security:
authorization: enabled
Restartujte MongoDB a ověřte administrátora vytvořeného dříve.
$ sudo systemctl restart mongod
$ mongo -u admin -p yourpassword --authenticationDatabase=admin
Pokud bylo vše správně nakonfigurováno, měli byste vidět výzvu Mongo.
Krok 5 – Nainstalujte Git
Než přistoupíme k instalaci NodeBB, musíme nainstalovat Git.
Spusťte následující příkaz a nainstalujte Git.
$ sudo apt install git
Spuštěním následujících příkazů proveďte počáteční konfiguraci Git.
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Krok 6 – Instalace NodeBB
Není vhodné spouštět NodeBB jako uživatel root.
Vytvořte neprivilegovaného uživatele.
$ sudo adduser nodebb
Nastavte heslo dle vlastního výběru a přeskočte další možnosti.
Vytvořte adresář, kde bude sídlit vaše fórum NodeBB.
$ sudo mkdir /var/www/nodebb
Změňte vlastnictví složky na nově vytvořeného uživatele.
$ sudo chown -R nodebb:nodebb /var/www/nodebb
Přihlaste se k nově vytvořenému uživateli.
$ su nodebb
Přepněte se do instalačního adresáře NodeBB.
$ cd /var/www/nodebb
Abychom mohli nainstalovat NodeBB, musíme nejprve naklonovat jeho úložiště Github.
Naklonujte NodeBB do /var/www/nodebb
adresář. Tečka na konci příkazu odkazuje na aktuální adresář.
$ git clone -b v1.14.2 https://github.com/NodeBB/NodeBB.git .
Zde jsme naklonovali v1.14.2 NodeBB, což byla nejnovější stabilní verze v době psaní tutoriálu. Nejnovější stabilní větev najdete na stránce nejnovější verze NodeBB.
NodeBB se dodává s nástrojem příkazového řádku. K instalaci NodeBB použijte následující příkaz.
$ ./nodebb setup
Výchozí hodnotu můžete vybrat stisknutím klávesy Enter.
Pro hodnotu URL použitá pro přístup k tomuto NodeBB vyberte konečnou adresu URL, na které chcete vstoupit do fóra. Pokud budete k fóru přistupovat přes IP serveru, zadejte ji nebo zadejte celou doménu fóra. Zde zadáme http://forum.example.com
.
Pokračujte ve výběru výchozích hodnot, dokud nebudete vyzváni k zadání uživatelského jména MongoDB což je, když zadáte nodebb a heslo, které jste pro toto uživatelské jméno zvolili dříve při konfiguraci MongoDB. Vaše databáze nodebb by měl být vybrán. Budete také požádáni o vytvoření administrátorského uživatele a jeho podrobností.
Po dokončení nastavení spusťte následující příkaz pro spuštění NodeBB.
$ ./nodebb start
Vaše fórum nyní běží. Měli byste k němu mít přístup přes http://<yourserverip>:4567
.
Může se zobrazit chybová zpráva Zdá se, že vaše připojení k NodeBB bylo ztraceno. Počkejte prosím, než se pokusíme znovu připojit. Zdá se, že jsme vybrali výchozí adresu URL pro NodeBB http://forum.example.com
a ne http://<yourserverip
. Pokud však během nastavování zadáte IP adresu, už se vám chyba nezobrazí, ale budete muset konfiguraci znovu provést později, až si vyberete doménu pro své fórum.
Ukončete uživatele NodeBB.
$ exit
Krok 7 – Instalace Nginx
Ubuntu 20.04 standardně nese nejnovější stabilní verzi Nginx. Nainstalujeme to.
$ sudo apt install nginx
Zkontrolujte, zda je správně nainstalován.
$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
Spusťte a povolte Nginx.
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Otevřete IP adresu svého serveru ve webovém prohlížeči. Měli byste vidět následující stránku, která znamená, že váš server je v provozu.
Krok 8 – Konfigurace Nginx
Spusťte následující příkaz pro přidání konfiguračního souboru pro váš web.
$ sudo nano /etc/nginx/sites-available/nodebb.conf
Vložte následující kód do editoru.
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";
}
}
Stiskněte Ctrl + X
ukončete editor a zadejte Y
až budete vyzváni.
Po dokončení ověřte, zda je konfigurace Nginx správná.
$ sudo nginx -t
Znovu načtěte službu Nginx, abyste povolili konfiguraci.
$ sudo systemctl reload nginx
Navštivte http://forum.example.com
ve vašem prohlížeči otevřete fórum NodeBB.
Krok 9 – Spusťte NodeBB jako systémovou službu
Služba NodeBB se po restartu systému nespustí. Abychom se vyhnuli spouštění NodeBB pokaždé, musíme jej nainstalovat jako systémovou službu.
Nejprve zastavte službu NodeBB.
$ ./nodebb stop
Spuštěním následujícího příkazu vytvořte a upravte nodebb.service
konfigurační soubor systemd unit.
$ sudo nano /etc/systemd/system/nodebb.service
Vložte následující kód do editoru.
[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
Zde jsme zvolili uživatelské jméno jako nodebb
který jsme vytvořili v kroku 6 a cestu, kterou jsme zvolili pro instalaci NodeBB do něj.
Povolte službu NodeBB.
$ sudo systemctl enable nodebb
Spusťte službu NodeBB.
$ sudo systemctl start nodebb
Zkontrolujte stav služby.
$ sudo systemctl status nodebb
Krok 10 – Získejte certifikát Let’s Encrypt SSL
Zabezpečení vašeho fóra NodeBB pomocí HTTPS je nezbytným krokem k zabezpečení provozu vašeho webu. V tomto tutoriálu budeme k instalaci SSL používat klienta Certbot.
Nejprve si nainstalujte nástroj Certbot.
$ sudo apt install certbot python3-certbot-nginx
Vygenerujte certifikáty.
$ sudo certbot --nginx -d forum.example.com
Pokud je to vaše první spuštění Certbota ve vašem systému, budete požádáni o e-mailovou adresu a souhlas s podmínkami služby. Budete také dotázáni, zda souhlasíte se sdílením dat s nadací EFF, kterým můžete říci ne. Poté bude Certbot komunikovat se servery Let's Encrypt a spustí výzvu k ověření vašich domén.
Pokud to bude úspěšné, budete dotázáni, jak zacházet s přesměrováním HTTPS.
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):
Vyberte Secure
vyberte a stiskněte enter. Tím zajistíte, že všechny požadavky na http doménu budou správně přesměrovány na https verzi. Poté budou vytvořeny vaše certifikáty a vaše konfigurační soubory Nginx budou aktualizovány pomocí nastavení SSL.
Vaše certifikáty jsou připraveny a nyní můžete otevřít svůj web na adrese https://forum.example.com
Krok 11 – Ověřte automatické obnovení SSL
Toto je poslední krok před ukončením tohoto tutoriálu.
Zkontrolujte proces obnovy provedením procesu obnovy nasucho.
$ sudo certbot renew --dry-run
Pokud se neobjeví žádné chyby, znamená to, že jste nastaveni. Certbot za vás automaticky obnoví vaše certifikáty. O vypršení platnosti certifikátu vám bude zasláno e-mailové upozornění.
Závěr
To je k tomuto tutoriálu vše. Nastavení vašeho fóra NodeBB je dokončeno. Pokud máte nějaké dotazy, napište je do komentářů níže.