Aller au contenu
Discord

Installer un serveur Discord

Ce guide explique comment créer une application et un bot dans le portail développeur Discord, protéger son jeton, l'inviter sur un serveur communautaire, puis l'héberger 24 h/24 sur un VPS Linux (systemd, pm2 ou Docker). Comptez 30 à 45 minutes ; un VPS d'entrée de gamme suffit pour un petit bot.

Dernière mise à jour : 09/10/2026

Ce guide explique comment créer une application et un bot dans le portail développeur Discord, protéger son jeton, l'inviter sur un serveur communautaire, puis l'héberger 24 h/24 sur un VPS Linux (systemd, pm2 ou Docker). Comptez 30 à 45 minutes ; un VPS d'entrée de gamme suffit pour un petit bot.

Installation pas à pas

  1. Activez la double authentification sur votre compte Discord et installez une version LTS actuelle de Node.js (ou Python) sur votre poste.

  2. Créez une application sur discord.com/developers/applications (New Application).

  3. Onglet Bot : générez le jeton (Reset Token), copiez-le une seule fois dans un gestionnaire de mots de passe ou un fichier .env.

  4. N'activez que les Privileged Gateway Intents réellement utilisés (Presence, Server Members, Message Content).

  5. Générez le lien d'invitation (scopes bot + applications.commands, permissions minimales) avec l'outil « Lien d'invitation de bot ».

  6. Ouvrez le lien, choisissez votre serveur (permission « Gérer le serveur » requise) et autorisez.

  7. Écrivez un bot minimal (discord.js) et testez-le en local avec le jeton dans .env.

  8. Préparez un VPS Linux : utilisateur non-root, pare-feu, Node.js (voir le guide « Préparer un VPS »).

  9. Déployez le code, placez le jeton dans un fichier .env (chmod 600) et lancez le bot via systemd, pm2 ou Docker.

  10. Configurez le serveur communautaire : rôles, salons, permissions, webhooks et modération.

Prérequis

Il vous faut un compte Discord (avec A2F), un serveur dont vous êtes propriétaire ou administrateur, et Node.js LTS (ou Python) : vérifiez la version minimale exigée par la version de discord.js que vous installez. Pour l'hébergement : un VPS Linux (1 vCPU et 512 Mo à 1 Go de RAM suffisent généralement pour un petit bot, à ajuster selon votre code). Ne partagez jamais le jeton du bot : il donne le contrôle complet du bot.

Créer l'application et le bot

  • discord.com/developers/applications → New Application → nom → Create.
  • General Information : copiez l'Application ID (c'est le client_id public).
  • Bot → Reset Token → copiez le jeton (affiché une seule fois).
  • Si le jeton fuit (dépôt Git public, capture d'écran…), faites immédiatement Reset Token.

Protéger le jeton (.env)

Ne mettez jamais le jeton dans le code. Utilisez un fichier .env exclu de Git, en lecture seule pour votre utilisateur. Exemple (valeur fictive) :

echo 'DISCORD_TOKEN=ChangeMe!' > .env
chmod 600 .env
echo '.env' >> .gitignore

Privileged Intents

  • Server Members Intent : événements d'arrivée/départ et liste complète des membres.
  • Message Content Intent : lecture du texte des messages (inutile si vous n'utilisez que des commandes slash).
  • Presence Intent : statuts de présence des membres.
  • Au-delà d'un certain nombre de serveurs (100 selon la politique Discord à la date de rédaction), ces intents exigent une vérification du bot : vérifiez la politique en vigueur.

Inviter le bot

Le lien d'invitation a cette forme (client_id fictif, permissions = 3072 : voir et écrire dans les salons). Calculez l'entier avec le calculateur de permissions et assemblez le lien avec l'outil dédié :

https://discord.com/oauth2/authorize?client_id=123456789012345678&scope=bot%20applications.commands&permissions=3072

Bot minimal (discord.js)

Installation : npm init -y && npm install discord.js dotenv. Fichier index.js (consultez discordjs.guide pour la version à jour de l'API) :

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

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

client.once(Events.ClientReady, (c) => console.log(`Logged in as ${c.user.tag}`));

client.login(process.env.DISCORD_TOKEN);

Héberger avec systemd

Fichier /etc/systemd/system/discord-bot.service (adaptez User et chemins ; vérifiez le chemin de node avec « which node »). Puis : sudo systemctl daemon-reload && sudo systemctl enable --now discord-bot ; logs : journalctl -u discord-bot -f.

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

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

[Install]
WantedBy=multi-user.target

Héberger avec pm2

pm2 relance le processus en cas de plantage. La commande « pm2 startup » affiche une commande sudo à exécuter pour démarrer pm2 au boot.

sudo npm install -g pm2
pm2 start index.js --name discord-bot
pm2 save
pm2 startup
pm2 logs discord-bot

Héberger avec Docker

Dockerfile ci-dessous (adaptez la version de Node à celle exigée par discord.js). Construisez puis lancez avec le jeton passé par fichier d'environnement : docker build -t discord-bot . && docker run -d --restart unless-stopped --env-file .env --name discord-bot discord-bot

FROM node:lts-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
USER node
CMD ["node", "index.js"]

Configurer le serveur communautaire

  • Rôles : créez des rôles par fonction (admin, modérateur, membre) et donnez le minimum de permissions ; le rôle du bot doit être placé au-dessus des rôles qu'il gère.
  • Salons : catégories (accueil, règles, général, support, vocal) et permissions par catégorie plutôt que par salon.
  • Webhooks : pour publier l'état de vos serveurs de jeu, construisez l'embed avec l'outil « Créateur d'embed pour webhook ».
  • Modération : niveau de vérification, AutoMod, journal d'audit ; activez l'exigence d'A2F pour les modérateurs dans les paramètres du serveur.
  • Annonce : ajoutez votre serveur de jeu sur game-rank.com/jeux pour gagner en visibilité.

Dépannage

  • « TokenInvalid » / « An invalid token was provided » : jeton erroné, espace en trop, ou jeton réinitialisé. Recopiez-le depuis Reset Token.
  • « Used disallowed intents » : activez l'intent privilégié correspondant dans l'onglet Bot, ou retirez-le du code.
  • « Missing Access » / « Missing Permissions » : le bot n'a pas la permission sur ce salon ou son rôle est trop bas dans la hiérarchie.
  • Les commandes slash n'apparaissent pas : le scope applications.commands manquait à l'invitation, ou les commandes ne sont pas enregistrées (déploiement) ; réinvitez le bot avec le bon lien.
  • Le bot se déconnecte sur le VPS : lisez les logs (journalctl -u discord-bot -f), vérifiez la mémoire disponible et que Restart=on-failure est bien défini.

Questions fréquentes

Un bot Discord est-il gratuit ?
Créer un bot dans le portail développeur est gratuit. Seul l'hébergement (VPS ou machine toujours allumée) peut coûter quelques euros par mois.
Que faire si mon jeton a fuité ?
Cliquez immédiatement sur Reset Token dans l'onglet Bot, mettez à jour votre fichier .env, redémarrez le bot et vérifiez le journal d'audit du serveur.
systemd, pm2 ou Docker ?
systemd est le plus léger et intégré à Linux ; pm2 est pratique si vous gérez plusieurs processus Node.js ; Docker isole l'environnement et simplifie le déploiement reproductible. Tous trois redémarrent le bot après un plantage.
Ai-je besoin d'un port ouvert pour héberger un bot ?
Non : le bot ouvre lui-même une connexion sortante vers Discord. Seul le port SSH doit rester accessible pour l'administration (sauf si vous exposez un serveur web).

Outils pour votre serveur Discord

Discord
DiscordAccès libre
Composez un message de webhook Discord avec embeds, aperçu en direct, JSON et exemple curl. Rien n'est envoyé depuis le site.
WebhookEmbedOuvrir
Documentation
Discord
DiscordAccès libre
Convertissez l'entier de permissions Discord en cases à cocher et inversement, avec les valeurs de bits officielles.
PermissionsBotOuvrir
Documentation
Discord
DiscordAccès libre
Construisez l'URL OAuth2 d'invitation de votre bot : client_id, scopes, permissions, serveur préselectionné.
OAuth2BotOuvrir
Documentation