GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat fórum NodeBB s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

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.


Ubuntu
  1. Zabezpečte Nginx pomocí Lets Encrypt na Ubuntu 20.04

  2. Jak nainstalovat Nextcloud s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

  3. Jak nainstalovat Magento 2 s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

  1. Jak nainstalovat Shopware s NGINX a nechat šifrovat na Ubuntu 18.04 LTS

  2. Nainstalujte Automad CMS s Nginx a Lets Encrypt SSL na Ubuntu 18.04

  3. Jak nainstalovat Grav CMS s Nginx a nechat šifrovat na Ubuntu 18.04 LTS

  1. Jak nainstalovat osTicket s Nginx na Ubuntu 18.04 LTS

  2. Jak nainstalovat X-Cart s Nginx a nechat šifrovat SSL na Ubuntu 18.04 LTS

  3. Jak nainstalovat Drupal s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS