Debian/Ubuntu - instalcja nodeBB + mongoDB + systemD + nginx

Dawno nic nie było :) nowego na stronie. Tak więc na dziś szybki tekst o instalacji uważam niezłej aplikacji do forum napisaniej w nodejs.

Domyślnie nodeBB lata razem z Redis, jednak ja postawilem na  mongoDB.

Oczywiście ulubiony nginx będzie na froncie :).

Na początek pare paczek systemowych

apt-get install git build-essential imagemagick mongodb

I nodejs:

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
apt-get install -y nodejs

Odpalamy mongo:

mongo

Zakładamy baze:

use forum

Dodajemy usera z hasłem

db.addUser( { user: "nazwa_usera", pwd: "super_tajne_haslo", roles: [ "readWrite" ] } )

Powyżej składnia dla mongoDB 2.4 – taki jaki jest w Debian Jessie

Konfigurujemy autoryzacje do bazy mongo:

vi /etc/mongodb.conf

zmieniamy
#auth = true

na

auth = true

Gdzieś w systemie pobieramy nodebb

cd /web
mkdir -p /web/forum/log
git clone git://github.com/NodeBB/NodeBB.git app

Zaczynamy konfigurcje – będą pytania o dostęp do mongo jak i o pierwszego usera forum – naszego admina. Jako, iż będzie nignx to przy konfiguracji podajemy „normalny adres forum” bez portów etc.. np. https://forum.8px.pl

cd app
node app --setup

W zasadzie forum już lata :)

Czas na systemD. Na początek dodajemy usera do działania aplikacji

useradd -m -d /web/forum/app forum
chown -R forum:forum /web/forum/app

i skrypt startowy

vi /etc/systemd/system/mojeforum.service

i zawartość:

[Unit]
Description=Nasze super forum
After=system.slice multi-user.target
[Service]
Type=simple
User=forum
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node
SyslogFacility=local0
WorkingDirectory=/web/forum/app
ExecStart=/usr/bin/node app.js
Restart=always
[Install]
WantedBy=multi-user.target

Uruchamiamy forum oraz dodajemy autostart

service nodebb start
systemctl enable nodebb.service

Teraz kilka wpisów dla nginx – jest to tylko wycinek konfiguracji.

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 $host;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://127.0.0.1:4567;
    proxy_redirect off;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Gotowe :)