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 |
|---|---|---|
| SSH | 5 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 |
|---|---|
| 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 |
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 |