Tutoriel6 février 2026, mis à jour le 7 octobre 20265 min de lecture

Déployer un Bot discord.js en 5 Minutes sur Fastheberg

Vous avez un index.js qui tourne sur votre machine. Voici comment le mettre en ligne sur le panel, étape par étape, avec les messages d'erreur qu'on voit passer le plus souvent et ce qu'ils veulent dire.

Par Thomas Durand, Fastheberg

Avant de commencer

discord.js est la bibliothèque la plus utilisée pour écrire un bot Discord en JavaScript, et c'est ce que font tourner la majorité des serveurs Node.js chez nous. Ce tutoriel suppose que votre bot fonctionne déjà en local. Si ce n'est pas le cas, l'exemple minimal plus bas suffit pour suivre jusqu'au bout.

Il vous faut :

  • Une application et son bot créés sur le portail développeur Discord, avec le token copié quelque part de sûr. Discord ne l'affiche qu'une fois.
  • Le bot invité sur un serveur de test où vous pourrez vérifier qu'il répond.
  • Un package.json avec discord.js dans les dépendances. discord.js 14 demande Node.js 18 ou plus récent, ce que le serveur fournit.

L'exemple le plus court qui fasse quelque chose de visible. Il répond « Pong » quand on lui écrit !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é : ${c.user.tag}`);
});

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

client.login(process.env.TOKEN);

Et le package.json qui va avec :

{
  "name": "mon-bot",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "discord.js": "^14.16.0"
  }
}

Cet exemple lit le contenu des messages, donc il a besoin de l'intent Message Content. C'est un intent privilégié : il faut l'activer à la main dans le portail développeur, onglet Bot, section Privileged Gateway Intents. Si vous l'oubliez, le bot refusera de se connecter avec l'erreur Used disallowed intents. C'est l'oubli numéro un.

1

Commander le serveur

Créez un compte et commandez le plan gratuit en choisissant Node.js comme environnement. Une adresse e-mail, un mot de passe, pas de carte bancaire. Pour ce tutoriel, les 128 Mo de RAM du plan gratuit sont largement suffisants : un bot comme celui ci-dessus en consomme une fraction.

Le serveur est créé automatiquement dans les 120 secondes qui suivent la commande. Si votre vrai bot a besoin d'une base de données ou fait de l'audio, prenez plutôt Standard ou Pro dès maintenant, les étapes qui suivent sont identiques.

2

Ouvrir le panel

L'e-mail de livraison contient l'adresse du panel Pterodactyl et vos identifiants. Une fois connecté, vous arrivez sur votre serveur Node.js. Quatre onglets vont servir dans ce tutoriel :

  • Console : les logs du bot en direct, et un terminal pour taper des commandes.
  • Fichiers : un explorateur avec envoi par glisser-déposer, édition en ligne et décompression d'archives.
  • Startup : le fichier à lancer et les variables d'environnement.
  • L'accueil du serveur, avec les graphiques de RAM et de CPU. Utile à la fin, et les jours suivants.

Rien à installer côté serveur : Node.js est déjà là, et les dépendances npm seront installées au premier démarrage. L'ensemble des fonctions du panel est disponible sur le plan gratuit aussi.

3

Envoyer le code

Par le gestionnaire de fichiers

Onglet Fichiers, puis glissez-déposez index.js, package.json et le reste de votre projet. Pour un projet avec des dossiers, c'est plus rapide de tout zipper, de déposer l'archive et de choisir « Décompresser » dans son menu. Une fois extraite, supprimez l'archive, elle ne sert plus à rien et prend de la place.

Laissez node_modules sur votre machine. Le dossier est lourd, contient des binaires compilés pour votre système, et le serveur le reconstruit de toute façon avec npm install au premier démarrage, à partir du package.json.

Par Git

Si le code est sur GitHub ou GitLab, c'est la méthode qu'on préfère, parce que les mises à jour se résument ensuite à un git pull. Dans l'onglet Console, tapez :

git clone https://github.com/votre-pseudo/mon-bot.git .

Le point final compte : il clone dans le dossier courant au lieu de créer un sous-dossier, et le panel cherche index.js à la racine. Pour un dépôt privé, utilisez un jeton d'accès dans l'URL plutôt que votre mot de passe.

4

Renseigner le token

Le code lit le token dans process.env.TOKEN. Il faut donc que le serveur ait une variable d'environnement de ce nom. Onglet Startup : la variable prévue pour le token est là, collez-y la valeur copiée depuis le portail développeur. Si la variable du panel porte un autre nom que celui de votre code, alignez l'un sur l'autre, c'est la seule chose qui compte.

Vérifiez aussi, dans le même onglet, que le fichier de démarrage est bien index.js. Si votre point d'entrée s'appelle bot.js ou vit dans src/, c'est ici qu'on le dit.

Vous préférez un fichier .env comme en local ? Ça marche aussi, en ajoutant dotenv aux dépendances et une ligne en tête de fichier :

require('dotenv').config();

L'avantage de l'onglet Startup, c'est qu'aucun secret ne traîne dans vos fichiers, donc aucun risque de l'envoyer sur Git par mégarde. Discord surveille les dépôts publics et révoque les tokens qu'il y trouve ; un bot qui tombe « sans raison » un mardi soir, c'est souvent ça.

5

Démarrer et lire la console

Bouton Démarrer. Le serveur installe les dépendances listées dans le package.json, puis lance index.js. La première fois, l'installation prend de quelques secondes à une minute. Vous devez finir par voir :

Connecté : MonBot#1234

Sur Discord, la pastille du bot passe au vert. Tapez !ping dans un salon où il a accès : « Pong ». Le bot restera en ligne navigateur fermé, PC éteint, et sera relancé par le panel s'il plante.

Si la console dit autre chose

Les messages qu'on voit passer le plus souvent, et ce qu'ils signifient :

Dans la consoleCauseCorrectif
Used disallowed intentsUn intent privilégié demandé dans le code mais pas activé côté Discord.Portail développeur, onglet Bot, activer Message Content (et Server Members si vous l'utilisez).
TokenInvalidToken mal copié, régénéré entre-temps, ou nom de variable différent entre le panel et le code.Recopier le token depuis le portail, vérifier le nom de la variable dans Startup.
Cannot find module 'xxx'Une dépendance utilisée dans le code mais absente du package.json.L'ajouter aux dependencies, redémarrer.
Cannot find module '/home/container/index.js'Le fichier de démarrage n'est pas à la racine, ou porte un autre nom.Corriger le nom du fichier dans l'onglet Startup, ou déplacer les fichiers à la racine.
Arrêt sans message, puis redémarrageLe bot a dépassé la mémoire du plan et le conteneur a été coupé.Regarder le graphique de RAM, alléger les intents et les caches, ou changer d'offre.

Pour tout le reste, copiez les dernières lignes de la console dans un message sur notre Discord. On lit les logs toute la journée, c'est souvent réglé en quelques échanges.

Trois choses à faire dans la foulée

Empêcher une erreur de faire tomber tout le bot

Le panel relance le bot s'il plante, mais chaque crash coûte quelques secondes hors ligne et tout ce qui était en mémoire. Deux écouteurs en haut d'index.js transforment la plupart des crashs en simples lignes de log :

process.on('unhandledRejection', (error) => {
  console.error('Promesse rejetée sans catch :', error);
});

client.on(Events.Error, (error) => {
  console.error('Erreur côté client Discord :', error);
});

Regarder la RAM après une journée

Un bot discord.js simple se stabilise bien en dessous des 128 Mo du plan gratuit. Ce qu'il faut surveiller, c'est une courbe qui monte sans jamais redescendre : en général un tableau ou un cache qui ne se vide pas. Vu tôt sur le graphique, ça se corrige en cinq minutes. Vu tard, ça se manifeste par des redémarrages. Si le bot grandit et que la courbe se rapproche du plafond, Standard donne huit fois plus de marge pour moins de deux euros.

Prévoir la mise à jour suivante

Avec Git : git pull dans la console, puis Redémarrer. Sans Git : remplacer les fichiers modifiés dans l'onglet Fichiers, puis Redémarrer. Dans les deux cas, le bot est de retour en ligne en quelques secondes. Si vous avez ajouté une dépendance, le redémarrage l'installe tout seul.

Les cinq étapes en une fois

  1. 1Commander le plan gratuit en environnement Node.js.
  2. 2Ouvrir le panel avec les identifiants reçus par e-mail.
  3. 3Déposer le code dans Fichiers, ou git clone depuis la Console. Sans node_modules.
  4. 4Coller le token dans Startup, vérifier le nom du fichier de démarrage.
  5. 5Démarrer, lire la console, vérifier la pastille verte sur Discord.

À lire ensuite

Votre index.js attend

Serveur livré en 120 secondes, panel Pterodactyl, support sur Discord.

Plan gratuit : 0 €/mois, 128 Mo de RAM DDR4, Intel Gold à 4,2 GHz, 512 Mo de SSD, sans carte bancaire.