Tutoriel écrit par Seb.
Journal des révisions :
- Révision 1 par Blasto le 17 juin 2022
- Révision 2 par Blasto le 25 mai 2024
Pterodactyl est un panel de gestion, gratuit et open-source, pour les serveurs de jeu. Construit avec PHP 8.1, NodeJS et Go, il exécute vos serveurs dans des conteneurs Docker isolés, tout en proposant une interface complète.
Ce panel est un des meilleurs du marché si vous n'avez pas les compétences pour développer votre propre solution. Il est d'ailleurs utilisé par plusieurs hébergeurs français, qui se contentent bien souvent de simplement revendre cette solution (contrairement à mTxServ qui a développé son propre panel avec fonctions exclusives, pour ses offres de serveurs de jeu).
Dans ce tutoriel, nous allons voir comment installer et utiliser le panel Pterodactyl sur son VPS GAME, sous Ubuntu 22.04: Jammy Jellyfish.
Jeux pris en charge
Le panel est compatible avec une grande variété de jeux :
- Minecraft / Minecraft Bedrock
- Rust
- Terraria
- Team Fortress 2
- Counter Strike: Global Offensive (ou Counter-Strike 2)
- Garry's Mod
- ARK: Survival Evolved
- FiveM
- Factorio
- Et bien d'autres !
Cliquez ici pour voir les autres jeux déjà disponibles. Sachez que même si votre jeu n'y est pas, vous pourrez toujours créer un egg personnalisé à votre goût !
Vous pouvez également créer des serveurs vocaux :
- Teamspeak
- Mumble
Dépendances du panel
Pterodactyl est compatible avec les VPS :
- Debian 11 / Debian 12
- Ubuntu 20.04 / 22.04 (la 24.04 n'est pas encore prise en charge à l'heure de ce tutoriel !)
- CentOS 8 / CentOS 9
Dans ce tutoriel, nous allons traiter l'installation uniquement sur Ubuntu mais les étapes sont similaires sur les autres OS, seul le gestionnaire de paquets pourrait différer.
Installation de Pterodactyl
Installation de l'OS
Si votre VPS est déjà installé sur Ubuntu, vous pouvez passer cette étape.
Dans le cas contraire, voici comment installer votre VPS :
- Allez dans le panel de gestion du VPS.
- Sélectionnez la distribution
Ubuntu
. - Choisissez la version
Ubuntu 22.04
et cliquez surInstaller
. - Cliquez sur
Confirmer l'installation
et patientez. - Vous allez recevoir vos identifiants par e-mail, à la fin de l'installation.
Une fois que votre OS est installé et que vous avez reçu vos identifiants par e-mail, connectez-vous via SSH.
Installation des dépendances
C'est parti pour l'installation des dépendances nécessaires au bon fonctionnement du panel Pterodactyl.
Toutes les commandes qui suivent doivent être entrées en administrateur (voir tutoriel se connecter en SSH).
Avant de nous lancer sans réfléchir, sachez que Pterodactyl nécessite que la virtualisation soit active. Sur un VPS hébergé chez mTxServ, vous n'aurez aucun problème. Si vous souhaitez tout de même vérifier avant de vous lancer dans l'installation, entrez la commande lscpu | grep 'vendor\|type'
qui ne doit pas vous retourner d'erreur. Vous devriez voir quelque chose comme :
Hypervisor vendor: KVM
Virtualization type: full
La virtualisation est bien active ? Vous pouvez démarrer l'installation des dépendances (applications, PHP, serveur web, etc) :
apt update
apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
add-apt-repository ppa:redislabs/redis -y
Pour installer le panel, nous avons besoin d'une base de données, qui sera MariaDB :
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
apt update
apt-add-repository universe
apt -y install php8.1 php8.1-{cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip} mariadb-server nginx unzip redis-server
Note: MariaDB est une version optimisée de MySQL. Elle est entièrement compatible avec MySQL et améliore sensiblement les performances, c'est pourquoi nous allons privilégier son utilisation dans ce tutoriel.
On installe maintenant composer :
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Il nous faut également Node.js version 18:
curl -sL https://deb.nodesource.com/setup_18.x | bash -
apt update
apt -y install nodejs make gcc g++
Et pour finir, nous avons besoin de Docker :
curl -sSL https://get.docker.com/ | CHANNEL=stable bash
usermod -aG docker www-data
systemctl enable --now docker
/etc/init.d/docker restart
On peut maintenant passer à la configuration de la base de données MariaDB.
Il vous reste à configurer et sécuriser le serveur SQL. Pour cela, suivez la partie Modification du mot de passe admin du tutoriel sur MySQL / MariaDB.
Vous avez votre mot de passe administrateur et vous avez sécurisé la base de données ? Vous pouvez passer à la suite.
Nous allons maintenant créer un utilisateur spécifique pour le panel dans le serveur SQL. Entrez la commande ci-dessous pour rentrer dans l'outil d'administration, et entrez votre mot de passe:
/usr/bin/mariadb -u root -p mysql
Maintenant que nous sommes dans l'outil de gestion du serveur SQL, créons un nouvel utilisateur pour sécuriser le panel. N'oubliez pas de remplacer VOTRE_PASSWORD
par le mot de passe que vous souhaitez pour ce nouvel utilisateur !
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'VOTRE_PASSWORD';
Maintenant que nous avons notre utilisateur, créons la base de données et ajoutons les permissions à l'utilisateur:
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Vous pouvez maintenant quitter MariaDB en rentrant la commande exit
.
// Solution Reddit Il nous reste une dernière étape cruciale avant de passer à l'installation du panel : Changer les règles de comparaison d'encodage de MariaDB. Ceci est très simple à faire, ne vous inquiétez pas, derrière ce nom barbare, nous n'avons qu'à modifier un paramètre.
Rendez-vous dans le fichier de configuration à l'aide de cette commande :
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Cherchez maintenant la ligne character-set-collations
et remplacez le contenu de la variable par utf8mb4=utf8mb4_general_ci
.
Pour sauvegarder et sortir de Nano, faites CTRL + X
puis appuyez sur Y
et enfin appuyez sur Entrée
.
Installation du panel
Notre VPS est prêt pour installer le panel Pterodactyl, qui permettra ensuite de créer et administrer vos serveurs de jeu.
Afin d'éviter tout problème de sécurité, nous allons installer et lancer le panel avec l'utilisateur www-data
, qui est déjà présent sur notre VPS :
chown -R www-data:www-data /var/www
su -l www-data -s /bin/bash
Si tout se passe bien, vous devriez maintenant voir ceci :
Maintenant que nous sommes sur le bon utilisateur, la première étape consiste à créer le dossier dans lequel le panel sera ajouté :
mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
Une fois que vous avez créé un nouveau répertoire, vous devez télécharger les fichiers et décompresser l'archive. Pour finir, nous allons modifier les droits sur les répertoires.
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/download/v1.11.7/panel.tar.gz
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/
Maintenant que tous les fichiers ont été téléchargés, nous devons le configurer. Nous allons créer le fichier contenant les paramètres de l'environnement, installer les dépendances PHP et générer une nouvelle clé de chiffrement pour l'application.
cp .env.example .env
composer install --no-dev --optimize-autoloader
php artisan key:generate --force
Initialisons la configuration avec la commande suivante (faites un CTRL + C
si vous vous trompez à un moment) :
php artisan p:environment:setup
- Egg Author Email <- Votre adresse email
-
Application URL <- L'adresse IP de votre serveur avec http devant, exemple:
http://51.89.132.2
. -
Application Timezone <- Entrez
Europe/Paris
, si vous vivez en France bien sûr. -
Cache Driver <- Entrez
file
. -
Session Driver <- Entrez
database
. -
Queue Driver <- Entrez
database
. -
Enable UI based settings editor? <- Entrez
yes
. -
Enable sending anonymous telemetry data? <- Entrez
no
.
Passons à l'initialisation des paramètres de base de données:
php artisan p:environment:database
-
Database Host <- Entrez
127.0.0.1
-
Database Port <- Entrez
3306
-
Database Name <- Entrez
panel
-
Database Username <- Entrez
pterodactyl
-
Database Password <- Entrez le mot de passe de l'utilisateur
pterodactyl
, que vous avez configuré plus haut, dans Installation de la base de données.
Attention: Sauvegardez votre clé de chiffrement (APP_KEY
dans le fichier .env
). Elle est utilisée comme clé de cryptage pour toutes les données qui doivent être stockées en toute sécurité (par exemple, les clés API). En cas de perte de la clé, vous perdrez toutes les données chiffrées, même si vous avez des sauvegardes de base de données.
La clé est accessible en faisant la commande cat .env
et elle commence par base64...
, récupérez donc tout ce qui se trouve après APP_KEY=
.
Nous devons maintenant configurer toutes les données de base du panel. La commande ci-dessous peut prendre un certain temps à s'exécuter en fonction de votre VPS, veuillez à NE PAS quitter le processus tant qu'il n'est pas terminé ou vous risquez de corrompre toutes vos données !
php artisan migrate --seed --force
Si tout s'est bien passé, vous devriez voir ceci :
La configuration de base est en place, nous allons créer notre utilisateur qui permettra de se connecter au panel, avec la commande suivante:
php artisan p:user:make
-
Is this user an administrator? (yes/no) <-- Entrez
yes
- Email Adress <-- Votre adresse email
-
Username <- Entrez votre nom d'utilisateur, exemple
Seb
- First Name <- Entrez votre prénom
- Last Name <- Entrez votre nom
- Password <- Entrez le mot de passe qui sera utilisé pour le compte, doit être différent des mots de passe précédents
Le résultat devrait être quelque chose proche de :
+----------+--------------------------------------+
| Field | Value |
+----------+--------------------------------------+
| UUID | 823a13ee-4bfa-43ef-af3d-a868077be3bc |
| Email | seb@mtxserv.fr |
| Username | seb |
| Name | Seb Seb |
| Admin | Yes |
+----------+--------------------------------------+
Votre utilisateur pour se connecter au panel est prêt.
Pour finaliser l'installation, nous devons quitter l'utilisateur www-data
, pour revenir sur l'utilisateur root
. Ensuite, nous allons nous assurer que les permissions des fichiers sont correctes :
exit
chown -R www-data:www-data /var/www/pterodactyl/
Nous arrivons à la fin de l'installation du panel, il nous reste plus qu'à ajouter le système permettant d’exécuter les actions en arrière plan :
echo "* * * * * www-data php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1" >> /etc/crontab
On crée maintenant le service associé :
echo "[Unit]
Description=Pterodactyl Queue Worker
[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
[Install]
WantedBy=multi-user.target" > /etc/systemd/system/pteroq.service
Et on l'active :
systemctl enable --now pteroq.service
Dernière étape, la configuration du serveur web nginx .
Créez un fichier /etc/nginx/sites-available/pterodactyl.conf
, par exemple avec nano :
nano /etc/nginx/sites-available/pterodactyl.conf
et ajoutez le contenu suivant:
server {
listen 80 default_server;
server_name _;
root /var/www/pterodactyl/public;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/pterodactyl.app-error.log error;
# allow larger file uploads and longer script runtimes
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
}
Pour sauvegarder et sortir de Nano, faites CTRL + X
puis appuyez sur Y
et enfin appuyez sur Entrée
.
Activons le site web du panel que nous venons d'ajouter sur le serveur web, et supprimons la configuration par défaut:
rm /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
/etc/init.d/nginx restart
Si besoin, vous pouvez consultez les logs du panel dans /var/log/nginx/pterodactyl.app-error.log
et /var/www/pterodactyl/storage/logs/
.
Et voilà, le panel Pterodactyl est installé sur votre VPS ! Pour aller plus loin dans la configuration, consultez la documentation officielle.
Pour se connecter sur le panel, ouvrez votre navigateur, et allez à l'adresse http://MON_IP/
(n'oubliez pas de remplacer l'IP par celle de votre serveur, pour moi: http://51.38.243.187
). L'identifiant et le mot de passe proviennent de ce que vous avez entré lorsque vous avez utilisé la commande php artisan p:user:make. Si vous n'arrivez pas à vous connecter, reconnectez-vous au VPS en SSH et modifiez le mot de passe de votre utilisateur.
Installation et Configuration de Wings
Maintenant que le panel est prêt, il nous reste à initialiser les données dans l'administration du panel, pour finaliser l'installation de Wings (qui permet au panel de communiquer avec les serveurs de jeu).
Pour installer Wings, entrez les commandes suivantes en root:
mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings https://github.com/pterodactyl/wings/releases/download/v1.11.13/wings_linux_amd64
chmod u+x /usr/local/bin/wings
Ensuite, on va initialiser les données dans le panel. Connectez-vous à Pterodactyl et allez dans les options d'administration :
Nous allons tout d'abord déclarer un nouvel emplacement, nécessaire pour initialiser ensuite la configuration de Wings :
- Allez dans
Locations
. - Cliquer sur
Create New
. - Dans
Short Code
, entrezlocalhost
. - Sauvegardez en cliquant sur
Create
.
Ensuite, créez la Node :
- Allez dans
Nodes
. - Cliquez sur
Create New
. - Dans
name
, entreznode1
. - Dans
FQDN
, indiquez l'adresse IP du VPS, par exemple pour moi51.38.243.187
. - Dans
Communicate Over SSL
, sélectionnezUse HTTP Connection
. - Dans
Daemon Server File Directory
, entrez/var/www/daemon-data
. - Dans
Total Memory
, indiquez la RAM total du VPS en Mo. Dans mon cas j'ai 8 Go, donc 8 * 1024 =8192
. - Dans
Memory Over-Allocation
, entrez0
. - Dans
Total Disk Space
, indiquez l'espace disque réservé pour vos serveurs de jeu sur le VPS, en Mo. Par exemple pour 40 Go, 40 * 1024 =40960
. - Dans
Disk Over-Allocation
, entrez0
. - Sauvegardez la node en cliquant sur
Create
.
On peut maintenant importer la configuration de la node dans Wings. Cliquez sur Configuration
:
Copiez maintenant le contenu dans Configuration File
, et ajoutez le dans un fichier /etc/pterodactyl/config.yml
:
Le contenu de votre fichier /etc/pterodactyl/config.yml
est bon ? On peut créer le service Wings :
echo "[Unit]
Description=Pterodactyl Wings Daemon
[Service]
User=root
WorkingDirectory=/etc/pterodactyl
LimitNOFILE=4096
PIDFile=/var/run/wings/daemon.pid
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=600
[Install]
WantedBy=multi-user.target" > /etc/systemd/system/wings.service
Et on l'active :
systemctl enable --now wings
service wings restart
Vous pouvez vérifier le bon fonctionnement de Wings en consultant le fichier de log /var/log/pterodactyl/wings.log
.
Et voila, le panel est désormais prêt à fonctionner à 100%.
Allocation IP et ports
Avant de pouvoir créer notre premier serveur de jeu, nous devons configurer l'adresse IP qui sera utilisée, ainsi que les ports disponibles.
Pour cela :
- Cliquez sur
Nodes
dans la navigation, et sélectionnez lanode1
. - Cliquez ensuite sur
Allocation
.
Vous devriez voir :
Déclarons notre IP et les ports disponibles pour créer des serveurs de jeu dans la partie Assign New Allocations
:
- Dans
IP Address
, entrez l'adresse IP de votre VPS, par exemple pour moi51.38.243.187
. - Dans
Port
, indiquez les ports disponibles pour créer vos serveurs de jeu par la suite. Vous pouvez rentrer une rangée de port, par exemple:25001-25565
. - Cliquez sur
Submit
.
Et voila, nous avons fini la configuration, il ne reste plus qu'à créer nos serveurs de jeu et profiter du panel ;)
Notre premier serveur de jeu
Tout est prêt, passons enfin à la création d'un serveur de jeu.
Rendez-vous dans l'onglet servers
du panel :
Pour créer un nouveau serveur de jeu :
- Cliquez sur
Create New
. - Dans
Server Name
, entrez le nom du serveur, par exempleServeur de test
. - Dans
Server Owner
, entrez le nom du compte utilisateur qui sera propriétaire du serveur sur le panel, dans mon casSeb
. - Dans
Default Allocation
, sélectionnez le port qui sera utilisé pour le serveur de jeu. - Dans
Memory
, indiquez la RAM allouée à votre serveur Minecraft. Pour notre exemple, on alloue4096
Mo. - Dans
Disk Space
, vous pouvez spécifier l'espace disque max du serveur, nous vous conseillons de rentrer-1
pour désactiver. - Dans
Nest Configuration
, sélectionnez la famille du jeu dans le champNest
, et la version que vous souhaitez utiliser dansEgg
. Pour notre exemple, nous allons sélectionnerMinecraft
etMinecraft Vanilla
. - Dans
Server Version
, vous pouvez spécifier la version que vous souhaitez. - Cliquez sur
Create Server
pour créer votre premier serveur de jeu sur Pterodactyl !
Votre serveur de jeu est prêt !
Pour rentrer dans le panel du serveur de jeu, cliquez sur l'icone:
Et voila, vous avez accès à un super panel pour votre serveur:
Pour démarrer le serveur, cliquez sur Start
.
Attention: dans le cadre d'un serveur Minecraft, vous devez accepter la licence EULA pour pouvoir lancer le serveur. Pour cela, lancez une premiere fois le serveur pour générer les fichiers. Il devrait refuser de se lancer :
Pour accepter la licence:
- Allez dans
File Manager
. - Ouvrez le fichier
eula.txt
. - Ajoutez
eula=true
. - Cliquez sur
Save Content
.
Il ne vous reste plus qu'à redémarrer le serveur :
Erreurs fréquentes
En cas d'erreur de type CSRF lorsque vous soumettez les formulaires, vérifiez le contenu du fichier /var/www/pterodactyl/.env
, notamment le APP_URL
qui doit bien contenir votre adresse http://VOTRE_IP
. Si la ligne SESSION_SECURE_COOKIE
est présente en toute fin du fichier, supprimez-là.
Videz ensuite le cache:
su -l www-data -s /bin/bash
cd /var/www/pterodactyl
php article clear:cache
Aller plus loin
De nombreuses fonctionnalités sont présentes dans Pterodactyl, allant d'une API, en passant par les thèmes, le SSL, les eggs, etc.
Pour en savoir plus, consultez la documentation officielle, et notamment le guide sur l'activation du SSL.