Guides et tutoriels

Déployer une application Node.js en production

Publié le 21 novembre 2023 · 12 min de lecture

L'architecture cible

Node.js écoute sur un port local (3000), Nginx sert le HTTPS en frontal et reverse-proxy vers Node, PM2 maintient le processus en vie. C'est l'architecture la plus éprouvée pour un VPS unique.

Étape 1 — Node.js 22 LTS

curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs

Étape 2 — Déployer l'application

Clonez votre dépôt dans /var/www/monapp, installez les dépendances en mode production (npm ci --omit=dev), et créez un utilisateur dédié qui possède le dossier.

Étape 3 — PM2 en production

npm install -g pm2
pm2 start dist/server.js --name monapp --max-memory-restart 500M
pm2 startup systemd -u deploy --hp /home/deploy
pm2 save

Le --max-memory-restart redémarre proprement l'app en cas de fuite mémoire — indispensable sur un long run.

Étape 4 — Nginx en reverse proxy

server {
    listen 443 ssl http2;
    server_name api.example.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Étape 5 — HTTPS avec Let's Encrypt

apt install certbot python3-certbot-nginx && certbot --nginx -d api.example.com. Le renouvellement est automatique.

Étape 6 — Zéro downtime

pm2 reload monapp recharge les workers sans couper les connexions. Pour les déploiements Git : un simple git pull && npm ci && pm2 reload dans un script ou une GitHub Action suffit à l'échelle d'un VPS.

Variables d'environnement

Jamais de secrets dans le dépôt : un .env en chmod 600, chargé par PM2 via ecosystem.config.js. Sur notre plateforme, le VPS est à vous — personne d'autre ne lit ce fichier.

Des tutoriels pas-à-pas rédigés par nos ingénieurs, testés sur notre infrastructure.

GLOBALCLOUDHOSTING →