Utilisateur d'origine : Pierre
L'une des utilisations les plus fréquentes des VPS est l'installation de Pterodactyl. En effet, Pterodactyl est une solution tout-en-un permettant de créer et gérer des serveurs de jeu depuis une interface web. Il supporte de nombreux jeux, comme Minecraft, CSGO, Garry's Mod, etc... Enfin, chaque serveur est créé dans son propre container Docker.
Pré-requis
Si votre VPS utilise la technologie OpenVZ, l'hébergeur doit obligatoirement supporter Docker, autrement, Pterodactyl ne fonctionnera pas. Tous les VPS Dyjix sont compatibles avec Docker, mais il est nécessaire de l'activer par simple demande au support (attention cependant, cette demande doit être faite après chaque réinstallation).
De plus, Pterodactyl supporte un nombre limité d'OS :
- Ubuntu : 18.04 et 20.04
- Debian : 9 et 10
- CentOS : 7 et 8
Ce tutoriel est réalisé sur la base d'un VPS sous Debian 10. Si vous utilisez un OS différent, il est possible que vous deviez adapter certaines commandes, notamment lors de l’installation des dépendances.
Installation du panel
Dépendances
Tout d'abord, il est nécessaire d'installer quelques dépendances :
apt update
apt install curl nano software-properties-common php7.3 php7.3-{cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip} mariadb-server apache2 libapache2-mod-php tar unzip git redis-server
systemctl enable --now redis-server.service
Composer doit également être installé grâce à cette commande :
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Configuration de la base de données
Premièrement, nous devons configurer MySQL. Pour ce faire, entrez la commande suivante :
mysql_secure_installation
Le programme vous demande plusieurs informations :
- Changer le mot de passe root : Oui (choisissez un mot de passe fort)
- Supprimer l'utilisateur anonyme : Oui
- Interdire l'utilisateur root à distance : Oui
- Supprimer la base de données de test : Oui
- Recharger la table des privilèges : Oui
Une fois que MySQL est configuré, nous pouvons nous connecter au serveur :
mysql -uroot -p
Entrez le mot de passe que vous avez choisi lors de la configuration. Désormais, nous pouvons créer une base de données pour Pterodactyl, ainsi que l'utilisateur correspondant :
CREATE DATABASE pterodactyl;
CREATE USER 'pterodactyl'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON pterodactyl.* TO 'pterodactyl'@'localhost';
FLUSH PRIVILEGES;
EXIT;
A la fin de la deuxième commande, remplacez évidemment password
par un mot de passe fort, et notez-le.
Configuration du serveur web
Le panel sera installé dans le répertoire /var/www/pterodactyl
. Commençons par le créer :
mkdir /var/www/pterodactyl
Maintenant, éditons la configuration par défaut d'Apache :
nano /etc/apache2/sites-available/000-default.conf
Note : si vous aviez déjà un ou plusieurs sites configurés sur Apache, vous ne devez pas éditer ce fichier de configuration mais plutôt créer un nouveau VirtualHost pour Pterodactyl. Vous pouvez également choisir de placer le panel Pterodactyl dans un sous-dossier de votre site web principal, mais ce n'est pas conseillé.
Supprimez tout le contenu du fichier et remplacez-le par ce qui suit :
<VirtualHost *:80>
DocumentRoot "/var/www/pterodactyl/public"
AllowEncodedSlashes On
php_value upload_max_filesize 100M
php_value post_max_size 100M
<Directory "/var/www/pterodactyl/public">
AllowOverride all
</Directory>
</VirtualHost>
Quittez l'éditeur avec Ctrl-X puis Y et Entrée.
Enfin, activez le module rewrite
et redémarrez Apache :
a2enmod rewrite
service apache2 restart
Installation
Premièrement, plaçons nous-nous dans le répertoire créé lors de la configuration du serveur web et téléchargeons la dernière version du panel :
cd /var/www/pterodactyl
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
Maintenant, nous allons décompresser l'archive obtenue et configurer les permissions du répertoire :
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/
rm panel.tar.gz
Il est désormais temps de générer la configuration de Pterodactyl et de générer la clé de chiffrement qu'il va utiliser :
cp .env.example .env
composer install --no-dev --optimize-autoloader
php artisan key:generate --force
A ce stade, je vous conseille de sauvegarder une copie du fichier .env à l'extérieur de votre serveur (à un endroit sûr). Il contient la clé utilisée pour chiffrer et déchiffrer les données sensibles de Pterodactyl. En cas de perte, il sera impossible de retrouver ces données.
Configurons maintenant Pterodactyl :
php artisan p:environment:setup
Le script vous demande plusieurs informations :
- L'adresse mail à partir de laquelle seront envoyés les mails du système
- L'URL du panel (si vous n'avez pas de domaine, saisissez
https://xxx.xxx.xxx.xxx
en remplaçant les croix par l'IPv4 de votre serveur)
- Le fuseau horaire de votre serveur (si vous êtes en France :
Europe/Paris
)
Laissez les valeurs par défaut pour les questions suivantes.
Pour configurer la base de données, nous utilisons cette commande :
php artisan p:environment:database
Vous êtes invité à saisir les informations nécessaires à la connexion à la base de données :
- Hôte :
127.0.0.1
- Port :
3306
- Nom de la base de données :
pterodactyl
- Utilisateur :
pterodactyl
- Mot de passe : défini à la configuration de MySQL
Configurons maintenant l'envoi d'e-mails :
php artisan p:environment:mail
Sélectionnez mail
pour le mode d'envoi, saisissez une adresse mail et un nom d'affichage et laissez la valeur par défaut pour la dernière question.
Pour (enfin) installer la base de données, saisissez la commande suivante :
php artisan migrate --seed
Répondez évidemment oui à la première question. L'opération peut prendre beaucoup de temps, profitez-en pour faire une petite pause !
Une fois la base de données installée, nous pouvons créer le premier utilisateur autorisé à se connecter à notre panel :
php artisan p:user:make
Répondez oui à la première question, puis indiquez les informations relatives au premier administrateur.
Et voilà ! Notre panel est installé. Il nous reste cependant une commande à effectuer afin que les permissions soient bonnes :
chown -R www-data:www-data *
Nous allons effectuer quelques opérations permettant de rendre le panel plus efficace. Premièrement, éditez la crontab grâce à la commande crontab -e
et ajoutez la ligne ci-dessous à la fin du fichier :
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1
Cela va permettre de lancer, toutes les minutes, un script responsable de nettoyer les données de session, et de lancer les tâches planifiées sur les serveurs.
Certaines tâches doivent fonctionner selon un système de "file d'attente", car elles peuvent prendre un peu de temps. C'est notamment le cas de l'envoi d'e-mails. Pour ce faire, nous devons créer un daemon responsable de gérer cette file d'attente et d'exécuter les tâches en arrière-plan. Créez le fichier /etc/systemd/system/pteroq.service
et collez ce ces lignes à l'intérieur :
# 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
[Install]
WantedBy=multi-user.target
Enfin, il ne nous reste plus qu'à activer le daemon tout juste créé :
systemctl enable --now pteroq.service
Installation de Wings
Le panel ne peut fonctionner seul. Il doit travailler en collaboration avec Wings, le système gérant les serveurs de jeu sur l'hôte. Si vous disposez de plusieurs hôtes, vous pouvez n'installer que Wings sur vos hôtes auxilliaires, et le configurer sur le panel de votre hôte principal.
Il faut tout d'abord installer et activer Docker :
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt update
apt install docker-ce
systemctl enable --now docker
Attention : les deux premières commandes sont à adapter si vous n'utilisez pas Debian.
Téléchargez Wings :
curl -L -o /usr/local/bin/wings https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64
chmod u+x /usr/local/bin/wings
mkdir /etc/pterodactyl
Connectez-vous dès à présent au panel que nous avons installé juste avant. Pour ce faire, utilisez l'URL que vous avez précisée à la configuration (si vous n'avez pas de nom de domaine, http://xxx.xxx.xxx.xxx
en remplaçant les croix par l'IPv4 de votre serveur) ainsi que le nom d'utilisateur et le mot de passe que vous avez choisis.
Cliquez sur le bouton Paramètres en haut à droite, puis rendez-vous dans le menu Locations. Chaque lieu (location) permet de regrouper les différents hôtes. Créez-en une en cliquant sur le bouton Create New (vous pouvez saisir ce que vous souhaitez dans la fenêtre qui s'affiche).
Une fois ceci fait, rendez-vous dans le menu Nodes puis Create New. Saisissez un nom pour vorre nouvel hôte, un nom de domaine dans le champ FQDN (si vous n'en n'avez pas, indiquez l'adresse IP de votre serveur et cochez Use HTTP Connection), la quantité de mémoire RAM et l'espace disque à utiliser au maximum. Entrez 0 dans les deux champs Over-Allocation puis validez.
Une fois votre hôte créé, rendez-vous dans l'onglet Configuration et copiez le contenu du bloc de texte Configuration File dans le fichier /etc/pterodactyl/config.yml
.
Enfin, il nous reste à faire en sorte que Wings démarre automatiquement avec l'hôte. Créez un fichier /etc/systemd/system/wings.service
et mettez la configuration suivante à l'intérieur :
[Unit]
Description=Pterodactyl Wings Daemon
After=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=600
[Install]
WantedBy=multi-user.target
Activez Wings :
systemctl enable --now wings
Création d'un serveur
La première chose à faire est de réserver un port sur l'hôte, pour pouvoir ensuite l'assigner à votre serveur de jeu. Pour ce faire, rendez-vous sur l'interface et dans le menu Nodes. Sélectionnez l'hôte précédemment créé puis cliquez sur l'onglet Allocation. Sur le bloc de gauche, renseignez l'IP de votre hôte ainsi que le port que vous souhaitez utiliser pour vous connecter à votre futur serveur de jeu, puis cliquez sur Submit.
Maintenant, rendez-vous dans le menu Servers puis Create New. Voici les informations importantes à renseigner :
- Server Name est le nom à donner à votre serveur, vous pouvez le choisir
- Server Owner est l'utilisateur propriétaire du serveur, vous pouvez le rechercher via son nomn, son prénom ou son adresse mail, mais pas par son nom d'utilisateur
- Node est l'hôte sur lequel sera hébergé notre serveur de jeu
- Default Allocation est l'association IP/port utilisée pour se connecter au serveur (que nous venons de créer)
- Memory est la limite de mémoire vive que peut consommer le serveur
- Disk Space est la limite de stockage que peut utiliser le serveur
- Nest et Egg permettent de sélectionner le jeu qui sera installé sur le serveur
Cliquez ensuite sur Create Server, patientez pendant l'installation du serveur, et voilà : votre premier serveur de jeu est en ligne ! Pour le gérer, rien de plus simple. Si vous cliquez sur le menu Servers, vous aurez deux possibilités : soit cliquer sur le nom du serveur pour éditer ses propriétés (telles que les limites mémoire et disque), soit cliquer sur l'icône en forme de clé tout à droite pour gérer le serveur de jeu proprement dit (le démarrer, l'arrêter, accéder à la console, etc...).
Si vous utilisez un VPS OpenVZ (c'est le cas des VPS Dyjix), vous devrez activer OOMKiller dans la section Build Configuration de votre serveur nouvellement créé.