Comment : Installer Pterodactyl sur Fedora 36–40
Pterodactyl est un
système de gestion de serveurs de jeux fournissant une
interface
intuitive
pour les utilisateurs débutants comme expérimentés. Il se constitue de son Panel, l'application web exposée aux
utilisateurs finaux et Wings, le *daemon* qui gère les conteneurs Docker dans lesquelles les serveurs de jeux
s'exécutent.
Installation du Panel
Tout d'abord, mettons à jour le système et installons les différentes dépendances requises :
sudo dnf update
sudo dnf install php php-{cli,gd,mysqlnd,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip} mariadb-server nginx tar unzip git redis composer certbot cronie cronie-anacron
Créons un répertoire pour accueillir le panel, téléchargeons-le et définissons des permissions adéquates :
mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
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/
Créons la base de données (ne pas oublier de modifier yourPassword
par un mot de passe sécurisé) :
mysql -u root -p
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
Installons l'application :
cp .env.example
composer install --no-dev --optimize-autoloader
php artisan key:generate --force
Configurons l'environnement :
php artisan p:environment:setup
php artisan p:environment:database
php artisan p:environment:mail
Migrons la base de données :
php artisan migrate --seed --force
Créons le premier utilisateur :
php artisan p:user:make
Définissons les permissions de manière à ce que NGINX peut correctement interagir avec les fichiers du Panel :
sudo chown -R nginx:nginx /var/www/pterodactyl/*
Configurer les récepteurs de file d'attente
Activez et démarrez le service `crond` :
sudo systemctl enable --now crond.service
Ouvrez la *crontab* :
sudo crontab -e
et entrez-y le contenu suivant :
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1
Créez le fichier /etc/systemd/system/pteroq.service
avec le contenu suivant :
# Pterodactyl Queue Worker File
# ----------------------------------
[Unit]
Description=Pterodactyl Queue Worker
After=redis.service
[Service]
# On some systems the user and group might be different.
# Some systems use `apache` or `nginx` as the user and group.
User=nginx
Group=nginx
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 lancez Redis :
sudo systemctl enable --now redis.service
Activez et lancez le "travailleur de file d'attente" :
sudo systemctl enable --now pteroq.service
Configuration de PHP-FPM
Changez l'utilisateur qui exécute PHP-FPM par nginx
en modifiant le fichier
/etc/php-fpm.d/www.conf
comme
suit :
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = apache
group = nginx
Activez et lancez php-fpm :
sudo systemctl enable --now php-fpm.service
Certificat TLS
Générez un certificat TLS avec l'utilitaire certbot que nous avons installé plus tôt (remplacez
<domaine>
par
votre
nom de domaine) :
sudo mkdir -p /var/www/_letsencrypt
sudo chown www-data /var/www/_letsencrypt
sudo certbot certonly --webroot --domain <domaine> -w /var/www/_letsencrypt
Configuration de NGINX
Créez le fichier /etc/nginx/conf.d/pterodactyl.conf
et insérez-y ce contenu (remplacez
<domaine>
par votre nom de domaine) :
server {
listen 80;
server_name ;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name ;
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
ssl_certificate /etc/letsencrypt/live//fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live//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:/var/run/php-fpm/www.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;
}
}
Activez et lancez NGINX si ce n'est pas déjà fait :
sudo systemctl enable --now nginx.service
Installation de Wings
Installez Docker :
curl -sSL https://get.docker.com/ | CHANNEL=stable bash
Activez et démarrez le :
sudo systemctl enable --now docker
Installez Wings :
sudo mkdir -p /etc/pterodactyl
sudo 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")"
sudo chmod u+x /usr/local/bin/wings
Configuration de Wings
Pour configurer Wings, il vous faut créer un nœud sur le Panel ce qui peut se faire
dans
l'onglet "Nodes" de l'administration. Rendez-vous ensuite dans l'onglet
"Configuration" de
votre nœud nouvellement créé et copiez-y le contenu du fichier de configuration.
Créez le fichier /etc/pterodactyl/config.yml
et insérez-y ce que vous venez de
copier.
Lancement de Wings
Créez le fichier /etc/systemd/system/wings.service
et insérez-y le contenu suivant
:
[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
Activez et démarrez Wings :
sudo systemctl enable --now wings
Conclusion
Dans ce tutoriel, nous avons appris à installer Pterodactyl sur une machine faisant
tourner
Fedora 36–40 ! Pour plus d'informations, vous pouvez consulter la documentation
officielle de
Pterodactyl.