Héberger un Bot Discord
Bienvenue sur YorkHost ! Ce guide vous accompagne pas à pas pour déployer votre bot Discord sur notre infrastructure haute performance, que ce soit en Node.js ou en Python. Grâce à notre panel intuitif et nos serveurs optimisés, votre bot sera en ligne en quelques minutes.
Prérequis
Avant de commencer, assurez-vous d'avoir :
- Un bot Discord créé sur le Portail Développeur Discord
- Le token de votre bot (disponible dans l'onglet "Bot" de votre application)
- Votre code source, soit sur un dépôt Git (GitHub, GitLab…), soit prêt à être uploadé manuellement
- Une offre Bot Discord active sur YorkHost — nos offres incluent un panel de gestion complet, une protection anti-DDoS et un support réactif
1. Choisir son langage
Le langage est détecté automatiquement selon l'extension de votre Fichier principal : un fichier .py lance votre bot en Python, tout le reste en Node.js (les fichiers .ts sont lancés via ts-node). Choisissez simplement l'image Docker correspondant à votre langage et à la version souhaitée.
| Image Docker | Langage | Cas d'usage |
|---|---|---|
| Node.js 18 | JavaScript / TypeScript | discord.js, eris |
| Node.js 21 | JavaScript / TypeScript | discord.js (version récente) |
| Node.js 22 | JavaScript / TypeScript | discord.js (dernière LTS) |
| Node.js 24 | JavaScript / TypeScript | discord.js (latest) |
| Python 3.12 | Python | discord.py, nextcord, pycord |
Pour changer de langage, il suffit de modifier l'image Docker dans les paramètres de votre serveur sur le Panel YorkHost, puis de réinstaller le serveur.
2. Déployer son bot
Vous avez deux méthodes pour mettre votre code sur le serveur.
Méthode 1 : Via un dépôt Git (recommandé)
C'est la méthode la plus simple. Renseignez l'URL de votre dépôt dans la variable Adresse du repo Git :
https://github.com/votre-nom/votre-bot
Le serveur clonera automatiquement votre dépôt à l'installation. À chaque redémarrage, un git pull est effectué pour récupérer les dernières modifications.
Dépôt privé ? Renseignez également votre nom d'utilisateur Git et un Token d'accès personnel dans les variables correspondantes.
Branche spécifique ? Indiquez-la dans la variable Branche Git (ex: main, dev, production). Laissez vide pour la branche par défaut.
Méthode 2 : Upload manuel
Si vous n'utilisez pas Git :
- Laissez la variable Adresse du repo Git vide
- Accédez au gestionnaire de fichiers sur le Panel YorkHost
- Uploadez vos fichiers (glisser-déposer ou bouton "Upload")
- Démarrez votre serveur
3. Configurer les variables
Rendez-vous dans l'onglet Startup de votre serveur sur le Panel YorkHost pour modifier les variables.
Fichier principal
La variable Fichier principal (MAIN_FILE) indique quel fichier lancer au démarrage.
| Langage | Exemples courants |
|---|---|
| Node.js | index.js, bot.js, src/index.js |
| TypeScript | index.ts, bot.ts |
| Python | main.py, bot.py, src/bot.py |
Par défaut : index.js. Modifiez-la selon votre projet.
Packages supplémentaires
La variable Packages supplémentaires (PACKAGES) permet d'installer des dépendances au démarrage, séparées par des espaces. Le gestionnaire de packages utilisé (npm ou pip) est détecté automatiquement.
Exemples Node.js :
discord.js dotenv mongoose express
Exemples Python :
discord.py python-dotenv aiohttp requests
Si votre projet contient un package.json (Node.js) ou un requirements.txt (Python), les dépendances qui y sont listées sont installées automatiquement à chaque démarrage. La variable Packages est surtout utile pour ajouter des dépendances ponctuelles sans modifier ces fichiers.
Installation auto des dépendances
La variable Installation auto des dépendances (AUTO_INSTALL), cochée par défaut, exécute npm install (ou pip install) à chaque démarrage. Décochez-la si vous gérez vos dépendances vous-même : les démarrages seront nettement plus rapides.
Réinstallation propre
La variable Réinstallation propre (CLEAN_INSTALL) supprime node_modules et package-lock.json (ou .local en Python) avant l'installation. À utiliser pour réparer des dépendances cassées, typiquement une erreur NODE_MODULE_VERSION / ERR_DLOPEN_FAILED (voir Dépannage).
Pensez à la décocher après un démarrage réussi, sinon toutes les dépendances sont retéléchargées à chaque boot.
Modules natifs à compiler
La variable Modules natifs à compiler (NPM_APPROVE_SCRIPTS) liste les packages npm autorisés à exécuter leurs scripts de compilation, séparés par des espaces :
better-sqlite3 canvas sqlite3
npm bloque par défaut les scripts d'installation (message install scripts blocked because they are not covered by allowScripts dans la console). Sans cette autorisation, les modules natifs restent compilés pour une autre version de Node et le bot crash au démarrage. Les packages listés sont approuvés puis recompilés (npm rebuild) à chaque démarrage.
Commande avant démarrage
La variable Commande avant démarrage (PRE_START_CMD) exécute une commande shell de votre choix dans /home/container juste avant le lancement du bot. Idéal pour les étapes de build :
npm run build
npx prisma generate
npm ci --omit=dev
npm rebuild better-sqlite3
Laissez-la vide si vous n'en avez pas besoin.
4. Gérer son token Discord
Le token de votre bot ne se configure pas dans les variables du serveur. Il doit être dans votre code, idéalement via un fichier .env à la racine de votre projet.
Créer un fichier .env
Via le gestionnaire de fichiers du Panel YorkHost, créez un fichier .env contenant :
DISCORD_TOKEN=votre_token_ici
Lire le token dans votre code
Node.js (avec le package dotenv) :
require('dotenv').config();
client.login(process.env.DISCORD_TOKEN);
Python (avec le package python-dotenv) :
from dotenv import load_dotenv
import os
load_dotenv()
client.run(os.getenv('DISCORD_TOKEN'))
Ne commitez jamais votre fichier .env sur Git. Ajoutez-le à votre .gitignore.
5. Comprendre le cycle de démarrage
Voici ce qui se passe à chaque fois que vous démarrez votre serveur sur YorkHost :
- Git pull — Si un dépôt Git est configuré, les dernières modifications sont récupérées
- Réinstallation propre (si activée) — Suppression de
node_modules/.local - Approbation des scripts de build — Les packages listés dans Modules natifs à compiler sont autorisés
- Installation des dépendances (si Installation auto activée) :
- Node.js →
npm install(depuispackage.json) + packages supplémentaires - Python →
pip install(depuisrequirements.txt) + packages supplémentaires
- Node.js →
- Recompilation des modules natifs —
npm rebuildsur les packages listés - Commande avant démarrage (si renseignée) — Exécution de votre commande personnalisée
- Lancement du bot — Exécution du fichier principal (
node,ts-nodeoupythonselon l'extension)
Ce processus est entièrement automatique. Vous n'avez qu'à pousser vos modifications sur Git et redémarrer depuis le Panel.
6. Dépannage
Mon bot ne démarre pas
- Vérifiez le fichier principal : le nom dans la variable
MAIN_FILEcorrespond-il bien à votre fichier ? - Vérifiez la console : les erreurs s'affichent dans la console du Panel YorkHost
- Vérifiez l'image Docker : vous êtes bien sur une image Node.js pour du JavaScript, ou Python pour du Python ?
Erreur "Cannot find module"
Votre dépendance n'est pas installée. Ajoutez-la dans la variable Packages ou dans votre package.json / requirements.txt, puis redémarrez.
Erreur ERR_DLOPEN_FAILED / NODE_MODULE_VERSION
Error: The module 'better_sqlite3.node' was compiled against a different Node.js version
using NODE_MODULE_VERSION 141. This version of Node.js requires NODE_MODULE_VERSION 127.
Un module natif (better-sqlite3, canvas, sqlite3...) a été compilé pour une autre version de Node, souvent parce que node_modules a été uploadé depuis votre PC ou que l'image Docker a changé. Pour réparer :
- Cochez Réinstallation propre
- Renseignez les modules concernés dans Modules natifs à compiler (ex :
better-sqlite3 canvas sqlite3) - Redémarrez le serveur
- Une fois le bot en ligne, décochez Réinstallation propre
N'uploadez jamais votre dossier node_modules depuis votre PC : il contient des binaires compilés pour votre machine, pas pour le serveur. Uploadez uniquement votre code et votre package.json, l'installation se fait sur le serveur.
Erreur "TOKEN_INVALID"
Votre token Discord est invalide ou expiré. Régénérez-le sur le Portail Développeur Discord et mettez à jour votre fichier .env.
Mon bot se déconnecte après quelques heures
Vérifiez que votre code gère correctement la reconnexion. Avec discord.js, c'est géré automatiquement. Avec discord.py, assurez-vous de ne pas utiliser client.close() involontairement.
Sur YorkHost, le redémarrage automatique est activé par défaut. Si votre bot crash, il sera relancé automatiquement.
Le git pull écrase mes modifications
Si vous modifiez des fichiers directement sur le Panel alors qu'un dépôt Git est configuré, le git pull automatique au redémarrage peut écraser vos changements. Deux solutions :
- Faites vos modifications sur Git, pas sur le Panel
- Retirez l'adresse Git de la variable pour passer en mode upload manuel
TypeError: Cannot read properties of undefined
En Node.js, cela signifie souvent que vous utilisez une version de discord.js incompatible avec votre version de Node.js. Vérifiez la compatibilité :
| discord.js | Node.js minimum |
|---|---|
| v14 | Node.js 16.11+ |
| v15 | Node.js 18+ |
7. Bonnes pratiques
- Utilisez un fichier
.envpour stocker vos tokens et clés API, jamais en dur dans le code - Utilisez
package.jsonourequirements.txtpour lister vos dépendances plutôt que la variable Packages - Activez les Intents nécessaires sur le Portail Développeur Discord (Message Content, Server Members, etc.)
- Gérez les erreurs dans votre code pour éviter que le bot crash sur une exception non gérée
- Testez en local avant de déployer sur le serveur
Pourquoi choisir YorkHost pour votre bot Discord ?
- Infrastructure française : serveurs hébergés en France pour une latence minimale
- Protection anti-DDoS : votre bot est protégé contre les attaques
- Panel intuitif : gestion simplifiée via notre panel web avec console, gestionnaire de fichiers et SFTP
- Support réactif : notre équipe est disponible pour vous aider via tickets et Discord
- Déploiement automatique : intégration Git native pour des mises à jour en un clic
Découvrir nos offres Bot Discord
Besoin d'aide ?
Si vous rencontrez un problème non couvert par ce guide, contactez notre support :
- Tickets : depuis votre espace client
- Discord : rejoignez notre serveur pour de l'aide communautaire