Node.js - ghid de inițiere
Node.js este un mediu de rulare JavaScript pentru construirea aplicațiilor server. Serverul vine cu Node.js 22 LTS, npm, managerul de procese PM2, git și build-essential preinstalate. Fără asistent de configurare, fără configurație – doar conectați-vă prin SSH și începeți să implementați aplicațiile.
Pasul 1 – Verificați funcționarea Node.js
Adresa IP și parola root a serverului sunt afișate pe pagina Server Details din panoul clientului. Conectați-vă la server prin SSH:
ssh root@your.server.ip
Verificați că Node.js și PM2 sunt instalate:
node --version
npm --version
pm2 --version
Dacă ați plasat serverul în spatele unui router VyOS într-o rețea privată, configurați redirecționarea porturilor (22, 80 și 443) pentru ca aplicația să fie accesibilă de pe internet sau conectați-vă prin VPN și accesați serverul pe IP-ul privat.
Pasul 2 – Implementarea primei aplicații
Creați un server HTTP simplu pentru a verifica dacă totul funcționează:
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
Deschideți http://your.server.ip:3000 în browser. Ar trebui să vedeți mesajul de salut. Apăsați Ctrl+C pentru a opri serverul.
Implementare din Git
cd /root
git clone https://github.com/your-username/your-project.git
cd your-project
npm install
Pasul 3 – Configurarea proxy-ului invers și SSL (opțional)
Pentru a servi aplicația pe portul 80/443 cu un nume de domeniu, instalați Nginx ca proxy invers:
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
Apoi activați HTTPS gratuit cu Let’s Encrypt:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d your-domain.com
Certbot va configura automat SSL și reînnoirea automată.
PM2 – manager de procese
Rularea node app.js direct oprește aplicația când închideți terminalul sau dacă se blochează. PM2 menține aplicația în fundal, o repornește la blocare și o pornește automat după repornirea serverului.
Comenzi de bază:
# 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
Pornire automată după repornire
PM2 este preconfigurat să pornească la boot. După pornirea aplicațiilor, salvați lista de procese pentru ca acestea să repornească automat după repornirea serverului:
pm2 save
Rulați pm2 save din nou de fiecare dată când adăugați sau eliminați aplicații.
Mod cluster
Rulați mai multe instanțe ale aplicației pentru a folosi toate nucleele CPU disponibile:
# 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
Monitorizare
Vizualizați în timp real utilizarea CPU și a memoriei:
pm2 monit
După instalare
Fail2Ban – protecție împotriva atacurilor brute-force
Serverul dumneavoastră include Fail2Ban preconfigurat pentru a proteja SSH împotriva atacurilor brute-force.
| Regulă | Încercări maxime | Durata blocării |
|---|---|---|
| SSH | 5 autentificări eșuate | 10 minute |
Comenzi utile:
# Check banned IPs
fail2ban-client status sshd
# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4
Dacă vă blocați accidental, conectați-vă prin consola VNC din panoul clientului și deblocați-vă IP-ul.
Administrarea serviciilor
PM2 administrează aplicațiile Node.js. Nginx (dacă este instalat ca proxy invers) rulează prin 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
Module native
build-essential (gcc, g++, make) este preinstalat, astfel încât pachetele npm cu addon-uri native C/C++ se compilează fără probleme:
npm install bcrypt
npm install sharp
npm install sqlite3
Actualizări
# 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
Software inclus
| Componentă | Versiune |
|---|---|
| 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 |
Depanare
| Problemă | Soluție |
|---|---|
| Aplicația se blochează și nu repornește | Folosiți PM2 în loc de node app.js: pm2 start app.js |
| Aplicația nu rulează după repornire | Rulați pm2 save după pornirea aplicațiilor pentru a activa pornirea automată |
| Portul este deja folosit | Verificați ce îl folosește: ss -tlnp | grep :3000 |
npm install eșuează cu erori de build |
build-essential este preinstalat. Verificați eroarea – pentru unele pachete poate fi nevoie de apt install python3 |
| No space left on device | Verificați discul: df -h /. Curățați cache-ul npm: npm cache clean --force |
| Blocat de Fail2Ban | Deblocați-vă IP-ul prin consola VNC din panoul clientului |
| Ați uitat parola root | Resetați-o prin consola VNC din panoul clientului |