Introduction
En tant que joueur passionné, j’ai souvent eu recours à des hébergeurs tels que Omg-serv, Boxtoplay et Verry’s games pour mes serveurs de jeux, qu’il s’agisse de Minecraft, Unturned, Garry’s Mod, GTA V RP (Five M, ALT V) et bien d’autres.
Cependant, cette solution avait un coût non négligeable.
C’est pourquoi, il y a quelques années, mes amis et moi avons pris la décision de passer à un serveur dédié et d’installer Pterodactyl. Cette démarche nous a permis de réduire considérablement nos dépenses liées aux hébergeurs traditionnels.
Dans cet article, nous allons découvrir comment créer vos propres serveurs de jeux en utilisant Pterodactyl.
Présentation Pterodactyl.io
Découvrez Pterodactyl.io, un panneau de gestion de serveur de jeu open source. Avec une priorité donnée à la sécurité, Pterodactyl exécute vos serveurs de jeu dans des conteneurs Docker isolés. Profitez d’une interface utilisateur intuitive pour les administrateurs et les utilisateurs. Ne tardez plus, créez vos propres serveurs de jeu gratuitement et à volonté dès maintenant !
Fonctionnement Technique
Panel :
Le panel et l’interface de gestion de Pterodactyl vous offrent la possibilité d’administrer et de modifier facilement vos serveurs. Vous pouvez gérer tous les aspects de vos serveurs de jeu, de l’administration à la personnalisation, grâce à une interface conviviale et intuitive. Prenez le contrôle total de vos serveurs et adaptez-les selon vos besoins avec facilité.
Wings :
Le Wings, quant à lui, agit en tant qu’agent de liaison et assure le travail sur le serveur. Il est chargé de transmettre les informations nécessaires au conteneur Docker. Grâce à cette collaboration, le Wings garantit une communication fluide et sécurisée entre le panneau de gestion et le serveur, assurant ainsi une exécution optimale de vos serveur de jeux.
Avantage & inconvénient
Avantage
- Possibilité d’ajout de serveur a volonté
- Crée un serveur en 2 minute
- entièrement Open Source
- Les seule limite de votre serveur sont celle fournis par votre machine
Inconvénient
- Base Linux requise
- pas de support
- maintenance mensuel obligatoire
Installation & configuration
Prérequis
- Un VPS/Serveur Dédier/Serveur avec UBUNTU 22 ou Debian 11
- Attention votre serveur doit prendre en charge KVM
Panel :
- PHP 8.2
- mysql
- Redis (
redis-server
) - webserver (nginx)
- certbot
- python3-certbot-nginx
curl
tar
unzip
git
composer
v2
Wings
- curl
- Docker
Etape 1 : Installation des Package & Docker sur serveur
Une fois connecté(e) au serveur, vous pouvez procéder à l’installation des packages nécessaires, ainsi que de Composer et Docker. Voici les étapes générales à suivre :
# faire les mise a jours
apt update && apt upgrade
# Install ensemble des package
apt -y install php8.1 php8.1-{common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip} mariadb-server nginx tar unzip git redis-server python3-certbot-nginx certbot
# installation de composer
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
# installation Docker
curl -sSL https://get.docker.com/ | CHANNEL=stable bash
# démarrage Docker
systemctl enable --now docker
Etape 2 : Configuration Nginx (serveur web)
Nous allons configurer Nginx, mais vous pouvez également le configurer avec Apache2 et choisir de le configurer avec ou sans SSL.
Pour une configuration avancée, cliquer ici
Sinon, nous allons voir une version standard. Commencez par ajouter la configuration Nginx en vous rendant dans le répertoire /etc/nginx/sites-available/ et créez le fichier pterodactyl.conf. Complétez-le avec le contenu suivant, en veillant à bien modifier le <domain>
:
server_tokens off;
server {
listen 80;
server_name <domain>;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name <domain>;
root /var/www/pterodactyl/public;
index index.php;
access_log /var/log/nginx/pterodactyl.app-access.log;
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;
# SSL Configuration - Replace the example <domain> with your domain
ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
ssl_prefer_server_ciphers on;
# See https://hstspreload.org/ before uncommenting the line below.
# add_header Strict-Transport-Security "max-age=15768000; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header Content-Security-Policy "frame-ancestors 'self'";
add_header X-Frame-Options DENY;
add_header Referrer-Policy same-origin;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
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;
include /etc/nginx/fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Après avoir ajouté la configuration de Pterodactyl à Nginx, il ne reste plus qu’à créer le lien symbolique vers le répertoire sites-enabled
Voici les étapes à suivre :
sudo ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
Maintenant, nous allons générer un certificat SSL en utilisant la commande suivante (veuillez remplacer « example.com » par votre propre domaine ou sous-domaine) :
certbot certonly --nginx -d example.com
Pour automatiser le renouvellement du certificat SSL, nous allons ajouter une entrée à la crontab. La crontab est un fichier de configuration qui permet d’exécuter des tâches planifiées à des moments spécifiques. Voici les étapes pour ajouter la crontab pour le renouvellement automatique du certificat SSL :
sudo crontab -e
Ajoutez la ligne suivante à la fin du fichier crontab pour planifier le renouvellement automatique du certificat SSL tous les jours à 23h (vous pouvez ajuster l’horaire selon vos préférences) :
0 23 * * * certbot renew --quiet --deploy-hook "systemctl restart nginx"
Puis rédemarer le service NGINX
systemctl restart nginx
Etape 3 : Install Pterodactyl panel
Pour l’installation du panel web Pterodactyl, suivez les étapes ci-dessous :
mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
# installation et droit
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/
Après avoir terminé l’installation des fichiers, vous devez créer un utilisateur MySQL pour la base de données du panel Pterodactyl. Voici comment procéder :
Si vous souhaitez effectuer une configuration avancée de MySQL, vous pouvez vous référer à la documentation de Pterodactyl : https://pterodactyl.io/tutorials/mysql_setup.html
Sinon, voici une version simplifiée :
mysql -u root -p
# N'oubliez pas de changer 'yourPassword' ci-dessous pour être un mot de passe unique
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'yourPassword';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
exit
Maintenance, finalisation, installation, en copiant le fichier .env et lancer composer afin qu’il installe ensemble des dépendances
cp .env.example .env
composer install --no-dev --optimize-autoloader
# permet de générer la clé de chiffrage
php artisan key:generate --force
Etape 4 : configuration panel Pterodactyl
Maintenant que le panel est installé il ne reste plus qu’à le configurer.
Vous avez deux options :
- Automatique (il suffit de répondre aux questions) :
php artisan p:environment:setup
php artisan p:environment:database
php artisan p:environment:mail
- Manuel (completer les infos du .env a l’aide de nano)
nano .env
Une fois ensemble des informations saisies
3 dans le fichier .env nous devais effectuer la migration de la database :
php artisan migrate --seed --force
pour finir nous mettons les access à apache :
chown -R www-data:www-data /var/www/pterodactyl/*
Etape 5 : création de file d’attente
Pour effectuer un envoi d’action rapide ptérodactyl utilise une crontab.
Pour ajouter une crontab il suffit de taper sudo crontab -e et d’ajouter la ligne suivante :
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1
Rendez vous en /etc/systemd/system et crée le fichier pteroq.service puis remplir le avec le contenu suivant :
# Pterodactyl Queue Worker File
# ----------------------------------
[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service
[Service]
# On some systems the user and group might be different.
# Some systems use `apache` or `nginx` as the user and group.
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
Maintenance il ne reste plus qu’à démarrer les applications :
sudo systemctl enable --now redis-server
sudo systemctl enable --now pteroq.service
Etape 6 : installation Wings
Installation du Wings se fait à l’aide des commandes suivantes :
mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"
chmod u+x /usr/local/bin/wings
Placez le contenu ci-dessous dans un fichier appelé wings.service
dans le /etc/systemd/system
répertoire.
[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
Maintenant il ne nous reste plus qu’à démarrer le wings :
systemctl enable --now wings
Etape 7 : Création du node
Pour commencer il faut se créer un compte d’administration a l’aide la commande suivante à la racine du serveur web (/var/www/pterodactyl)
php artisan p:user:make
Ensuite connectez vous sur le panel et rendez vous dans la partie admin onglets locations (votre.domaine/admin/locations),
et créer une localisation en complétant les informations :
une fois créée rendez vous dans nodes et créez un nouveau node :
Une fois le nodes ajouté, cliquez dessus et rendez vous dans l’onglet configuration puis cliquez sur generate token :
et copier l’ensemble de ligne fournie par Pterodactyl et coller sur le serveur afin de configurer automatiquement le Wings
Elle devrait ressembler à cela :
cd /etc/pterodactyl && sudo wings configure --panel-url https://votre.domaine/ --token qspfskojslkdfshljZAkfsmlfqsghmjsqdsddkgjmsldghfdgdsg --node 7
Une fois effectué redémarrer votre Wings et votre nodes, ils devraient apparaitre en vert sur votre panel
Attention n’oubliez pas d’attribuer une plage de port à votre nodes afin de pouvoir les attribuer à vos serveurs.
Pour se faire cliquer sur le nodes fraîchement créer et rendez vous Allocations
et compléter les information suivantes :
tips : pour ajouter une plage de port (port de début)-(port de fin)
Etape 8 : créer vos serveur de jeux
Maintenant il ne vous reste plus qu’à générer vos serveurs de jeux a volonté !
Il suffira de compléter les champs suivant pour créer vos serveurs
Si vous ne trouvez pas votre serveur de jeux nativement sur install standard vous pouvez toujours chercher ou créer votre eggs, vous même et importer depuis nests et cliquer sur import Egg.
Je vous laisse ici un lien vers un révérenciel Eggs : github Parkervcp/Eggs
J’espère que vous avez appris de nombreuses choses car à partir de maintenant vous ferrez des économies en hébergeant vous mêmes vos serveur de jeux.