Passer au contenu principal

Serveur dédié : Installation de Pterodactyl

Ce guide a été créé avec les produits suivants :

(Les détails peuvent varier selon les produits de différents fournisseurs, mais les concepts principaux restent les mêmes)

Introduction

Le panneau Pterodactyl est un panneau de contrôle open source conçu pour gérer et héberger facilement des serveurs de jeux. Il offre une interface utilisateur permettant aux administrateurs de configurer et gérer centralement plusieurs serveurs de jeux.

Dans ce guide, nous allons explorer les étapes nécessaires pour installer votre propre instance Pterodactyl sur votre serveur.

Préparation

Vous aurez besoin d’un serveur dédié sous Linux pour installer le panneau Pterodactyl. Vous devez utiliser l’un des systèmes d’exploitation compatibles listés dans le tableau ci-dessous.

OSVersions compatibles
Ubuntu20.04, 22.04
CentOS7, 8
Debian11, 12

Dépendances

Pterodactyl nécessite plusieurs dépendances pour pouvoir être installé et fonctionner correctement. Il s’appuie également sur un gestionnaire de dépendances PHP populaire nommé Composer.

Liste des dépendances

Voici une liste rapide des dépendances dont vous aurez besoin pour ce guide. Rendez-vous dans la section suivante qui explique comment installer ces dépendances.

  • PHP 8.1 avec les extensions suivantes : cli, openssl, gd, mysql, PDO, mbstring, tokenizer, bcmath, xml ou dom, curl, zip, et fpm.
  • MariaDB
  • Serveur web - Dans ce guide, nous utiliserons Nginx.
  • curl
  • tar
  • unzip
  • git
  • composer v2

Installation des dépendances

Commencez par exécuter cette commande essentielle qui vous permettra d’ajouter des paquets non inclus par défaut dans le système.

apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg

Ensuite, installez les dépôts supplémentaires pour PHP, Redis et MariaDB (MySQL).

LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php

Vous devrez aussi installer Redis, nécessaire pour le stockage temporaire des données.

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

Pour le serveur web, nous avons choisi Nginx car il est fiable et open source. Vous devriez l’installer ou utiliser un autre serveur web comme Apache ou Caddy, bien que cela ne corresponde pas parfaitement à ce guide.

sudo apt install nginx # Télécharger et installer Nginx
sudo ufw allow 'Nginx Full' # Ajuster le pare-feu

Nous vous recommandons d’aller sur http://[votre_ip_serveur]/, en remplaçant [votre_ip_serveur] par l’adresse IP de votre serveur pour tester et vérifier que Nginx fonctionne. Vous devriez voir une page d’accueil par défaut.

Ensuite, installez MariaDB qui servira de base de données MySQL.

curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

Enfin, mettez à jour la liste des dépôts et installez les dépendances restantes.

apt update
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

Vous avez maintenant toutes les dépendances nécessaires installées et pouvez passer à l’installation de Composer.

Installation de Composer

Maintenant que vos principales dépendances sont installées, vous devez installer Composer, un gestionnaire de dépendances PHP très populaire. Cela vous permettra de télécharger et installer facilement tout le service Pterodactyl.

Exécutez simplement la commande suivante :

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Télécharger le panneau

Maintenant que tous les prérequis sont en place, vous devez installer le panneau Pterodactyl.

Créez un dossier où le panneau sera stocké avec la commande ci-dessous.

mkdir /var/www/pterodactyl
cd /var/www/pterodactyl

Clonez ensuite le dépôt officiel Pterodactyl GitHub pour télécharger les fichiers nécessaires.

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/

Une fois le clonage terminé, le panneau est téléchargé avec succès. Dans la section suivante, vous configurerez un large éventail de paramètres essentiels pour garantir que le panneau est bien installé et fonctionne correctement.

Installation

La première étape de l’installation consiste à configurer une base de données MySQL qui stockera toutes les données de votre panneau Pterodactyl. Si vous avez déjà une base MySQL prête avec un utilisateur approprié, vous pouvez passer la sous-section suivante.

Configuration de la base de données

Connectez-vous à votre base de données MySQL pour commencer. Si c’est une instance MySQL fraîche, vous pouvez simplement exécuter :

mysql -u root -p

Sinon, si vous avez déjà une instance MySQL, utilisez votre login avec -u pour le nom d’utilisateur et -p pour le champ de mot de passe.

Une fois connecté, créez un nouvel utilisateur que vous utiliserez pour votre instance Pterodactyl. Remplacez [votre_mot_de_passe] par le mot de passe que vous souhaitez utiliser. Faites-le avec :

CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY '[votre_mot_de_passe]';

Maintenant que votre utilisateur est prêt, créez une base de données pour votre instance Pterodactyl. Vous devez aussi accorder les permissions nécessaires à votre nouvel utilisateur pour qu’il puisse agir sur cette base. Exécutez simplement :

CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;

Vous avez configuré avec succès un utilisateur MySQL et une base pour votre instance Pterodactyl, vous pouvez poursuivre l’installation. Tapez exit pour quitter la gestion MySQL.

Poursuite de la configuration

Copiez maintenant le fichier d’environnement par défaut où vous stockerez vos tokens secrets.

cp .env.example .env

Ensuite, utilisez Composer pour installer automatiquement tous les paquets nécessaires en lançant :

composer install --no-dev --optimize-autoloader

Générez aussi une clé de chiffrement pour votre application avec :

php artisan key:generate --force

Configuration de l’environnement

Configurez maintenant votre instance Pterodactyl. Cela se fait simplement en lançant les commandes suivantes. Chaque commande vous guidera dans une configuration interactive couvrant de nombreux paramètres comme les sessions, l’email, le cache, etc.

php artisan p:environment:setup # Première commande
php artisan p:environment:database # Deuxième commande

Configuration de la base de données

L’étape suivante consiste à configurer les données de base nécessaires au fonctionnement du panneau, en utilisant la base que vous avez créée plus tôt. Là encore, lancez simplement la commande suivante.

info

Cela peut prendre quelques minutes. Ne quittez pas le processus sous peine de casser l’installation. Soyez patient :)

php artisan migrate --seed --force

Création de l’utilisateur admin

Maintenant que votre base est prête, créez votre premier utilisateur administrateur pour pouvoir vous connecter à votre panneau Pterodactyl. Faites-le en lançant la commande suivante.

php artisan p:user:make

Configuration des permissions

L’étape suivante consiste à définir les permissions nécessaires sur les fichiers du panneau Pterodactyl pour que l’instance puisse toujours lire et écrire sans problème.

Attribuez les permissions avec la commande :

chown -R www-data:www-data /var/www/pterodactyl/*

Une fois fait, vous devriez pouvoir accéder à votre panneau Pterodactyl en allant à l’adresse suivante, en remplaçant votre_ip par l’IP de votre serveur.

http://[votre_ip]/

Workers de la file d’attente

La dernière étape de l’installation consiste à configurer un cronjob qui s’exécute régulièrement, ainsi qu’un worker de file d’attente responsable de nombreuses tâches en arrière-plan.

Ouvrez d’abord votre crontab avec sudo crontab -e. Une fois ouvert, ajoutez la ligne suivante pour exécuter un cronjob chaque minute pour votre panneau Pterodactyl.

* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1

Ensuite, créez un worker de file d’attente avec systemd qui maintient le processus en arrière-plan.

Créez un nouveau fichier pour le worker en lançant la commande suivante qui ouvrira l’éditeur nano.

nano /etc/systemd/system/pteroq.service

Collez-y le contenu suivant :

# Fichier Worker de la file d’attente Pterodactyl
# ----------------------------------

[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service

[Service]
# Sur certains systèmes, l’utilisateur et le groupe peuvent être différents.
# Certains systèmes utilisent `apache` ou `nginx` comme utilisateur et groupe.
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
note

Si vous utilisez CentOS, remplacez redis-server.service par redis.service dans ce fichier.

Sauvegardez avec CTRL + X puis Y pour confirmer.

Enfin, activez le service Redis et le service que vous venez de créer pour qu’ils démarrent au boot avec :

sudo systemctl enable --now redis-server
sudo systemctl enable --now pteroq.service

Vous avez installé Pterodactyl avec succès sur votre serveur. Vous devriez pouvoir accéder au panneau via l’URL suivante, en remplaçant [votre_ip_serveur] par l’IP de votre serveur.

http://[votre_ip_serveur]

Optionnel : Configuration du serveur web

En bonus, vous pouvez configurer votre serveur web. Dans ce guide, nous avons utilisé Nginx, cette section explique donc comment ajuster sa configuration.

Configurer le serveur web vous permettra d’utiliser votre propre domaine pour le panneau et d’ajouter un certificat SSL à votre site.

Enregistrement DNS du domaine

Pour que votre serveur soit accessible via votre domaine, vous devez créer un enregistrement DNS de type A pour ce domaine. Cela dépend beaucoup de votre fournisseur, mais vous devriez trouver cette option dans un panneau de gestion DNS lié à votre domaine. Le contenu de l’enregistrement doit être l’adresse IP cible de votre serveur.

Suppression de la configuration par défaut

Commencez par supprimer la configuration Nginx par défaut en supprimant simplement le fichier.

rm /etc/nginx/sites-enabled/default

À ce stade, utilisez le contenu ci-dessous pour créer un nouveau fichier de configuration pour votre site Pterodactyl. Décidez si vous souhaitez utiliser SSL ou non, car la configuration et les étapes diffèrent légèrement selon le choix.

Configuration de Certbot

Pour que votre site ait un certificat SSL, vous devez mettre en place un système qui gère et renouvelle automatiquement vos certificats. Ici, vous utiliserez Certbot, open source.

Installez d’abord Certbot sur votre serveur. Pour Nginx, installez aussi le paquet python3 certbot.

sudo apt update
sudo apt install -y certbot
sudo apt install -y python3-certbot-nginx

Ensuite, vous devez configurer la vérification pour générer un certificat. Ici, vous utiliserez un challenge DNS, plus sécurisé qu’un challenge HTTP.

Vous devrez créer un enregistrement DNS TXT pour le domaine que vous souhaitez utiliser. Cela dépend de votre fournisseur, mais vous devriez trouver cette option dans un panneau de gestion DNS.

Lancez la commande suivante qui vous donnera le contenu à mettre dans votre enregistrement DNS TXT. Remplacez [votre_domaine] par votre domaine.

certbot -d [votre_domaine] --manual --preferred-challenges dns certonly

Une fois votre enregistrement DNS configuré, mettez en place le renouvellement automatique via un cronjob. Ouvrez crontab avec sudo crontab -e et ajoutez la ligne suivante pour renouveler le certificat chaque jour à 23h00 heure système.

0 23 * * * certbot renew --quiet --deploy-hook "systemctl restart nginx"

Création du fichier de configuration

Maintenant que votre certificat SSL est prêt, créez votre fichier de configuration.

Ouvrez nano à l’emplacement cible avec le nom de fichier spécifié.

nano /etc/nginx/sites-enabled/pterodactyl.conf

Collez dans l’éditeur la configuration ci-dessous. Remplacez [votre_domaine] par le domaine pour lequel vous avez configuré les enregistrements DNS.

avertissement

Assurez-vous d’avoir configuré le certificat SSL, sinon le serveur web ne démarrera pas correctement.

server_tokens off;

server {
listen 80;
server_name [votre_domaine];
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
server_name [votre_domaine];

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;

client_max_body_size 100m;
client_body_timeout 120s;

sendfile off;

ssl_certificate /etc/letsencrypt/live/[votre_domaine]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[votre_domaine]/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;

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;
}
}

Appliquer la configuration

Maintenant que vous avez modifié la configuration, activez-la avec la commande suivante.

sudo ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf # Pas nécessaire pour CentOS

sudo systemctl restart nginx # Redémarrer Nginx

Si tout s’est bien passé, vous devriez pouvoir accéder facilement à votre panneau Pterodactyl via le domaine que vous avez configuré dans cette section.

Vous avez configuré avec succès votre serveur web pour utiliser votre domaine et ajouter un certificat SSL à votre site.