Aller au contenu
Retour au blog

Héberger un bot Discord 24/7 sur un VPS avec Python

Gardez un bot Discord en ligne avec Python et systemd : installez les dépendances, protégez le token et vérifiez intents, redémarrages et journaux.

  • hébergement bot Discord
  • bot Discord 24/7
  • Python VPS

Un bot lancé sur votre ordinateur se déconnecte quand vous fermez le programme ou éteignez la machine. Un VPS peut garder le processus actif et le relancer après un redémarrage ; il ne configure pas le bot Discord et ne corrige pas ses erreurs. Ce guide utilise Python avec discord.py et systemd sur Debian ou Ubuntu.

Un bot connecté au Gateway de Discord ouvre normalement une connexion sortante et n’a pas besoin d’un port HTTP entrant. Si votre projet utilise des interactions webhook, un tableau de bord, la voix ou d’autres services, vérifiez ces besoins séparément. La configuration exacte dépend du code généré et des permissions nécessaires.

1. Vérifiez le bot et ses permissions

Repérez le point d’entrée, requirements.txt ou pyproject.toml, ainsi que la version Python attendue. Testez le bot localement et vérifiez que son token n’est ni codé en dur ni publié dans le dépôt. Dans le portail des développeurs Discord, créez une application et un compte bot ; utilisez un token bot et n’automatisez pas un compte personnel.

Activez seulement les intents et permissions nécessaires à chaque fonctionnalité. Par exemple, lire le contenu des messages peut demander l’intent privilégié correspondant dans le portail et dans le code. N’accordez pas Administrator pour éviter de vérifier les permissions. Invitez le bot avec les scopes et permissions minimaux requis.

2. Préparez un VPS et l’environnement Python

Choisissez un VPS Hostbrid avec Debian ou Ubuntu compatible avec le projet. Connectez-vous en SSH, appliquez les mises à jour et créez un compte de service dédié :

sudo apt update
sudo apt install git python3-venv
sudo adduser --system --group --home /srv/discord-bot discordbot

Clonez le dépôt dans /srv/discord-bot/current, avec une clé de déploiement en lecture seule s’il est privé. Installez les dépendances dans un environnement virtuel :

sudo -u discordbot python3 -m venv /srv/discord-bot/venv
sudo -u discordbot /srv/discord-bot/venv/bin/pip install -r /srv/discord-bot/current/requirements.txt

Si le projet utilise Node.js et discord.js, n’exécutez pas les commandes Python : installez une version de Node compatible avec le paquet déclaré et les dépendances du projet avec npm ci. systemd peut exécuter Python ou Node ; choisissez le processus correspondant au dépôt.

3. Gardez le token hors du code

Stockez le token dans /etc/discord-bot.env, hors du dépôt et avec des permissions restreintes. Le code Python doit le lire dans l’environnement, par exemple avec os.environ["DISCORD_TOKEN"], puis le transmettre au client sans l’afficher. Ne le mettez pas dans les arguments visibles du processus, Git, un ticket ou les journaux. En cas de fuite, régénérez-le dans le portail Discord et mettez à jour le service.

Lancez d’abord le bot manuellement en tant qu’utilisateur discordbot avec le fichier d’environnement chargé. Vérifiez le message de démarrage et sa présence en ligne sur le bon serveur. Ne publiez jamais le token dans ce guide, même comme exemple complet.

4. Démarrez-le avec systemd

Quand le test manuel fonctionne, créez /etc/systemd/system/discord-bot.service :

[Unit]
Description=Discord bot
After=network-online.target
Wants=network-online.target

[Service]
User=discordbot
Group=discordbot
WorkingDirectory=/srv/discord-bot/current
EnvironmentFile=/etc/discord-bot.env
ExecStart=/srv/discord-bot/venv/bin/python /srv/discord-bot/current/bot.py
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Remplacez bot.py par le véritable point d’entrée. Pour Node, remplacez ExecStart par le chemin absolu du binaire Node et le fichier d’entrée ; vérifiez-le pour la version installée au lieu de dépendre du PATH interactif de votre shell. Si le bot écrit des fichiers ou une base SQLite, définissez un répertoire de données et ses droits avant de restreindre les écritures.

Activez le service et vérifiez son état :

sudo systemctl daemon-reload
sudo systemctl enable --now discord-bot
sudo systemctl status discord-bot
journalctl -u discord-bot -f

Restart=on-failure aide à récupérer un processus en échec ; cela ne corrige ni un token invalide, ni une erreur de code, ni une limite imposée par Discord. Surveillez les journaux et l’utilisation CPU/RAM avant de choisir la taille du VPS. La voix, des modèles d’IA, plusieurs instances ou des tâches de base de données peuvent nécessiter plus de ressources qu’un bot simple.

5. Mettez-le à jour et testez la récupération

Faites une sauvegarde si le bot conserve un état local. Pour une mise à jour, préparez le nouveau code, installez les dépendances verrouillées et redémarrez discord-bot ; vérifiez ensuite la reconnexion et le fonctionnement des commandes. N’exécutez pas deux copies avec le même token si la logique ne le prévoit pas.

Le bot a besoin d’un accès Internet depuis le VPS ; un bot Gateway courant ne requiert ni Nginx, ni domaine, ni port entrant. S’il utilise des webhooks ou un site de contrôle, cette partie aura besoin de sa propre exposition HTTPS et de sa protection.

Hostbrid fournit un VPS avec accès root ; le service est autogéré. Vous maintenez Python ou Node, le token, les dépendances, les permissions, les mises à jour et les sauvegardes. Comparez les offres VPS et les tarifs actuels à l’utilisation mesurée du bot.

Sources : documentation officielle de discord.py, des intents, du compte bot et du token, des intents privilégiés Discord et de discord.js.

Gérez vos sites, serveurs et e-mails.

Mot de passe oublié ?

C’est gratuit et ça prend une minute.

8 caractères minimum. Ni que des chiffres, ni un mot de passe courant.

Nous vous enverrons un e-mail pour confirmer le compte.