Héberger un bot Discord sur Pterodactyl
Ce guide vous explique comment héberger et configurer un bot Discord sur un panel Pterodactyl.
Prérequis
Créer votre bot Discord
- Rendez-vous sur le Discord Developer Portal
- Cliquez sur New Application
- Donnez un nom à votre application
- Dans le menu de gauche, allez dans Bot
- Cliquez sur Add Bot
- Copiez le Token de votre bot (gardez-le secret !)
Ne partagez jamais votre token Discord. Si vous le perdez ou le divulguez, régénérez-le immédiatement depuis le Developer Portal.
Activer les intents nécessaires
Dans la section Bot du Developer Portal :
- Activez les Privileged Gateway Intents dont vous avez besoin :
PRESENCE INTENT: Pour voir le statut des membresSERVER MEMBERS INTENT: Pour accéder aux informations des membresMESSAGE CONTENT INTENT: Pour lire le contenu des messages
Les intents sont nécessaires pour que votre bot puisse recevoir certains événements de Discord.
Inviter votre bot sur un serveur
- Dans le menu de gauche, allez dans OAuth2 > URL Generator
- Cochez
botdans Scopes - Sélectionnez les permissions nécessaires dans Bot Permissions
- Copiez l'URL générée et ouvrez-la dans votre navigateur
- Sélectionnez le serveur où inviter le bot
Préparer votre bot pour l'hébergement
Structure de projet recommandée
Votre projet doit contenir au minimum :
mon-bot-discord/
├── index.js # Point d'entrée principal
├── package.json # Dépendances et scripts
├── .env # Variables d'environnement (ne pas commit !)
└── node_modules/ # Dépendances installées
Exemple de package.json
{
"name": "mon-bot-discord",
"version": "1.0.0",
"description": "Mon bot Discord",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"discord.js": "^14.14.1",
"dotenv": "^16.3.1"
},
"engines": {
"node": ">=18.0.0"
}
}
Exemple de code minimal (index.js)
require('dotenv').config();
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
],
});
client.on('ready', () => {
console.log(`✅ Bot connecté en tant que ${client.user.tag}`);
});
client.on('messageCreate', (message) => {
if (message.author.bot) return;
if (message.content === '!ping') {
message.reply('Pong ! 🏓');
}
});
client.login(process.env.DISCORD_TOKEN);
Configuration sur Pterodactyl
1. Commander votre serveur Discord Bot
Pour héberger votre bot Discord sur YorkHost :
- Rendez-vous sur yorkhost.fr/fr/discord
- Choisissez l'offre adaptée à vos besoins (minimum 512 Mo de RAM recommandé)
- Finalisez votre commande
- Une fois le serveur créé, accédez à votre panel de jeu
Votre serveur sera automatiquement configuré avec l'image Node.js nécessaire pour faire fonctionner votre bot Discord.
2. Uploader vos fichiers
Via l'interface web
- Dans le panel, allez dans Files
- Supprimez les fichiers d'exemple si présents
- Uploadez vos fichiers :
index.jspackage.json- Autres fichiers de votre projet (sauf
node_modules)
Via SFTP
- Dans le panel, allez dans Settings
- Notez les informations de connexion SFTP
- Utilisez un client FTP comme FileZilla ou WinSCP
- Transférez vos fichiers
N'uploadez jamais le dossier node_modules. Les dépendances seront installées automatiquement sur le serveur.
3. Configurer les paramètres de démarrage (Startup Parameters)
Dans le panel, allez dans Startup Parameters. Voici les paramètres à configurer :
Image
- Choisissez Node Js 24 (ou 18, 20)
- C'est la version de Node.js qui exécutera votre bot
Main file
- Mettez index.js (ou le nom de votre fichier principal)
- C'est le fichier qui sera lancé au démarrage
Additional Node packages
- Laissez vide si vos dépendances sont dans
package.json - Sinon, vous pouvez forcer des versions :
discord.js@14.14.1
Token Discord (DISCORD_TOKEN)
- Collez votre token copié depuis le Developer Portal
- Ne le partagez jamais !
Si vous débutez, laissez tous les autres paramètres par défaut. Vous n'avez besoin de modifier que Main file et DISCORD_TOKEN.
Utilisation avec Git (optionnel)
Si votre code est sur GitHub/GitLab :
- Git Repo Address :
https://github.com/username/mon-bot.git - Install Branch :
main(ou votre branche) - Auto Update :
1pour mettre à jour automatiquement au redémarrage
Si vous uploadez vos fichiers manuellement, laissez Git Repo Address vide.
4. Installer les dépendances
Pterodactyl installera automatiquement les dépendances au démarrage. Si ce n'est pas le cas :
- Allez dans Console
- Le serveur exécutera
npm installautomatiquement - Attendez que l'installation se termine
Démarrer votre bot
- Dans le panel, cliquez sur Start
- Surveillez la console pour voir les logs
- Vous devriez voir le message :
✅ Bot connecté en tant que VotreBot#1234
Allez sur Discord et vérifiez que votre bot est en ligne (statut vert).
Gestion du bot
Redémarrage automatique
Pour redémarrer automatiquement le bot en cas de crash, modifiez votre package.json :
{
"scripts": {
"start": "node index.js"
}
}
Pterodactyl redémarrera automatiquement le processus si l'option est activée dans les paramètres du serveur.
Activer le redémarrage automatique
- Dans le panel, allez dans Startup
- Vérifiez que l'option de redémarrage automatique est activée
- Configurez le délai de redémarrage si nécessaire
Surveiller les logs
Les logs sont disponibles dans la Console du panel. Vous pouvez :
- Voir les messages de démarrage
- Détecter les erreurs
- Surveiller l'activité du bot
Mise à jour du bot
Méthode 1 : Via l'interface web
- Arrêtez le bot
- Uploadez les fichiers modifiés
- Redémarrez le bot
Méthode 2 : Via SFTP
- Connectez-vous en SFTP
- Remplacez les fichiers modifiés
- Redémarrez le bot depuis le panel
Méthode 3 : Via Git (recommandé)
Si votre bot est sur GitHub/GitLab :
- Accédez à la console du serveur
- Exécutez
git pullpour récupérer les modifications - Redémarrez le bot
Vous pouvez créer un script pour automatiser la mise à jour via un webhook Discord ou une commande personnalisée.
Problèmes courants
Le bot ne démarre pas
Vérifications :
- Le token Discord est correct et valide
- Le fichier
package.jsonest valide (vérifiez la syntaxe JSON) - Les dépendances sont installées (
npm install) - La version de Node.js est compatible (18+ pour Discord.js v14)
Solution : Consultez les logs dans la console pour identifier l'erreur exacte.
Token invalide
Error: Used disallowed intents
Solution : Activez les intents nécessaires dans le Discord Developer Portal.
Erreur de mémoire
JavaScript heap out of memory
Solution : Augmentez la RAM allouée au serveur dans les paramètres Pterodactyl.
Le bot se déconnecte régulièrement
Vérifications :
- La RAM allouée est suffisante (minimum 512 Mo)
- Aucune erreur dans les logs
- La connexion réseau est stable
Solution : Vérifiez les logs pour identifier les erreurs et ajustez les ressources si nécessaire.
Optimisation et bonnes pratiques
Gestion des erreurs
Ajoutez des gestionnaires d'erreurs pour éviter les crashs :
client.on('error', (error) => {
console.error('Erreur Discord:', error);
});
process.on('unhandledRejection', (error) => {
console.error('Promesse rejetée non gérée:', error);
});
Utiliser PM2 (optionnel)
PM2 est un gestionnaire de processus qui peut redémarrer automatiquement votre bot :
{
"scripts": {
"start": "pm2 start index.js --name mon-bot"
}
}
Logging
Utilisez une bibliothèque de logging comme Winston pour mieux gérer les logs :
npm install winston
Base de données
Si votre bot utilise une base de données :
- Utilisez les variables d'environnement pour les credentials
- Privilégiez SQLite pour les petits projets
- Utilisez MySQL/PostgreSQL pour les projets plus importants
Sécurité
Protection du token
- ✅ Utilisez toujours
.envpour stocker le token - ✅ Ajoutez
.envau.gitignore - ✅ Ne commitez jamais le token sur GitHub
- ❌ Ne partagez jamais votre token
Permissions du bot
N'accordez que les permissions strictement nécessaires :
- Évitez les permissions d'administrateur sauf si absolument nécessaire
- Utilisez le principe du moindre privilège
- Révisez régulièrement les permissions
Rate limiting
Discord applique des limites de taux (rate limits). Assurez-vous de :
- Ne pas envoyer trop de messages rapidement
- Utiliser les fonctions de cache de Discord.js
- Gérer correctement les erreurs 429 (Too Many Requests)
Ressources utiles
Support
Si vous rencontrez des problèmes :
- Consultez les logs du serveur dans la console Pterodactyl
- Vérifiez la documentation Discord.js pour votre version
- Contactez le support YorkHost pour les problèmes d'hébergement