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 |
|---|---|---|
| SSH | 5 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 |
|---|---|
| Ubuntu | 24.04 LTS |
| Node.js | 22.x LTS |
| npm | 10.x |
| PM2 | 6.x |
| git | 2.43 |
| build-essential | gcc 13.3 |
| Fail2Ban | 1.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 |