FranceHostun service RootLab
Guide pratique

Héberger un bot Discord sur un VPS, 24 h/24.

Votre bot tourne sur votre ordinateur et s'arrête dès que vous l'éteignez ? Un petit VPS le garde en ligne en permanence. Ce guide part d'un VPS Debian ou Ubuntu tout neuf et va jusqu'au bot qui redémarre tout seul.

Quel VPS pour un bot Discord ?

Un bot Discord classique (modération, commandes, rappels, petit jeu) consomme très peu : quelques dizaines de mégaoctets de mémoire et presque pas de processeur. Le VPS Mini (1 vCore, 1 Go de RAM, 10 Go SSD) suffit largement pour un ou plusieurs bots de ce genre. Prévoyez le VPS Start ou plus si votre bot utilise une base de données, sert des milliers de serveurs Discord, ou partage la machine avec un site web.

KVM ou LXC, les deux conviennent pour un bot. Si vous hésitez, notre comparatif KVM ou LXC vous aide à choisir.

Le point à régler d'abord : Discord n'a pas d'IPv6

Nos VPS sont en IPv6 uniquement, et les serveurs de Discord (discord.com, la passerelle gateway.discord.gg) ne sont joignables qu'en IPv4. Sans réglage, votre bot ne pourra pas se connecter. La solution tient en deux minutes : déclarer un service NAT64/DNS64, qui relaie vers l'IPv4 les connexions aux sites qui n'ont pas d'IPv6. La marche à suivre est détaillée dans notre guide utiliser GitHub en IPv6 : c'est exactement la même chose pour Discord.

Une fois le réglage fait, vérifiez :

getent ahostsv6 discord.com

Si une adresse IPv6 s'affiche, votre bot pourra joindre Discord.

Bots vocaux : la musique et la voix passent par des serveurs vocaux de Discord en UDP, sur IPv4. Les relais NAT64 publics ne les gèrent pas toujours bien. Pour un bot de musique, testez avant de vous engager sur une longue durée ; pour un bot texte, aucun souci.

1. Créer le bot côté Discord

  1. Ouvrez le Discord Developer Portal et créez une application (« New Application »).
  2. Dans l'onglet Bot, générez le token du bot et copiez-le. C'est le mot de passe de votre bot : ne le publiez jamais, ni sur GitHub ni dans un message.
  3. Toujours dans l'onglet Bot, activez Message Content Intent si votre bot doit lire le contenu des messages (c'est le cas de l'exemple ci-dessous).
  4. Dans OAuth2, générez un lien d'invitation avec le scope bot et les permissions utiles, puis invitez le bot sur votre serveur.

2. Préparer le VPS

Connectez-vous en SSH (voir le guide du VPS IPv6), mettez le système à jour et installez Node.js :

apt update && apt upgrade -y
apt install -y nodejs npm
node --version

discord.js demande une version récente de Node.js : si node --version affiche moins que la version indiquée dans la documentation de discord.js, installez une version plus récente depuis nodejs.org (joignable en IPv6).

Ne faites pas tourner le bot en root. Créez-lui un utilisateur dédié :

adduser --system --group --home /srv/bot bot

3. Installer le bot

cd /srv/bot
sudo -u bot npm init -y
sudo -u bot npm install discord.js

Créez le fichier /srv/bot/index.js avec un bot minimal qui répond « pong » à « !ping » :

const { Client, Events, GatewayIntentBits } = require('discord.js');

const client = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent,
    ],
});

client.once(Events.ClientReady, c => console.log(`Connecté en tant que ${c.user.tag}`));

client.on(Events.MessageCreate, message => {
    if (message.content === '!ping') message.reply('pong');
});

client.login(process.env.DISCORD_TOKEN);

Le token est lu dans une variable d'environnement, jamais écrit dans le code. Rangez-le dans un fichier lisible par le seul utilisateur du bot :

echo 'DISCORD_TOKEN=collez-votre-token-ici' > /srv/bot/.env
chown bot:bot /srv/bot/.env
chmod 600 /srv/bot/.env

Si vous avez déjà un bot en Python (discord.py), la démarche est la même : installez python3-venv, créez un environnement virtuel dans /srv/bot et adaptez la ligne ExecStart ci-dessous.

4. Le garder en ligne avec systemd

systemd démarre le bot avec le serveur et le relance s'il plante. Créez /etc/systemd/system/bot-discord.service :

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

[Service]
User=bot
WorkingDirectory=/srv/bot
EnvironmentFile=/srv/bot/.env
ExecStart=/usr/bin/node index.js
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Puis activez-le :

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

La dernière commande affiche les messages du bot en direct : vous devez voir « Connecté en tant que… ». Tapez !ping sur votre serveur Discord : le bot répond depuis votre VPS. Pour mettre à jour le code plus tard, modifiez les fichiers puis lancez systemctl restart bot-discord.

Questions fréquentes

Quel VPS choisir pour un bot Discord ?

Le VPS Mini (1 vCore, 1 Go de RAM) suffit pour un ou plusieurs bots texte. Prenez le VPS Start ou plus si le bot utilise une base de données, sert un très grand nombre de serveurs ou partage la machine avec d'autres services.

Mon bot peut-il se connecter à Discord en IPv6 ?

Pas directement : les serveurs de Discord ne sont joignables qu'en IPv4. Un service NAT64/DNS64 règle le problème en quelques minutes, comme expliqué dans notre guide NAT64.

Un bot de musique fonctionne-t-il ?

La voix passe par des serveurs vocaux de Discord en UDP sur IPv4, que les relais NAT64 publics ne gèrent pas toujours bien. Testez avant de vous engager ; un bot texte, lui, fonctionne sans souci.

Puis-je héberger plusieurs bots sur le même VPS ?

Oui. Créez un service systemd par bot, chacun avec son dossier et son fichier de token.

Un VPS pour votre bot, dès 1,49 €

Accès root, SSD, RAM ECC, hébergé en France par une association. Prêt en quelques minutes.