Table of Contents

Node.js - průvodce pro začátečníky

Node.js je běhové prostředí JavaScriptu pro tvorbu serverových aplikací. Server obsahuje předinstalované Node.js 22 LTS, npm, správce procesů PM2, git a build-essential. Žádný průvodce nastavením, žádná konfigurace – stačí se připojit přes SSH a začít nasazovat aplikace.


Krok 1 – Ověřte, že Node.js funguje

IP adresa a heslo root vašeho serveru jsou uvedeny na stránce Server Details v klientském panelu. Připojte se k serveru přes SSH:

ssh root@your.server.ip

Ověřte, že jsou Node.js a PM2 nainstalované:

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

Pokud jste server umístili za router VyOS v privátní síti, buď nastavte přesměrování portů (22, 80 a 443), aby byla aplikace dostupná z internetu, nebo se připojte přes VPN a k serveru přistupujte přes jeho privátní IP.


Krok 2 – Nasazení první aplikace

Vytvořte jednoduchý HTTP server a otestujte, že vše 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

Otevřete http://your.server.ip:3000 v prohlížeči. Měli byste vidět uvítací zprávu. Stiskněte Ctrl+C pro zastavení serveru.

Nasazení z Gitu

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

Krok 3 – Nastavení reverzní proxy a SSL (volitelné)

Chcete-li aplikaci obsluhovat na portu 80/443 s doménovým jménem, nainstalujte Nginx jako 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

Poté zapněte bezplatné HTTPS s Let’s Encrypt:

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

Certbot automaticky nastaví SSL a automatickou obnovu.


PM2 – správce procesů

Spuštění node app.js přímo zastaví aplikaci, když zavřete terminál nebo když spadne. PM2 udržuje aplikaci v chodu na pozadí, po pádu ji restartuje a po restartu serveru ji automaticky spustí.

Základní pří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é spuštění po restartu

PM2 je předkonfigurovaný ke spuštění při startu. Po spuštění aplikací uložte seznam procesů, aby se po restartu serveru automaticky obnovily:

pm2 save

Spusťte pm2 save znovu pokaždé, když přidáte nebo odeberete aplikace.

Režim cluster

Spusťte více instancí aplikace a využijte všechna dostupná jádra 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

Zobrazení využití CPU a paměti v reálném čase:

pm2 monit

Po instalaci

Fail2Ban – ochrana proti útokům hrubou silou

Váš server obsahuje Fail2Ban předkonfigurovaný k ochraně SSH proti útokům hrubou silou.

Pravidlo Max. počet pokusů Doba blokace
SSH5 neúspěšných přihlášení10 minut

Užitečné příkazy:

# Check banned IPs
fail2ban-client status sshd

# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4

Pokud se omylem zablokujete, připojte se přes konzoli VNC v klientském panelu a odblokujte svou IP.

Správa služeb

PM2 spravuje vaše aplikace Node.js. Nginx (pokud je nainstalován jako reverzní proxy) běží přes 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

Nativní moduly

build-essential (gcc, g++, make) je předinstalovaný, takže balíčky npm s nativními doplňky C/C++ se kompilují bez problémů:

npm install bcrypt
npm install sharp
npm install sqlite3

Aktualizace

# 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ý software

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

Řešení problémů

Problém Řešení
Aplikace spadne a nerestartuje se Použijte PM2 místo node app.js: pm2 start app.js
Aplikace po restartu neběží Spusťte pm2 save po spuštění aplikací pro zapnutí automatického startu
Port je už používán Zjistěte, co ho používá: ss -tlnp | grep :3000
npm install selže s chybami sestavení build-essential je předinstalovaný. Zkontrolujte chybu – u některých balíčků může být potřeba apt install python3
No space left on device Kontrola disku: df -h /. Vyčištění cache npm: npm cache clean --force
Blokováno službou Fail2Ban Odblokujte svou IP přes konzoli VNC v klientském panelu
Zapomenuté heslo root Obnovte jej přes konzoli VNC v klientském panelu