Documentation/Déploiement/Déployer une application Node.js avec PM2
Déploiement12 min2026-05-0529Populaire

Déployer une application Node.js avec PM2

Mettre en production une application Node.js sur un VPS Linux avec PM2, Nginx et un redémarrage automatique.

Déployer une application Node.js avec PM2

Prérequis

Avant de commencer, préparez :

  • Un VPS Debian ou Ubuntu.
  • Un accès SSH avec root ou sudo.
  • Un nom de domaine ou sous-domaine si l'application doit être publique.
  • Le code de votre application Node.js.

Mettez le serveur à jour :

bash
apt update && apt upgrade -y

Installez les outils utiles :

bash
apt install curl git build-essential -y

Installer Node.js

Installez Node.js depuis le dépôt NodeSource :

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

Vérifiez les versions :

bash
node -v
npm -v

Préparer l'application

Placez votre application dans /var/www :

bash
mkdir -p /var/www
cd /var/www
git clone https://github.com/votre-utilisateur/votre-application.git mon-app
cd mon-app

Installez les dépendances :

bash
npm install

Si votre projet nécessite une compilation :

bash
npm run build

Testez le lancement manuel :

bash
npm start

Arrêtez ensuite le processus avec CTRL+C.


Configurer les variables d'environnement

Créez un fichier .env si votre application en utilise un :

bash
nano .env

Exemple :

env
NODE_ENV=production
PORT=3000
APP_URL=https://app.exemple.fr
DATABASE_URL=mysql://user:password@localhost:3306/database

Vérifiez que votre application lit bien ce fichier. Selon le framework utilisé, vous devrez peut-être installer dotenv :

bash
npm install dotenv

Installer PM2

Installez PM2 globalement :

bash
npm install -g pm2

Lancez l'application avec PM2 :

bash
pm2 start npm --name "mon-app" -- start

Si votre application démarre avec un fichier précis :

bash
pm2 start server.js --name "mon-app"

Vérifiez l'état :

bash
pm2 status

Consultez les logs :

bash
pm2 logs mon-app

Activer le redémarrage automatique

Générez la commande de démarrage automatique :

bash
pm2 startup

PM2 affichera une commande à copier et exécuter. Lancez-la, puis sauvegardez la liste des processus :

bash
pm2 save

Après un redémarrage du VPS, PM2 relancera automatiquement l'application.


Configurer Nginx en reverse proxy

Installez Nginx :

bash
apt install nginx -y

Créez une configuration :

bash
nano /etc/nginx/sites-available/mon-app

Ajoutez :

nginx
server {
    listen 80;
    server_name app.exemple.fr;

    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_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Activez le site :

bash
ln -s /etc/nginx/sites-available/mon-app /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

Commandes PM2 utiles

Redémarrer l'application :

bash
pm2 restart mon-app

Arrêter l'application :

bash
pm2 stop mon-app

Voir les logs :

bash
pm2 logs mon-app

Supprimer l'application de PM2 :

bash
pm2 delete mon-app

Sauvegarder la configuration PM2 :

bash
pm2 save

Erreurs fréquentes

L'application ne démarre pas

Consultez les logs :

bash
pm2 logs mon-app

Le site affiche une erreur 502

Vérifiez que l'application tourne bien :

bash
pm2 status
ss -tulpn | grep 3000

Le port est déjà utilisé

Repérez le processus :

bash
ss -tulpn | grep 3000

Changez ensuite le port dans .env ou arrêtez le service en conflit.


Conclusion

Votre application Node.js est maintenant lancée avec PM2, accessible via Nginx et prête à redémarrer automatiquement après un reboot du VPS.

Ce guide vous a aidé ?

Votre retour permet de repérer les guides à améliorer en priorité.