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.
OS | Versions compatibles |
---|---|
Ubuntu | 20.04, 22.04 |
CentOS | 7, 8 |
Debian | 11, 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.
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
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.
- Nginx Avec SSL
- Nginx Sans SSL
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.
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;
}
}
Création du 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é un enregistrement DNS pointant vers l’IP de votre serveur.
Assurez-vous d’avoir configuré le certificat SSL, sinon le serveur web ne démarrera pas correctement.
server {
listen 80;
server_name [votre_domaine];
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;
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;
}
}
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.