memoru

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.