Table of Contents

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
SSH5 autentificări eșuate10 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
Ubuntu24.04 LTS
Node.js22.x LTS
npm10.x
PM26.x
git2.43
build-essentialgcc 13.3
Fail2Ban1.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