Aller au contenu principal

Hébergez votre bot Discord 24/7 sur un VPS fiable, sans coupure.

Voir nos VPS

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 DockerLangageCas d'usage
Node.js 18JavaScript / TypeScriptdiscord.js, eris
Node.js 21JavaScript / TypeScriptdiscord.js (version récente)
Node.js 22JavaScript / TypeScriptdiscord.js (dernière LTS)
Node.js 24JavaScript / TypeScriptdiscord.js (latest)
Python 3.12Pythondiscord.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 :

  1. Laissez la variable Adresse du repo Git vide
  2. Accédez au gestionnaire de fichiers sur le Panel YorkHost
  3. Uploadez vos fichiers (glisser-déposer ou bouton "Upload")
  4. 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.

LangageExemples courants
Node.jsindex.js, bot.js, src/index.js
TypeScriptindex.ts, bot.ts
Pythonmain.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
info

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).

attention

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'))
Sécurité

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 :

  1. Git pull — Si un dépôt Git est configuré, les dernières modifications sont récupérées
  2. Réinstallation propre (si activée) — Suppression de node_modules / .local
  3. Approbation des scripts de build — Les packages listés dans Modules natifs à compiler sont autorisés
  4. Installation des dépendances (si Installation auto activée) :
    • Node.js → npm install (depuis package.json) + packages supplémentaires
    • Python → pip install (depuis requirements.txt) + packages supplémentaires
  5. Recompilation des modules natifsnpm rebuild sur les packages listés
  6. Commande avant démarrage (si renseignée) — Exécution de votre commande personnalisée
  7. Lancement du bot — Exécution du fichier principal (node, ts-node ou python selon 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_FILE correspond-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 :

  1. Cochez Réinstallation propre
  2. Renseignez les modules concernés dans Modules natifs à compiler (ex : better-sqlite3 canvas sqlite3)
  3. Redémarrez le serveur
  4. Une fois le bot en ligne, décochez Réinstallation propre
astuce

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.

astuce

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.jsNode.js minimum
v14Node.js 16.11+
v15Node.js 18+

7. Bonnes pratiques

  • Utilisez un fichier .env pour stocker vos tokens et clés API, jamais en dur dans le code
  • Utilisez package.json ou requirements.txt pour 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