Ai cumpărat un VPS pentru site, aplicație Node.js sau magazin online și te confrunți cu SSH, nginx, certificate SSL expirate sau servicii care cad noaptea? Acest ghid traduce administrarea serverelor în pași clari, fără presupuneri de experiență sysadmin. Este orientat spre proprietari de afaceri mici și medii din România care vor control și costuri predictibile, dar au nevoie de proceduri sigure pentru producție.
Cuprins
01VPS vs shared hosting — când merită upgrade-ul
02Bazele Linux pentru administratori începători
03Securitate SSH — prima linie de apărare
04Configurare nginx — site rapid și sigur
05SSL și Let's Encrypt — HTTPS gratuit
06PM2 și aplicații Node.js în producție
07MySQL / MariaDB — bază de date pe VPS
08Backup-uri server — fișiere, DB, configurații
09Monitorizare uptime și resurse
10Firewall UFW — porturi deschise minim
11Docker — introducere pentru deploy simplificat
12Troubleshooting — probleme frecvente și soluții
1
VPS vs shared hosting — când merită upgrade-ul
Un VPS (Virtual Private Server) îți oferă resurse garantate, root access și libertatea de a rula orice stack software. Shared hosting e mai simplu, dar limitează PHP, interzice unele porturi și pune zeci de site-uri pe același IP. Treci la VPS când ai nevoie de Node.js, Redis, cron jobs complexe sau când shared-ul devine lent la trafic crescut.
Shared: 5–15€/lună, zero administrare, limitat la PHP/MySQL, ideal sub 10.000 vizite/lună
VPS entry (Hetzner, DigitalOcean, Contabo): 5–20€/lună, 2GB RAM, administrare de tine sau partener
VPS managed: 40–100€/lună, providerul se ocupă de OS updates și securitate de bază
Semnale de upgrade: timeout-uri frecvente, CPU throttling, interzicere Redis/Node de host
VPS în EU (Frankfurt, Helsinki, București): GDPR compliant, latenta mică pentru RO
Calculează TCO: VPS ieftin + 2h/lună admin vs managed — uneori managed e mai ieftin total
2
Bazele Linux pentru administratori începători
Majoritatea VPS-urilor rulează Ubuntu LTS sau Debian. Nu trebuie să devii expert Linux, dar 15 comenzi esențiale îți permit să navighezi, editezi fișiere, verifici log-uri și repornești servicii fără panică.
1Conectează-te prin SSH din terminal (Windows: PowerShell sau PuTTY).
2Rulează sudo apt update && sudo apt upgrade -y — prima acțiune pe VPS nou.
3Creează user non-root cu sudo: adduser deploy && usermod -aG sudo deploy.
4Dezactivează login root prin parolă în /etc/ssh/sshd_config.
ssh user@IP — conectare securizată; folosește chei SSH, nu parolă
cd, ls, pwd — navigare directoare; ls -la arată permisiuni și fișiere ascunse
nano /etc/nginx/sites-available/site.conf — editor simplu pentru configurări
systemctl status nginx / restart nginx — verifică și repornește servicii
journalctl -u nginx -f — log-uri live ale unui serviciu systemd
df -h și free -m — spațiu disk și memorie RAM disponibilă
3
Securitate SSH — prima linie de apărare
Portul 22 este scanat continuu de botnet-uri. Un VPS cu root + parolă slabă e compromis în medie sub 24 de ore. Securizarea SSH este primul pas obligatoriu imediat după crearea serverului.
1Pe PC local: ssh-keygen -t ed25519 -C "email@firma.ro".
Dezactivează autentificarea cu parolă: PasswordAuthentication no în sshd_config
Folosește chei SSH ed25519 — mai sigure și rapide decât RSA 4096
Schimbă portul SSH de la 22 la un port > 1024 (ex. 2222) — reduce zgomotul botnet
Fail2ban: blochează IP-uri după 3–5 încercări eșuate de login
Permite doar useri specifici: AllowUsers deploy în sshd_config
Dezactivează login root direct: PermitRootLogin no
4
Configurare nginx — site rapid și sigur
nginx servește site-ul tău static, face reverse proxy către Node.js și termină SSL. O configurare corectă include gzip, cache headers, limitare upload și protecție împotriva fișierelor sensibile.
Certificatul SSL nu e opțional: Google penalizează site-urile HTTP, browserele afișează „Not Secure”, iar formularele de contact pierd încredere. Let's Encrypt oferă certificate gratuite, reînnoite automat cu Certbot.
1Asigură-te că DNS A record pointează la IP-ul VPS (propagare 1–24h).
Reînnoire automată: certbot renew rulează via cron/systemd timer — verifică cu certbot renew --dry-run
Certificat expiră la 90 zile — reînnoirea automată trebuie testată lunar
HSTS header opțional după 30 zile HTTPS stabil: add_header Strict-Transport-Security "max-age=31536000";
Mixed content (imagini HTTP pe site HTTPS) strică lacătul verde — corectează URL-uri
Wildcard SSL (*.domeniu.ro) necesită DNS challenge — util pentru subdomenii multiple
6
PM2 și aplicații Node.js în producție
Node.js pe VPS nu rulează direct în terminal — ai nevoie de un process manager care repornește aplicația la crash, la reboot server și gestionează log-urile. PM2 este standardul pentru aplicații Next.js, Express și API-uri.
1Clone repo în /var/www/app && npm ci --production=false.
pm2 startup + pm2 save — supraviețuire la reboot server
pm2 logs site — log-uri live; pm2 monit — CPU/RAM per proces
Zero-downtime deploy: pm2 reload site după git pull + npm run build
Variabile mediu în ecosystem.config.js — nu hardcoda secrete în cod
7
MySQL / MariaDB — bază de date pe VPS
WordPress, WooCommerce și multe aplicații PHP folosesc MySQL sau MariaDB. Pe VPS, baza de date rulează local — performanță bună, dar tu ești responsabil de backup și securitate.
1sudo mysql -e "CREATE DATABASE site_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
2Creează user: CREATE USER 'site'@'localhost' IDENTIFIED BY 'parola_puternica';
3GRANT ALL ON site_db.* TO 'site'@'localhost'; FLUSH PRIVILEGES;
Creează user dedicat per aplicație — nu folosi root pentru WordPress
Bind doar localhost: bind-address = 127.0.0.1 în /etc/mysql/mariadb.conf.d/50-server.cnf
Backup zilnic: mysqldump -u user -p baza > backup.sql — automatizează cu cron
Monitorizare: verifică slow query log pentru query-uri > 2 secunde
InnoDB buffer pool: setează la 50–70% din RAM disponibilă pe server dedicat DB
8
Backup-uri server — fișiere, DB, configurații
Pe VPS, nu există buton „restore” la provider (cu excepția snapshot-urilor plătite). Backup-ul tău trebuie să acopere cod, uploads, baza de date și fișierele de configurare nginx/SSL.
Backup off-site zilnic: rclone către Backblaze B2, AWS S3 sau Google Drive
Include: /var/www/, /etc/nginx/, /etc/letsencrypt/, dump MySQL
Script cron unificat: backup.sh la 03:00, log + notificare email/Telegram la eșec
Criptează backup-urile cu date clienți: gpg sau restic cu parolă
Test restore trimestrial pe VPS de test — nu aștepta disaster real
9
Monitorizare uptime și resurse
Site-ul poate cădea la 3 dimineața fără să știi — Google pierde indexare, clienții comandă de la concurență. Monitorizarea proactivă costă 0–10€/lună și îți trimite alertă înainte ca clienții să sune.
UptimeRobot gratuit: monitor HTTP la 5 min, alertă email/SMS/Telegram
Healthchecks.io pentru cron jobs — verifică că backup-ul chiar rulează
Netdata sau htop: CPU, RAM, disk I/O în timp real pe server
Alerte disk > 80% — log-urile și backup-urile umplu SSD-ul rapid
Log rotation: logrotate configurat pentru nginx, PM2, aplicație
Status page public (opțional): status.domeniu.ro pentru transparență clienți B2B
10
Firewall UFW — porturi deschise minim
În mod implicit, un VPS expune toate porturile. UFW (Uncomplicated Firewall) blochează tot traficul neautorizat, permițând doar SSH, HTTP, HTTPS și porturile strict necesare.
1Configurează regulile UFW ÎNAINTE de a activa firewall-ul.
2Păstrează consola web provider deschisă ca backup.
sudo ufw allow 2222/tcp (SSH pe port custom) — ÎNAINTE de ufw enable!
sudo ufw allow 'Nginx Full' — deschide 80 și 443
Nu expune MySQL (3306) sau Redis (6379) public — doar localhost
sudo ufw enable && sudo ufw status verbose — verifică regulile active
Fail2ban + UFW: dublă protecție împotriva brute force
11
Docker — introducere pentru deploy simplificat
Docker containerizează aplicația cu toate dependențele — același mediu pe laptop, staging și producție. Nu e obligatoriu pentru un singur site WordPress, dar simplifică deploy-ul aplicațiilor Node.js, microservicii și stack-uri complexe.
Docker Compose: definește app + nginx + db în docker-compose.yml
Imagini oficiale: node:20-alpine, nginx:alpine, mariadb:11 — mai mici, mai sigure
Volume persistente pentru date DB și uploads — nu pierde date la recreare container
docker compose up -d — start în background; docker compose logs -f — debug
Actualizări: docker compose pull && docker compose up -d — zero-downtime cu health checks
12
Troubleshooting — probleme frecvente și soluții
Când site-ul cade, ordinea diagnosticului contează: verifică dacă serverul răspunde, apoi nginx, apoi aplicația, apoi baza de date. Panica și restart-ul aleatoriu agravează uneori problema.
11. Ping IP server — răspunde?
22. curl -I https://domeniu.ro — ce status code?
33. sudo nginx -t && sudo systemctl status nginx.
44. pm2 status / systemctl status php8.2-fpm.
55. sudo tail -50 /var/log/nginx/error.log.
66. Dacă totul eșuează: restore din ultimul snapshot/backup.
502 Bad Gateway: aplicația Node/PHP nu rulează — pm2 status sau systemctl status php8.2-fpm
504 Gateway Timeout: query DB lent sau app blocată — verifică slow log MySQL
Site lent brusc: htop — proces zombie? atac DDoS? plugin WP nou?
Nu te poți conecta SSH: consolă web provider, verifică UFW și fail2ban
Întrebări frecvente
Cât RAM am nevoie pe VPS pentru WordPress + WooCommerce?
Minimum 2GB RAM pentru magazin mic (< 100 produse, < 5.000 vizite/lună). Recomandat 4GB pentru trafic mediu sau cu Redis object cache. Sub 2GB, MySQL și PHP-FPM intră în swap și site-ul devine imposibil de navigat.
Pot administra VPS-ul singur sau e obligatoriu un sysadmin?
Poți gestiona un VPS simplu (1 site WordPress sau 1 app Node) după acest ghid, cu 2–4 ore setup inițial și 1–2 ore/lună mentenanță. Pentru producție critică (magazin cu venituri mari, date sensibile), recomandăm fie managed VPS, fie contract mentenanță cu specialist — costul downtime-ului depășește rapid economia DIY.
Ce provider VPS recomandați pentru România?
Hetzner (Frankfurt/Nuremberg) — cel mai bun raport preț/performanță în EU. DigitalOcean pentru documentație excelentă și marketplace apps. Contabo pentru buget mic (atenție la CPU shared). Alege locație EU pentru GDPR și latenta sub 30ms din București.
Descarcă ediția PDF
Format A4, printabil — ideal pentru echipă sau arhivă internă.