Bot Discord : lancement et supervision
Exécuter un bot Discord sur un VPS sous systemd, limiter la mémoire, lire les logs, gérer les rate limits et mettre à jour sans interruption.
Mis à jour le 23 août 2026
Un bot Discord maintient une connexion WebSocket persistante vers la passerelle Discord, il lui faut donc une machine qui reste allumée. Ses besoins en ressources sont modestes, mais contrairement à un bot Telegram, il gère moins bien les redémarrages : chacun force une nouvelle connexion à la passerelle.
Installation
useradd -r -m -d /srv/dbot -s /usr/sbin/nologin dbot
cd /srv/dbot && sudo -u dbot git clone https://github.com/you/bot.git .
sudo -u dbot npm ci --omit=dev
install -o dbot -g dbot -m 600 /dev/null /srv/dbot/.env
Placez le token et les IDs dans .env. Un token issu du Discord Developer Portal donne un accès complet au bot — traitez-le comme un mot de passe.
Pour les bibliothèques Python, la procédure est identique, avec un environnement virtuel ; voir Application Python.
Service
/etc/systemd/system/dbot.service :
[Unit]
Description=Discord bot
After=network-online.target
Wants=network-online.target
[Service]
User=dbot
WorkingDirectory=/srv/dbot
EnvironmentFile=/srv/dbot/.env
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=15
MemoryMax=512M
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now dbot
RestartSec=15 au lieu des cinq secondes standard : lorsque la connexion à la passerelle tombe, des redémarrages fréquents entraînent un blocage temporaire des connexions côté Discord.
MemoryMax empêche un bot victime d'une fuite de mémoire d'entraîner toute la machine avec lui — particulièrement important sur VDS-1 avec 2 Go.
Supervision
systemctl status dbot
journalctl -u dbot -f
journalctl -u dbot --since today -p err
systemctl show dbot -p NRestarts
NRestarts est la métrique la plus utile : si le compteur augmente chaque heure, le bot plante et Restart=always le masque.
Consommation mémoire d'un service précis :
systemctl status dbot | grep Memory
Pour une vue d'ensemble de la machine, consultez les graphiques CPU, mémoire et trafic dans « Vue d'ensemble » du panneau à l'adresse /hosting/vds/m/<id>.
Limitation de débit
Discord limite les appels API. Les signes sont des erreurs 429 dans les logs et des commandes qui « bloquent ». Ce qui aide :
- ne pas envoyer de messages en boucle sans pauses ;
- modifier un seul message au lieu d'en envoyer de nouveaux ;
- mettre en cache les données de référence au lieu de les demander à chaque événement ;
- utiliser une file Redis pour les envois en masse.
Mise à jour
cd /srv/dbot
sudo -u dbot git pull
sudo -u dbot npm ci --omit=dev
systemctl restart dbot
journalctl -u dbot -n 50
La dernière ligne est obligatoire : assurez-vous que le bot s'est connecté à la passerelle plutôt que de planter sur une nouvelle dépendance.
Erreurs courantes
| Symptôme | Cause |
|---|---|
| Le bot est en ligne mais ne répond pas aux commandes | Les intents requis ne sont pas activés dans le Developer Portal |
| Reconnexions constantes | RestartSec est trop court, ou un plantage dans un gestionnaire d'événements |
Invalid token | Le token a été régénéré et .env n'a pas été mis à jour |
| Les commandes sont dupliquées | Deux copies du bot tournent — vérifiez ps aux | grep node |
| La machine commence à swapper | Pas de MemoryMax, une fuite dans le code |
Ne lancez pas le bot sous
screenoutmux. La session survit à une déconnexion SSH, mais pas à un redémarrage de la machine — et dans un mois vous aurez oublié où il tourne.