Pterodactyl est un logiciel qui permet d’héberger des serveurs de jeux (Minecraft, GTA…) il possède un système de customisation qui lui permet de prendre en charge tous les serveurs de jeux possibles.
Les serveurs de jeux creer le sont sous docker.
L’ajout des containers
Il va falloir installer 4 containers :
- MariaDB : La base de donnees
- Redis : Le cache
- Panel : Le front (la vue web)
- Wings : Le backend (Celui qui gère la création des serveurs de jeux)
Installation
ATTENTION ⚠️
Pterodactyl nécessite que les dossiers lib et log aient le même chemin sur votre system ET DANS LE CONTAINER !
Dans mon tuto j’ai ces 2 chemins :
- /home/Pterodactyl/wings/var/lib/pterodactyl/
- /home/Pterodactyl/wings/var/log/pterodactyl/
Vous pouvez changer le chemin en fonction d’où vous stockez vos fichiers, mais vous devez absolument mapper le même chemin sur votre system et dans le container peu importe la méthode d’installation choisie
Installation docker-compose
Il vous suffit de changer l’emplacement des volumes en fonction de votre serveur ainsi que les variables d’environnements.
docker-compose.yml
version: '3.8'
services:
wings:
image: ghcr.io/pterodactyl/wings:latest
restart: always
tty: true
ports:
- "10103:443"
environment:
TZ: "Europe/Paris"
WINGS_UID: 988
WINGS_GID: 988
WINGS_USERNAME: "pterodactyl"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/var/lib/docker/containers/:/var/lib/docker/containers/"
- "/home/Pterodactyl/wings/etc/pterodactyl/:/etc/pterodactyl/" #À changer
- "/home/Pterodactyl/wings/var/lib/pterodactyl/:/home/Pterodactyl/wings/var/lib/pterodactyl/" #À changer
- "/home/Pterodactyl/wings/var/log/pterodactyl/:/home/Pterodactyl/wings/var/log/pterodactyl/" #À changer
- "/tmp/pterodactyl/:/tmp/pterodactyl/"
PterodactylPanel:
image: ghcr.io/pterodactyl/panel:latest
restart: always
ports:
- "10101:80"
links:
- PterodactylMariadb
- PterodactylRedis
volumes:
- "/home/Pterodactyl/panel/app/var/:/app/var/" #À changer
- "/home/Pterodactyl/panel/app/storage/logs:/app/storage/logs/" #À changer
environment:
APP_TIMEZONE: "Europe/Paris"
APP_URL: "http://panel.jamestech.fr" #À changer
REDIS_HOST: "PterodactylRedis"
DB_PASSWORD: "password" #À changer
APP_ENV: "production"
DB_USERNAME: "pterodactyl"
DB_DATABASE: "pterodactyl"
DB_HOST: "PterodactylMariadb"
DB_PORT: 3306
PterodactylMariadb:
image: mariadb:10.5
restart: always
ports:
- "10102:3306"
volumes:
- "/home/Pterodactyl/db/var/lib/mysql:/var/lib/mysql"
environment:
MARIADB_DATABASE: "pterodactyl"
MARIADB_USER: "pterodactyl"
MARIADB_PASSWORD: "password" #À changer
MARIADB_ROOT_PASSWORD: "password" #À changer
PterodactylRedis:
image: redis:alpine
restart: always
Installation Unraid
Pour les utilisateurs d’Unraid, c’est très simple, il vous suffit d’exécuter cette commande :
wget https://jamestech.fr/wp-content/uploads/2024/01/JamesTech-Tuto-Pterodactyl.zip && unzip JamesTech-Tuto-Pterodactyl.zip -d /boot/config/plugins/dockerMan/templates-user && rm JamesTech-Tuto-Pterodactyl.zip
Cela ajoute les templates dans votre serveur et vous pouvez les retrouver au moment de l’ajout d’un nouveau container :
Il vous suffit se sélectionner le Network Type et de changer le mot de passe de la base de données.
Installation docker run
docker run -d --name wings \
-p 10103:443 \
-e TZ="Europe/Paris" \
-e WINGS_UID=988 \
-e WINGS_GID=988 \
-e WINGS_USERNAME="pterodactyl" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/containers/:/var/lib/docker/containers/ \
-v /home/Pterodactyl/wings/etc/pterodactyl/:/etc/pterodactyl/ \
-v /home/Pterodactyl/wings/var/lib/pterodactyl/:/home/Pterodactyl/wings/var/lib/pterodactyl/ \
-v /home/Pterodactyl/wings/var/log/pterodactyl/:/home/Pterodactyl/wings/var/log/pterodactyl/ \
-v /tmp/pterodactyl/:/tmp/pterodactyl/ \
ghcr.io/pterodactyl/wings:latest
docker run -d --name PterodactylPanel \
-p 10101:80 \
--link PterodactylMariadb \
--link PterodactylRedis \
-v /home/Pterodactyl/panel/app/var/:/app/var/ \
-v /home/Pterodactyl/panel/app/storage/logs:/app/storage/logs/ \
-e APP_TIMEZONE="Europe/Paris" \
-e APP_URL="http://panel.jamestech.fr" \
-e REDIS_HOST="PterodactylRedis" \
-e DB_PASSWORD="password" \
-e APP_ENV="production" \
-e DB_USERNAME="pterodactyl" \
-e DB_DATABASE="pterodactyl" \
-e DB_HOST="PterodactylMariadb" \
-e DB_PORT=3306 \
ghcr.io/pterodactyl/panel:latest
docker run -d --name PterodactylMariadb \
-p 10102:3306 \
-v /home/Pterodactyl/db/var/lib/mysql:/var/lib/mysql \
-e MARIADB_DATABASE="pterodactyl" \
-e MARIADB_USER="pterodactyl" \
-e MARIADB_PASSWORD="password" \
-e MARIADB_ROOT_PASSWORD="password" \
mariadb:10.5
docker run -d --name PterodactylRedis \
redis:alpine
Ajouter les redirections sur votre Reverse Proxy
Sur votre Reverse proxy ajouté une redirection panel.VotreDomaine.fr vers le container Panel sur le port 10101 et la même chose pour wings.VotreDomaine.fr pour le container Wings sur le port 10103
Creation de l’utilisateur Admin
Pour ajouter le premier utilisateur il va falloir executer une commande dans le container du Panel, pour ce faire executer cette commande :
compose_PterodactylPanel_1 est le nom du container en fonction de votre méthode d’installation le nom peut être diffèrent
docker exec -it compose_PterodactylPanel_1 sh
Une fois dans le container exécuté cette commande et remplissez les champs demandés :
php artisan p:user:make
C’est bon, vous pouvez maintenant vous connecter
Ajout du Node
En premier lieu, vous devez ajouter une location :
Maintenant il faut ajouter un Node
Remplacer les differents champs en fonction de votre configuration :
- Name : Vous pouvez mettre ce que vous voulez
- Location : Sélectionner la location créée précédemment
- FQDN : Ajouter le domaine que vous avez configurer plus tôt pour le container Wings
- Communicate Over SSL : Cocher Use SSL Connection
- Behind Proxy : Cocher Behind Proxy
- Daemon Server File Directory : Attention : Vous devez mettre le même lien que dans votre config docker donc pour moi : /home/Pterodactyl/wings/var/lib/pterodactyl
Et ajouter /volumes à la fin :
/home/Pterodactyl/wings/var/lib/pterodactyl/pterodactyl - Total Memory : La ram maximum que l’ensemble de vos serveurs de jeux peuvent utiliser
- Memory Over-Allocation : Mettez 0 pour empêcher la création de nouveau serveur si vous dépassez la ram
- Total Disk Space : La taille maximum que peuvent prendre vos serveurs sur vos disques
- Disk Over Allocation : Mettez 0 pour empêcher la création de nouveau serveur si vous dépassez la taille maximum de stockage configuré
- Daemon Port : Ajouter 443
- Daemon SFTP Port : Laisser 2022
Cliquer sur Create Node et sélectionner l’onglet Configuration
Maintenant, vous allez devoir créer un fichier config.yml et copier cette configuration à l’emplacement /etc/pterodactyl dans le container, donc pour ma configuration cela donne : /home/Pterodactyl/wings/etc/pterodactyl/config.yml
Une fois fait, redémarrer le container Wings et normalement sur le Panel le node devrait apparaître en vert :
Configuration
Penser a ajouter des ports dans l’onglet Allocation de votre Node
Dans IP Adresses ajouter l’ip de votre serveur et pour les ports mettez une plage d’ip pour en ajouter plusieurs
Ajouter un serveur de jeux
Pour ajouter un serveur de jeux il faut se rendre sur Servers, Create New :
Reinseignez les diffenrents champs obligatoire :
- Server Name : Le nom du serveur
- Server Owner : Le propriétaire du serveur
- Default Allocation: Le port principale du serveur
- Addional Allocations : Si vous voulez ajouter des ports supplémentaires (nécessaire pour certains jeux)
- Application Feature Limits : Si vous avez besoin d’une base de données (utilisateur avancé)
- CPU Limit : Le nombre de cœurs processeur allouer au serveur (100 = 1 cœur, 200 = 2 cœurs…) 0 = illimité
- CPU Pinning : Si vous voulez utiliser des cœurs en particulier
- Memory : La memoire du serveur (Ex: 1024 pour 1gb de ram)
- Swap : Le swap alloué (si vous utilisez toutes la ram allouer le serveur utilisera le swap)
- Disk Space : L’espace de stockage attribué au serveur
- Block IO Weight : (utilisateur avancé)
- Nest : Le jeu
- Egg : La version du jeu (Ex: pour Minercaft, on peut sélectionner Vanilla, Forge, Spigot…)
- Docker Image : (utilisateur avancé)
- Startup Command : (utilisateur avancé)
- Service Variables : Change en fonction du jeu
Une fois votre serveur créer cliquer tout en haut à droite sur Exit Admin Control
On voit le serveur que je viens de créer et si je clique dessus, je peux le gérer
Conclusion
J’ai décidé de faire cet article, car l’installation de ce logiciel est un peu complexe, si cela vous a aidé n’hésitez pas a laisser un commentaire.