Intermédiaire ⏱ 10 min Mis à jour le 29 juillet 2026

Garder un bot Discord en ligne 24/7 avec pm2

Un bot Discord qui s'arrête dès que vous fermez le terminal ne sert à rien. pm2 le garde en vie, le relance après un crash et au redémarrage du serveur. Voici comment.

Pourquoi utiliser un gestionnaire de processus ?

Un bot Discord pm2 continue de fonctionner lorsque vous fermez votre terminal SSH et peut redémarrer automatiquement après un crash. Sans gestionnaire de processus, la commande node index.js reste attachée à votre session : si vous fermez le terminal ou perdez la connexion, le bot peut s’arrêter.

PM2 est un gestionnaire de processus conçu pour les applications Node.js. Il exécute votre bot en arrière-plan et permet de :

  • le démarrer avec un nom identifiable ;
  • vérifier son état ;
  • le relancer après une erreur ;
  • consulter ses logs ;
  • surveiller sa consommation de mémoire et de CPU ;
  • restaurer les processus après un redémarrage du VPS ;
  • gérer plusieurs bots depuis la même interface.

PM2 redémarre normalement une application qui quitte de manière inattendue. En revanche, pour que le bot revienne aussi après un redémarrage complet du VPS, vous devez configurer séparément pm2 startup et enregistrer la liste avec pm2 save.

PM2 maintient le processus actif, mais ne corrige pas les erreurs de votre code. Consultez les logs afin d’identifier les crashs répétés au lieu de laisser le bot redémarrer en boucle.

Avant de poursuivre, votre bot doit déjà fonctionner avec une commande classique comme :

node index.js

Pour préparer le projet, consultez le guide faire tourner un bot Discord en Node.js ou Python.

Installer PM2 sur le VPS

PM2 nécessite Node.js et npm. Connectez-vous d’abord à votre serveur Linux avec SSH. Le guide se connecter à un VPS en SSH détaille cette étape.

Vérifiez que Node.js et npm sont disponibles :

node --version
npm --version

Les deux commandes doivent retourner un numéro de version. Placez-vous ensuite dans le dossier de votre bot et vérifiez qu’il fonctionne :

cd /home/votre-utilisateur/mon-bot
node index.js

Arrêtez ce test avec :

Ctrl + C

Installez PM2 globalement avec npm :

sudo npm install -g pm2

Si Node.js a été installé uniquement pour votre utilisateur avec un gestionnaire comme NVM, sudo peut être inutile :

npm install -g pm2

Vérifiez l’installation :

pm2 --version

PM2 doit répondre avec son numéro de version.

Exécutez ensuite PM2 avec le même utilisateur Linux. Une liste créée avec root est distincte de celle créée avec votre compte habituel.

Lancer un bot Discord PM2

Placez-vous dans le répertoire contenant le fichier principal du bot :

cd /home/votre-utilisateur/mon-bot

Lancez index.js avec un nom explicite :

pm2 start index.js --name mon-bot

PM2 ajoute le programme à sa liste de processus et le démarre en arrière-plan. Vous pouvez fermer la session SSH sans arrêter le bot.

Affichez les processus enregistrés :

pm2 list

Vous obtenez un tableau contenant notamment :

  • le nom du processus ;
  • son identifiant PM2 ;
  • son état ;
  • le nombre de redémarrages ;
  • sa mémoire utilisée ;
  • son temps de fonctionnement.

Le statut attendu est :

online

Si votre point d’entrée porte un autre nom, adaptez la commande :

pm2 start bot.js --name bot-moderation

Vous pouvez également lancer un script défini dans package.json :

pm2 start npm --name mon-bot -- start

Cette syntaxe exécute la commande associée à npm start.

Pour contrôler un processus précis, utilisez son nom :

pm2 restart mon-bot

Le nom évite de dépendre d’un identifiant numérique susceptible de changer.

Consulter les logs du bot

Les logs permettent de vérifier la connexion à Discord, les commandes exécutées et les erreurs JavaScript.

Pour suivre les logs du bot en direct :

pm2 logs mon-bot

Pour afficher les logs de tous les processus :

pm2 logs

Pour limiter l’affichage aux 100 dernières lignes :

pm2 logs mon-bot --lines 100

Quittez l’affichage en direct avec :

Ctrl + C

Cette action ferme uniquement la vue des logs. Le bot continue de fonctionner en arrière-plan.

PM2 enregistre habituellement les sorties dans :

~/.pm2/logs/

Vous y trouverez des fichiers séparés pour les sorties normales et les erreurs :

mon-bot-out.log
mon-bot-error.log

Lorsqu’un bot redémarre sans arrêt, vérifiez le nombre de redémarrages avec :

pm2 list

Puis consultez immédiatement les erreurs :

pm2 logs mon-bot --lines 200

Les causes courantes comprennent :

Invalid token
Cannot find module
Missing Access
SyntaxError
UnhandledPromiseRejection

Ne publiez jamais un log contenant votre token Discord, une URL de webhook ou une autre donnée secrète.

Redémarrer automatiquement le bot au démarrage du VPS

Le processus survit à la fermeture du terminal, mais pas encore nécessairement au redémarrage complet du système. PM2 doit installer un script de démarrage adapté à votre distribution Linux.

Exécutez :

pm2 startup

PM2 affiche alors une commande personnalisée. Elle peut ressembler à ceci :

sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u votre-utilisateur --hp /home/votre-utilisateur

Copiez et exécutez exactement la commande générée sur votre propre VPS. Ne recopiez pas aveuglément l’exemple ci-dessus : le chemin de Node.js, l’utilisateur et le dossier personnel peuvent être différents.

Enregistrez ensuite la liste actuelle des processus :

pm2 save

Cette commande sauvegarde notamment mon-bot afin que PM2 puisse le restaurer au démarrage.

La séquence complète est donc :

pm2 startup
# Exécuter la commande générée par PM2
pm2 save

Testez la configuration avec un redémarrage du VPS lorsque vous pouvez interrompre temporairement le service :

sudo reboot

Reconnectez-vous ensuite en SSH et contrôlez le bot :

pm2 list

Le processus doit apparaître avec le statut online.

Après l’ajout ou la suppression d’un bot, relancez pm2 save. Sinon, PM2 peut restaurer une ancienne liste lors du prochain redémarrage.

Des sauvegardes automatiques sont incluses pour vous aider à restaurer. Conservez aussi vos propres exports réguliers : vous restez responsable de vos données.

Commandes PM2 utiles au quotidien

Voici les principales commandes pour administrer un ou plusieurs bots :

CommandeAction
pm2 listAfficher tous les processus
pm2 restart mon-botRedémarrer le bot
pm2 stop mon-botArrêter le bot sans le supprimer
pm2 start mon-botRelancer un processus arrêté
pm2 delete mon-botRetirer le processus de PM2
pm2 logs mon-botAfficher ses logs
pm2 monitOuvrir le moniteur CPU et mémoire
pm2 saveEnregistrer la liste à restaurer au boot
pm2 reload mon-botRecharger le processus lorsque le mode utilisé le permet

Après une modification du code, redémarrez le bot :

pm2 restart mon-bot

Pour mettre à jour les variables d’environnement transmises depuis le terminal :

pm2 restart mon-bot --update-env

Pour gérer plusieurs bots, attribuez un nom unique à chacun :

pm2 start moderation.js --name bot-moderation
pm2 start tickets.js --name bot-tickets
pm2 start musique.js --name bot-musique
pm2 save

Vous pouvez ensuite agir sur un seul bot :

pm2 restart bot-tickets

Ou sur tous les processus :

pm2 restart all

Évitez d’utiliser le mode cluster pour un bot Discord sans avoir vérifié sa compatibilité. Plusieurs instances du même bot peuvent traiter une interaction plusieurs fois ou nécessiter une architecture de sharding adaptée.

Alternative à PM2 : systemd

systemd est le gestionnaire de services intégré à de nombreuses distributions Linux. Il peut lancer directement votre bot au démarrage, le redémarrer après un crash et centraliser ses logs avec journalctl.

Il convient aux administrateurs souhaitant une intégration Linux native et une configuration entièrement maîtrisée. Il demande toutefois de créer manuellement un fichier de service, de définir l’utilisateur, le dossier de travail, les variables d’environnement et la politique de redémarrage.

Pour un premier bot Node.js, PM2 reste généralement plus simple grâce à ses commandes dédiées :

pm2 start
pm2 list
pm2 logs
pm2 restart
pm2 startup
pm2 save

Pour une mise en production plus complète, consultez le guide héberger un bot Discord 24 h/24 et 7 j/7.

En résumé

  • Un bot lancé avec node index.js peut s’arrêter lorsque la session SSH est fermée.
  • Installez PM2 avec npm install -g pm2.
  • Lancez votre bot avec pm2 start index.js --name mon-bot.
  • Vérifiez son état avec pm2 list.
  • Consultez les erreurs avec pm2 logs mon-bot.
  • Utilisez pm2 restart mon-bot après une modification du code.
  • Exécutez pm2 startup, puis la commande générée par PM2.
  • Enregistrez la liste des processus avec pm2 save.
  • Relancez pm2 save après chaque ajout ou suppression de bot.
  • Donnez un nom unique à chaque processus si vous gérez plusieurs bots.
  • Utilisez pm2 monit pour surveiller la mémoire et le CPU.
  • Un bot Discord pm2 correctement configuré peut rester actif après une déconnexion SSH, un crash applicatif et un redémarrage du VPS.
  • Pour garder votre bot en ligne depuis un panel de gestion avec support francophone, découvrez l’offre hébergement bot Discord TalCloud.