PM2 : démarrage automatique
Sans configuration, les applications PM2 ne redémarrent pas après un redémarrage du serveur. pm2 startup crée un service systemd qui lance PM2 au démarrage, et pm2 save mémorise la liste des applications à relancer.
Utilisateur dédié
Section intitulée « Utilisateur dédié »Exécuter PM2 sous un utilisateur sans privilèges :
sudo adduser --disabled-password --gecos "" applisudo -iu appliInstaller Node.js et PM2 pour cet utilisateur (voir Installation).
Procédure
Section intitulée « Procédure »En tant que cet utilisateur :
pm2 start ecosystem.config.cjs --env productionpm2 startup systemdPM2 affiche une commande à exécuter avec sudo, du type :
[PM2] To setup the Startup Script, copy/paste the following command:sudo env PATH=$PATH:/usr/bin /home/appli/.npm-global/lib/node_modules/pm2/bin/pm2 startup systemd -u appli --hp /home/appliLa copier telle quelle depuis un compte autorisé à utiliser sudo, puis revenir à l’utilisateur de l’application :
pm2 saveLe service créé s’appelle pm2-<utilisateur> :
systemctl status pm2-applisudo systemctl enable pm2-appliVérifier
Section intitulée « Vérifier »sudo reboot# après le redémarragesudo -iu appli pm2 listsystemctl status pm2-appliLes applications doivent être online sans intervention.
Enregistrer les modifications
Section intitulée « Enregistrer les modifications »pm2 save écrit la liste actuelle dans ~/.pm2/dump.pm2. À refaire après chaque ajout, suppression ou changement d’application : sinon, un redémarrage restaure l’ancienne liste.
pm2 start nouvelle-app.js --name workerpm2 saveRestauration manuelle :
pm2 resurrectNode.js installé avec nvm
Section intitulée « Node.js installé avec nvm »Le service systemd ne charge pas le profil du shell : le chemin de Node.js (installé par nvm) doit être fourni. La commande générée par pm2 startup intègre le PATH courant : l’exécuter dans un shell où node est disponible (which node). Après un changement de version de Node.js :
pm2 unstartup systemdnvm use 22pm2 startup systemd # copier la nouvelle commande sudopm2 saveSupprimer le démarrage automatique
Section intitulée « Supprimer le démarrage automatique »pm2 unstartup systemdCombiner avec systemd : ce qui se passe
Section intitulée « Combiner avec systemd : ce qui se passe »| Élément | Rôle |
|---|---|
pm2-appli.service |
Lance le démon PM2 au démarrage et le restaure (pm2 resurrect) |
~/.pm2/dump.pm2 |
Liste des applications restaurées |
| Application | Lancée par PM2, avec les variables d’environnement enregistrées au moment du pm2 save |
sudo journalctl -u pm2-appli -n 50 --no-pagerAlternative : un service systemd par application
Section intitulée « Alternative : un service systemd par application »Pour des applications simples, systemd seul est plus léger et offre plus d’isolation (voir Node.js : mise en production et systemd : durcissement).
Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
| Applications absentes après le redémarrage | pm2 save oublié, ou service désactivé : systemctl is-enabled pm2-appli |
Le service échoue (node: not found) |
PATH sans Node.js : refaire pm2 unstartup puis pm2 startup avec node disponible |
Applications en errored après le redémarrage |
Réseau ou base de données pas encore prête : prévoir des tentatives de reconnexion dans l’application |
pm2 startup n’affiche pas de commande |
Service déjà présent : pm2 unstartup systemd puis relancer |
| Mauvaises variables d’environnement après le redémarrage | pm2 restart <nom> --update-env puis pm2 save |
| Le service s’arrête à la déconnexion SSH | pm2-<utilisateur> n’est pas lancé : systemctl status pm2-appli ; vérifier qu’il est activé |
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »Le service repose sur systemd (255 sur 24.04, 259 sur 26.04) ; la procédure est la même. Après une montée de version d’Ubuntu, réinstaller Node.js et PM2 si nécessaire, puis refaire pm2 unstartup / pm2 startup / pm2 save.