Pterodactyl : un panel open source pour piloter vos serveurs de jeu
Pterodactyl est un panel de gestion de serveurs de jeu open source, sous licence MIT, concu pour administrer Minecraft, FiveM, Rust, Counter-Strike 2, Valheim, ARK, Terraria et des centaines d'autres jeux depuis une interface web centralisée. Chaque serveur de jeu tourne dans un conteneur Docker isolé avec des limites de CPU, de mémoire et de stockage appliquées par le panel. Le projet compte plus de 4,9 millions de téléchargements et plus de 320 recettes de serveurs (Eggs) maintenues par la communauté.
Ce guide s'adresse aux administrateurs qui veulent installer Pterodactyl sur un VPS Linux ou un serveur dédié pour centraliser la gestion de plusieurs serveurs de jeu. Si vous cherchez une installation orientée FiveM uniquement, consultez notre guide Pterodactyl dédié à FiveM.
Architecture : Panel, Wings et Docker
Pterodactyl se compose de deux logiciels distincts :
- Le Panel : l'interface web construite en PHP (Laravel) et React. C'est le centre de contrôle où l'administrateur crée des serveurs de jeu, gère les comptes utilisateurs, alloue les ressources (CPU, RAM, stockage) et consulte les consoles en temps réel. Le Panel stocke ses données dans MariaDB ou MySQL et utilise Redis pour le cache et les files d'attente.
- Wings : le démon écrit en Go, installé sur chaque machine (node) qui héberge les serveurs de jeu. Wings communique avec le Panel par API sécurisée et lance chaque serveur dans un conteneur Docker isolé. Un node peut héberger plusieurs dizaines de serveurs de jeu, chacun avec ses propres limites de ressources.
Sur une installation simple, le Panel et Wings cohabitent sur la même machine. Sur une infrastructure plus large, le Panel pilote plusieurs nodes distants, chacun équipé de sa propre instance Wings et de ses conteneurs Docker.
Prérequis matériels et logiciels
Pour installer le Panel Pterodactyl, votre serveur doit disposer de :
- Un VPS ou serveur dédié Linux sous Ubuntu 22.04+, Debian 11+ ou RHEL/Rocky/AlmaLinux 8+, avec accès root ;
- PHP 8.2 ou 8.3 avec les extensions
cli,openssl,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,curl,zipetfpm; - MariaDB 10.2+ ou MySQL 5.7.22+ ;
- Redis pour le cache et les files d'attente du Panel ;
- Un serveur web : Nginx (recommandé), Apache ou Caddy ;
- Composer v2 pour les dépendances PHP ;
- Un nom de domaine ou sous-domaine pointé vers le serveur, nécessaire pour le certificat SSL ;
- Docker, nécessaire sur chaque machine exécutant Wings (pas pour le Panel seul).
Les numéros de version exacts (PHP, MariaDB, Wings) évoluent à chaque version majeure de Pterodactyl. Vérifiez la documentation officielle sur pterodactyl.io avant de commencer l'installation.
Installer les dépendances du Panel
Sur Ubuntu 22.04, la version de PHP par défaut (8.1) est trop ancienne pour Pterodactyl. Ajoutez le PPA d'Ondrej Sury pour installer PHP 8.3, puis les autres dépendances :
sudo apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg
LC_ALL=C.UTF-8 sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
sudo apt -y install php8.3 php8.3-{common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip} \
mariadb-server nginx tar unzip git redis-server
Installez Composer v2 pour gérer les dépendances PHP du Panel Laravel :
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Créer la base de données du Panel
Le Panel Pterodactyl stocke les comptes utilisateurs, la configuration des serveurs de jeu, les allocations de ports et les permissions dans une base MariaDB. Créez un utilisateur et une base dédiés :
sudo mariadb -u root -p
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'VotreMotDePasseFort';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
exit
Remplacez VotreMotDePasseFort par un mot de passe unique et robuste. Pour un guide détaillé sur l'installation de MariaDB : installer et configurer MariaDB sur un VPS Linux.
Télécharger et configurer le Panel
Créez le répertoire d'installation, téléchargez la dernière version stable du Panel et installez les dépendances PHP via Composer :
sudo mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
sudo curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
sudo tar -xzvf panel.tar.gz
sudo chmod -R 755 storage/* bootstrap/cache/
cp .env.example .env
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader
php artisan key:generate --force
La commande key:generate crée la clé de chiffrement du Panel, stockée dans le fichier .env. Sauvegardez cette clé immédiatement : sans elle, les données chiffrées (tokens API, configuration Wings) deviennent irrécupérables.
Lancez la configuration interactive. Pterodactyl vous demande successivement les paramètres de session, de cache, de base de données et d'envoi d'e-mails :
php artisan p:environment:setup
php artisan p:environment:database
php artisan p:environment:mail
Initialisez le schéma de la base de données et créez le premier compte administrateur du Panel :
php artisan migrate --seed --force
php artisan p:user:make
Attribuez les permissions des fichiers au serveur web. Sur Ubuntu avec Nginx, l'utilisateur est www-data :
sudo chown -R www-data:www-data /var/www/pterodactyl/*
Tâche planifiée et file d'attente
Le Panel exécute des opérations en arrière-plan : création de serveurs de jeu, sauvegardes automatiques, nettoyage des sessions. Deux composants sont nécessaires pour que ces tâches fonctionnent.
Ajoutez une entrée cron pour le planificateur Laravel :
sudo crontab -e
Insérez cette ligne :
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1
Créez ensuite un service systemd pour la file d'attente du Panel. Enregistrez le fichier /etc/systemd/system/pteroq.service :
[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service
[Service]
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s
[Install]
WantedBy=multi-user.target
Activez et démarrez les services :
sudo systemctl enable --now redis-server
sudo systemctl enable --now pteroq.service
Pour comprendre le fonctionnement des services systemd : créer un service systemd pour un serveur de jeu Linux.
Configurer Nginx et le certificat SSL
Le Panel Pterodactyl est servi par un serveur web. Avec Nginx, le document root pointe vers /var/www/pterodactyl/public et PHP-FPM traite les requêtes via le socket /run/php/php8.3-fpm.sock. La documentation officielle de Pterodactyl fournit un bloc serveur Nginx complet à adapter à votre nom de domaine.
Un certificat SSL est obligatoire : il sécurise les communications entre le navigateur et le Panel, et entre le Panel et Wings. Générez-en un gratuitement avec Certbot et Let's Encrypt : installer Certbot sur un VPS Linux.
Après avoir déposé votre configuration et activé HTTPS, testez et rechargez Nginx :
sudo nginx -t
sudo systemctl reload nginx
Le Panel est maintenant accessible dans votre navigateur sur le domaine configuré. Connectez-vous avec le compte administrateur créé à l'étape précédente. Pour aller plus loin avec Nginx : configurer Nginx en reverse proxy sur un VPS Linux.
Installer Wings et Docker sur un node
Wings est le démon qui lance et supervise les serveurs de jeu dans des conteneurs Docker isolés. Il nécessite Docker pour fonctionner.
Installez Docker sur la machine qui hébergera les serveurs de jeu, puis téléchargez le binaire Wings :
sudo mkdir -p /etc/pterodactyl
sudo curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64"
sudo chmod u+x /usr/local/bin/wings
Dans le Panel, créez un node via le menu Administration, section Nodes. Configurez :
- Le FQDN (nom de domaine complet) de la machine Wings ;
- La plage de ports réservée aux serveurs de jeu ;
- Les limites de mémoire et d'espace disque du node.
Copiez le contenu de l'onglet Configuration du node dans le fichier /etc/pterodactyl/config.yml sur la machine Wings.
Créez le service systemd pour Wings (/etc/systemd/system/wings.service) :
[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service
PartOf=docker.service
[Service]
User=root
WorkingDirectory=/etc/pterodactyl
LimitNOFILE=4096
PIDFile=/var/run/wings/daemon.pid
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s
[Install]
WantedBy=multi-user.target
sudo systemctl enable --now wings
Ouvrez les ports nécessaires dans le pare-feu : le port 8080 pour la communication entre le Panel et Wings, et la plage de ports allouée aux serveurs de jeu. Consultez ouvrir les ports d'un serveur de jeu avec UFW.
Créer un serveur de jeu avec les Eggs
Pterodactyl utilise des Eggs pour définir l'installation et le démarrage de chaque type de serveur de jeu. Un Egg contient l'image Docker, la commande de lancement, les variables de configuration et les scripts d'installation propres à un jeu ou à une variante de serveur. Le projet fournit plus de 320 Eggs couvrant la majorité des jeux hébergeables :
| Jeu | Variantes disponibles | Port par défaut |
|---|---|---|
| Minecraft Java | Vanilla, Paper, Forge, Fabric, Spigot | 25565 |
| FiveM / RedM | Standard | 30120 |
| Rust | Vanilla, Oxide | 28015 |
| Counter-Strike 2 | Standard | 27015 |
| Valheim | Standard | 2456 |
| ARK: Survival Evolved | Standard | 7777 |
| Terraria | Vanilla, tModLoader | 7777 |
| Project Zomboid | Standard | 16261 |
Pour déployer un serveur de jeu dans Pterodactyl :
- Importez le Nest (catégorie de jeu) et l'Egg correspondant dans le Panel (menu Administration > Nests) ;
- Créez un serveur (Administration > Servers > Create New) : sélectionnez le node, l'Egg du jeu et définissez les limites de CPU, mémoire et stockage ;
- Le Panel transmet la configuration à Wings, qui télécharge l'image Docker et exécute le script d'installation automatiquement ;
- Le serveur apparait dans l'interface avec sa console, son gestionnaire de fichiers, ses paramètres de démarrage et ses sauvegardes intégrées.
Chaque serveur de jeu est isolé dans son propre conteneur Docker. Un conteneur qui plante ou sature ses ressources n'affecte pas les autres serveurs hébergés sur le même node.
Gérer les utilisateurs et les permissions
Pterodactyl intègre un système de permissions granulaire adapté à la gestion de serveurs de jeu partagés. L'administrateur crée des comptes utilisateurs dans le Panel, et chaque propriétaire de serveur peut ajouter des sous-utilisateurs (subusers) avec des droits ciblés :
- Console : lecture seule ou envoi de commandes au serveur de jeu ;
- Fichiers : lecture, écriture et suppression dans l'arborescence du serveur ;
- Sauvegardes : création, restauration et téléchargement ;
- Bases de données : création et gestion des bases MariaDB ou MySQL rattachées au serveur ;
- Tâches planifiées (schedules) : programmation de redémarrages ou de commandes récurrentes ;
- Contrôle du serveur : démarrage, redémarrage et arrêt.
L'authentification à deux facteurs (TOTP) est disponible pour chaque compte. Les clés API sont chiffrées et peuvent être restreintes à des adresses IP spécifiques.
Pour sécuriser l'accès SSH à votre serveur avant d'y installer Pterodactyl : sécuriser SSH sur un VPS Linux.
Conclusion
Pterodactyl transforme un VPS Linux ou un serveur dédié en plateforme de gestion de serveurs de jeu complète. L'installation passe par la configuration du Panel (PHP, MariaDB, Redis, Nginx), de Wings et de Docker sur chaque node, mais une fois en place, le panel permet de déployer, superviser et administrer tous vos serveurs de jeu depuis un seul tableau de bord. L'isolation Docker garantit que chaque serveur reste indépendant, et le système d'Eggs couvre la grande majorité des jeux hébergeables sans configuration manuelle du conteneur.