Guide de déploiement

Déployer une application Node.js sur un VPS

Déployer sur un VPS Cloud →

Développement8 min de lecture

Déployer une application Node.js sur un VPS

Faire tourner une application Node.js en production demande plus qu'un simple `node app.js` : il faut un gestionnaire de processus qui redémarre l'app en cas de crash, un reverse proxy pour le HTTPS, et un démarrage automatique au boot. Sur un VPS, vous maîtrisez chaque maillon de cette chaîne, contrairement à une plateforme managée qui vous facture à l'usage.

Pourquoi déployer Node.js sur un VPS plutôt que sur une plateforme managée ?

Les plateformes serverless et PaaS sont pratiques au démarrage mais leur coût grimpe avec le trafic, et elles imposent des contraintes (timeouts, cold starts, limites de connexions WebSocket). Un VPS vous donne un process Node.js persistant, des connexions longues (WebSocket, SSE) sans limite artificielle, des ressources dédiées et un coût fixe prévisible. Vous décidez de la version de Node, du gestionnaire de processus, du reverse proxy et de la stratégie de mise à jour, sans dépendre des conventions d'un fournisseur.

Ce que vous gagnez avec un VPS pour Node.js

  • Process Node.js persistant, idéal pour WebSocket, SSE et tâches longues sans cold start
  • Redémarrage automatique en cas de crash et au reboot du serveur grâce à PM2
  • Mode cluster pour exploiter tous les cœurs CPU du VPS sans changer votre code
  • Reverse proxy Nginx devant Node pour le HTTPS, la compression et les fichiers statiques
  • Coût fixe et prévisible, sans facturation à la requête ni surprise de scaling
  • Contrôle total de la version de Node.js et des dépendances système

Prérequis

Une application Node.js standard (API Express, Nest, Fastify) tourne confortablement sur un VPS de 1 à 2 vCPU et 1 à 2 Go de RAM ; prévoyez davantage de RAM si vous compilez un front lourd au build ou exécutez des workers. Installez Node.js via nvm ou le dépôt NodeSource pour figer une version LTS, ainsi que PM2 comme gestionnaire de processus et Nginx comme reverse proxy. Il vous faut un domaine pointant vers l'IP du VPS et les ports 80/443 ouverts.

Déployer une application Node.js en production

01

Préparer le VPS et installer Node.js

Sur un VPS Ubuntu 22.04, mettez le système à jour et installez une version LTS de Node via nvm (nvm install --lts) ou le dépôt NodeSource. Vérifiez : node -v et npm -v. Créez un utilisateur non-root dédié à l'application plutôt que de tout exécuter en root.

02

Récupérer le code et builder

Clonez votre dépôt sur le VPS, installez les dépendances de production (npm ci --omit=dev) et lancez le build si nécessaire (npm run build). Placez les variables sensibles dans un fichier .env non commité ou dans les variables d'environnement du service.

03

Lancer l'application avec PM2

Installez PM2 globalement (npm install -g pm2) puis démarrez l'app : pm2 start app.js --name monapp -i max. Le flag -i max active le mode cluster sur tous les cœurs. PM2 relance automatiquement le process en cas de crash.

04

Activer le démarrage automatique au boot

Générez le script systemd avec pm2 startup, exécutez la commande affichée, puis figez l'état actuel avec pm2 save. Au prochain redémarrage du VPS, votre application sera relancée automatiquement, sans intervention.

05

Configurer Nginx en reverse proxy

Installez Nginx et créez un virtual host pour votre domaine qui proxifie vers le port local de Node (ex : proxy_pass http://localhost:3000;). Ajoutez les en-têtes Upgrade et Connection si vous utilisez les WebSocket. Testez la conf (nginx -t) puis rechargez.

06

Sécuriser en HTTPS avec Let's Encrypt

Installez Certbot et son plugin Nginx, puis exécutez certbot --nginx -d votredomaine.com. Certbot obtient le certificat, configure la redirection HTTP→HTTPS et programme le renouvellement automatique. Votre application Node est désormais servie en HTTPS.

Pour des déploiements sans interruption, combinez PM2 en mode cluster avec pm2 reload monapp plutôt que restart : PM2 redémarre les workers un par un, gardant toujours au moins une instance disponible pendant la mise à jour. Surveillez ensuite la mémoire avec pm2 monit et fixez une limite de redémarrage automatique (--max-memory-restart 500M) pour prévenir les fuites mémoire en production.

Mettez votre application Node.js en production sur un VPS Cloud

Déployez un VPS Cloud ServOrbit avec le template Développement : Node.js, PM2 et Nginx préconfigurés pour passer votre application en production en HTTPS.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou écrivez à notre équipe — support en anglais, français et arabe.