Skip to content
VDS · Applications et bots

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ômeCause
Le bot est en ligne mais ne répond pas aux commandesLes intents requis ne sont pas activés dans le Developer Portal
Reconnexions constantesRestartSec est trop court, ou un plantage dans un gestionnaire d'événements
Invalid tokenLe token a été régénéré et .env n'a pas été mis à jour
Les commandes sont dupliquéesDeux copies du bot tournent — vérifiez ps aux | grep node
La machine commence à swapperPas de MemoryMax, une fuite dans le code

Ne lancez pas le bot sous screen ou tmux. 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.