Installer Pterodactyl Panel et Wings sur Debian 12

Installer Pterodactyl Panel et Wings sur Debian 12

Déployez un panel professionnel de gestion de serveurs de jeux sur votre VPS VeryCloud. Pterodactyl est la référence open-source pour héberger Minecraft, FiveM, Garry's Mod, Rust, Ark et bien d'autres jeux dans des conteneurs Docker isolés.

Introduction

Pterodactyl se compose de deux éléments :

  • Panel : l'interface web (PHP + Laravel + MySQL + Redis) où vos utilisateurs gèrent leurs serveurs
  • Wings : le daemon (Go + Docker) qui exécute réellement les serveurs de jeux

Les deux peuvent être installés sur la même machine ou sur des machines séparées pour scaler. Ce tuto couvre une installation tout-en-un sur un seul VPS.

Prérequis

  • VPS Debian 12 avec au moins 4 GB de RAM (8 GB recommandés)
  • Domaine pointant vers le VPS (ex: panel.votre-domaine.com)
  • Accès root
  • Ports 80, 443, 2022 (SFTP Wings) et 8080 (Wings) ouverts

Étape 1 : Mise à jour et dépendances

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git unzip software-properties-common \
  apt-transport-https ca-certificates gnupg lsb-release

Étape 2 : Installer PHP 8.3, MariaDB, Redis, Nginx

Ajoutez le dépôt PHP de Sury :

curl -sSL https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/sury-php.gpg
echo "deb [signed-by=/etc/apt/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
sudo apt update

Installez la stack :

sudo apt install -y php8.3 php8.3-{cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip,redis} \
  mariadb-server nginx redis-server tar unzip git

Installez Composer :

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Étape 3 : Créer la base de données

sudo mysql

Dans le shell MariaDB :

CREATE DATABASE panel;
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'MotDePasseFort123!';
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Étape 4 : Télécharger Pterodactyl Panel

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/

Étape 5 : Configurer le Panel

Copiez le fichier d'environnement et installez les dépendances :

sudo cp .env.example .env
sudo composer install --no-dev --optimize-autoloader
sudo php artisan key:generate --force

Lancez l'assistant de configuration :

sudo php artisan p:environment:setup
sudo php artisan p:environment:database
sudo php artisan p:environment:mail

Migrez la base et créez un admin :

sudo php artisan migrate --seed --force
sudo php artisan p:user:make

Étape 6 : Permissions et cron

sudo chown -R www-data:www-data /var/www/pterodactyl/*

Ajoutez le cron qui exécute les tâches planifiées :

sudo crontab -e

Ajoutez la ligne :

* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1

Étape 7 : Service Queue Worker

sudo nano /etc/systemd/system/pteroq.service

Contenu :

[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 :

sudo systemctl enable --now redis-server pteroq.service

Étape 8 : Configuration Nginx + SSL

sudo nano /etc/nginx/sites-available/pterodactyl.conf

Contenu minimal HTTP (le SSL sera ajouté juste après par Certbot) :

server {
    listen 80;
    server_name panel.votre-domaine.com;
    root /var/www/pterodactyl/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param HTTP_PROXY "";
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }
}

Activez le site et obtenez un certificat SSL :

sudo ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d panel.votre-domaine.com
sudo systemctl restart nginx

Étape 9 : Installer Docker (pour Wings)

curl -sSL https://get.docker.com/ | CHANNEL=stable sudo bash
sudo systemctl enable --now docker

Étape 10 : Installer 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, allez dans Admin → Nodes → Create New et remplissez les informations. À la fin, copiez le Configuration File Content et collez-le dans :

sudo nano /etc/pterodactyl/config.yml

Créez le service systemd :

sudo nano /etc/systemd/system/wings.service

Contenu :

[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

Démarrez Wings :

sudo systemctl enable --now wings

Étape 11 : Créer une Location et une Allocation

Dans le Panel : Admin → Locations → Create New (ex: Paris-VeryCloud)

Puis Admin → Nodes → votre node → Allocations : ajoutez les IPs et plages de ports disponibles.

Vous pouvez désormais créer vos premiers serveurs de jeux !

Dépannage

Wings ne se connecte pas au Panel

Vérifiez la config :

sudo wings --debug

L'erreur courante est un certificat SSL invalide. Si Wings et Panel sont sur la même machine, désactivez la vérification SSL dans config.yml :

api:
  ssl:
    enabled: false

Erreur 502 sur le Panel

PHP-FPM n'est pas démarré :

sudo systemctl restart php8.3-fpm

Quota disque sur les serveurs

Activez les quotas dans /etc/fstab :

UUID=xxx / ext4 defaults,usrjquota=aquota.user,jqfmt=vfsv0 0 1

Conclusion

Vous disposez maintenant d'une plateforme professionnelle pour héberger des serveurs de jeux. Pour aller plus loin :

  • Ajoutez plusieurs Wings (nodes) sur des VPS différents pour répartir la charge
  • Configurez les sauvegardes automatiques (S3, Backblaze B2)
  • Intégrez l'authentification 2FA
  • Personnalisez les eggs pour vos propres jeux

Ressources

Rejoignez notre serveur communautaire Discord

Pour toute question, suggestion ou simplement pour discuter avec la communauté, rejoignez-nous sur Discord !

900+Membres