eduardweb.
DeploymentIntermediar#nextjs#devops#pm2#nginx#vps

Deployment Next.js pe VPS cu PM2 și Nginx: Ghidul meu de supraviețuire

De Andreea Crăciun, 31 mai 2026 · 4 vizualizări · 3 like-uri

Postat 31 mai 2026
nginx
server {
    listen 80;
    server_name domeniul-tau.ro www.domeniul-tau.ro;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Vercel e genial până când nu mai e. La ultimul proiect, un SaaS micuț unde am trecut de 15.000 de utilizatori activi, costurile pe serverless au început să sară aiurea din cauza funcțiilor lambda și a lățimii de bandă. Am decis să mut totul pe un VPS de 6 euro de la Hetzner și am obținut zero downtime, SSL moca și control total.

Dacă te-ai lovit și tu de limitele bugetului pe platformele de hosting cloud, mutarea pe un server propriu e pasul logic. Nu e atât de greu pe cât pare, dar trebuie să o faci cu cap ca să nu îți pice site-ul la fiecare update de cod.

Setup-ul de PM2 pentru zero downtime

Mulți developeri începători dau pm2 start npm -- start și se miră de ce au downtime de câteva secunde bune la fiecare deploy. Când rulezi procesul direct, PM2 trebuie să îl oprească pe cel vechi ca să îl pornească pe cel nou. În acele secunde, utilizatorii tăi vor vedea o eroare 502 urâtă.

Șmecheria e să folosești modul cluster din PM2. Am creat un fișier ecosystem.config.js în rădăcina proiectului. Acesta îi spune lui PM2 să ruleze mai multe instanțe ale aplicației (de obicei, câte nuclee are procesorul tău). Când facem deploy, în loc de pm2 restart, rulăm pm2 reload all. PM2 va reporni instanțele pe rând, una câte una. În timp ce una se restartează, celelalte preiau traficul. Zero secunde de downtime.

Nginx ca Reverse Proxy și HTTPS cu Certbot

Next.js nu ar trebui să fie expus direct pe portul 80 sau 443. Pentru asta avem Nginx. El stă în față ca un portar rapid și trimite traficul către instanțele noastre de Node.js care rulează local (de regulă pe portul 3000).

După ce instalezi Nginx pe server (sudo apt install nginx), trebuie să configurezi un block de server. Practic, îi spui să asculte pe domeniul tău și să trimită traficul către portul intern.

Pentru HTTPS, Certbot e cel mai bun prieten al dev-ului care nu vrea să arunce bani pe certificate. Rulezi sudo certbot --nginx -d domeniul-tau.ro și scriptul își face magia singur. Modifică configul de Nginx automat, adaugă certificatele SSL de la Let's Encrypt și configurează un cron job care le reînnoiește automat înainte să expire.

Nu uita de loguri: Dezastrul numit pm2-logrotate

Am pățit-o acum vreo doi ani la un proiect cu trafic destul de mare. Totul mergea brici, până când m-am trezit într-o dimineață cu serverul blocat complet. Nici măcar SSH-ul nu mai răspundea cum trebuie. După ce am reușit să mă conectez, am văzut că spațiul pe disc era 100% plin.

PM2 scrisese un singur fișier uriaș de log de peste 30GB în /root/.pm2/logs/. Node.js scrie destul de mult în console, iar fără o rotație a logurilor, e doar o chestiune de timp până când serverul tău crapă.

Soluția e extrem de simplă și te scapă de dureri de cap. Instalează modulul de rotație direct în PM2: pm2 install pm2-logrotate Acesta va tăia automat logurile când ajung la 10MB și va păstra doar ultimele 30 de fișiere, ștergându-le pe cele foarte vechi.

Trade-off-uri sincere: VPS vs Vercel

Să fim realiști, trecerea pe VPS vine cu un preț: timpul tău. Pe Vercel ai preview deployments la fiecare Pull Request și totul se rezolvă automat. Pe VPS trebuie să îți scrii singur un mic script de CI/CD. Eu folosesc GitHub Actions ca să dau un SSH pe server, să dau git pull, npm install, npm run build și apoi pm2 reload all. Nu e fizică cuantică, dar e ceva ce trebuie să întreții singur.

Dacă ai un site de prezentare cu trafic mic, rămâi pe Vercel free tier. Dacă ai un produs în producție care consumă resurse și vrei să economisești sute de dolari lunar, VPS-ul e calea.

Voi cum procedați când proiectul Next.js crește? Plătiți extra pe Vercel sau preferați să vă murdăriți pe mâini cu un VPS?

Răspunsuri 0

Se încarcă răspunsurile…

Loghează-te pentru a răspunde

Doar membrii comunității pot lăsa comentarii.