Table of Contents

Node.js - príručka pre začiatočníkov

Node.js je behové prostredie JavaScriptu na tvorbu serverových aplikácií. Server obsahuje predinštalované Node.js 22 LTS, npm, správcu procesov PM2, git a build-essential. Žiadny sprievodca nastavením, žiadna konfigurácia – stačí sa pripojiť cez SSH a začať nasadzovať aplikácie.


Krok 1 – Overte, že Node.js funguje

IP adresa a heslo root vášho servera sú uvedené na stránke Server Details v klientskom paneli. Pripojte sa k serveru cez SSH:

ssh root@your.server.ip

Overte, že sú Node.js a PM2 nainštalované:

node --version
npm --version
pm2 --version

Ak ste server umiestnili za router VyOS v privátnej sieti, buď nastavte presmerovanie portov (22, 80 a 443), aby bola aplikácia dostupná z internetu, alebo sa pripojte cez VPN a k serveru pristupujte cez jeho privátnu IP.


Krok 2 – Nasadenie prvej aplikácie

Vytvorte jednoduchý HTTP server a otestujte, že všetko funguje:

mkdir ~/myapp && cd ~/myapp

cat > app.js << 'EOF'
const http = require('http');
const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello from Node.js ' + process.version + '\n');
});
server.listen(3000, () => console.log('Server running on port 3000'));
EOF

node app.js

Otvorte http://your.server.ip:3000 v prehliadači. Mali by ste vidieť uvítaciu správu. Stlačte Ctrl+C na zastavenie servera.

Nasadenie z Gitu

cd /root
git clone https://github.com/your-username/your-project.git
cd your-project
npm install

Krok 3 – Nastavenie reverznej proxy a SSL (voliteľné)

Ak chcete aplikáciu obsluhovať na porte 80/443 s doménovým menom, nainštalujte Nginx ako reverznú proxy:

apt update && apt install -y nginx

cat > /etc/nginx/sites-available/myapp << 'EOF'
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_cache_bypass $http_upgrade;
    }
}
EOF

ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx

Potom zapnite bezplatné HTTPS s Let’s Encrypt:

apt install -y certbot python3-certbot-nginx
certbot --nginx -d your-domain.com

Certbot automaticky nastaví SSL a automatickú obnovu.


PM2 – správca procesov

Spustenie node app.js priamo zastaví aplikáciu, keď zavriete terminál alebo keď spadne. PM2 udržiava aplikáciu v chode na pozadí, po páde ju reštartuje a po reštarte servera ju automaticky spustí.

Základné príkazy:

# Start your application
pm2 start app.js --name myapp

# View running applications
pm2 list

# View logs
pm2 logs myapp

# Restart / stop / remove
pm2 restart myapp
pm2 stop myapp
pm2 delete myapp

Automatické spustenie po reštarte

PM2 je predkonfigurovaný na spustenie pri štarte. Po spustení aplikácií uložte zoznam procesov, aby sa po reštarte servera automaticky obnovili:

pm2 save

Spustite pm2 save znova vždy, keď pridáte alebo odoberiete aplikácie.

Režim cluster

Spustite viac inštancií aplikácie a využite všetky dostupné jadrá CPU:

# Start with one instance per CPU core
pm2 start app.js -i max --name myapp

# Or specify the number of instances
pm2 start app.js -i 2 --name myapp

Monitoring

Zobrazenie využitia CPU a pamäte v reálnom čase:

pm2 monit

Po inštalácii

Fail2Ban – ochrana proti útokom hrubou silou

Váš server obsahuje Fail2Ban predkonfigurovaný na ochranu SSH proti útokom hrubou silou.

Pravidlo Max. počet pokusov Doba blokovania
SSH5 neúspešných prihlásení10 minút

Užitočné príkazy:

# Check banned IPs
fail2ban-client status sshd

# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4

Ak sa omylom zablokujete, pripojte sa cez konzolu VNC v klientskom paneli a odblokujte svoju IP.

Správa služieb

PM2 spravuje vaše aplikácie Node.js. Nginx (ak je nainštalovaný ako reverzná proxy) beží cez systemd:

# PM2 daemon
pm2 resurrect              # restore saved process list
pm2 status                 # overview

# Nginx reverse proxy
systemctl status nginx
systemctl reload nginx
journalctl -u nginx -n 100

Natívne moduly

build-essential (gcc, g++, make) je predinštalovaný, takže balíčky npm s natívnymi doplnkami C/C++ sa kompilujú bez problémov:

npm install bcrypt
npm install sharp
npm install sqlite3

Aktualizácie

# Update Node.js
apt update && apt install -y nodejs

# Update PM2
npm install -g pm2
pm2 update

# Update OS packages
apt update && apt upgrade -y

Zahrnutý softvér

Komponent Verzia
Ubuntu24.04 LTS
Node.js22.x LTS
npm10.x
PM26.x
git2.43
build-essentialgcc 13.3
Fail2Ban1.0.2

Riešenie problémov

Problém Riešenie
Aplikácia spadne a nereštartuje sa Použite PM2 namiesto node app.js: pm2 start app.js
Aplikácia po reštarte nebeží Spustite pm2 save po spustení aplikácií na zapnutie automatického štartu
Port sa už používa Zistite, čo ho používa: ss -tlnp | grep :3000
npm install zlyhá s chybami zostavenia build-essential je predinštalovaný. Skontrolujte chybu – pri niektorých balíčkoch môže byť potrebný apt install python3
No space left on device Kontrola disku: df -h /. Vyčistenie cache npm: npm cache clean --force
Zablokované službou Fail2Ban Odblokujte svoju IP cez konzolu VNC v klientskom paneli
Zabudnuté heslo root Obnovte ho cez konzolu VNC v klientskom paneli