Projet PAINS : On installe Pterodactyl et autres | partie 8
Pour installer Pterodactyl, on va faire autrement que Nextcloud.
Avec Nextcloud, on a dû installer manuellement TOUs les services qu'il demandait. C'était long, donc cette fois ci on va installer par un script.
La commande se trouve ici : https://community-scripts.github.io/ProxmoxVE/scripts?id=pterodactyl-panel
et c'est la commande suivante :
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/pterodactyl-panel.sh)"
Ensuite on suit ce qui est écrit.
Dans mon cas la notion de Pterodactyl est souvent remplacer par cuicui, plus simple pour à écrire
J'ai préféré faire une installation détaillée pour vraiment choisir ce qu'il peut être actif. Quelques détails quand même :
- pour le SSH root, j'ai mis no key, car pour l'instant, j'en ai pas généré
- le fuse support, j'ai mis yes
- après il demande beaucoup d'options si on veut ci ou ça, j'ai souvent dis oui, comme ça c'est installé, et au besoin, c'est là.
- J'ai mis non à : GPU passtrought ( si j'ai besoin de la cg pour autre chose ) et au APT cache-NG, car j'ai pas de services qui gère ça, c'est chacun pour soit.
à la fin, ça ressemble à ça :

Ensuite, on va sur le LXC nouvellement créé et nous nous connectons
login : root
mdp : celui mis dans la config
Pour ensuite faire un cat du fichier qui se trouve là où on spawn.
Qui va nous donner les identifiants de la base de données créé et ceux pour se connecter sur le panel WEB.
Ensuite sur le panel WEB, on pourra changer le mot de passe pour en avoir un meilleur.
Et voilà, le panel est configuré.
Maintenant on configure la deuxième partie
car là, on n'a mis en place que la partie PANEL, gestion. Lui ne fait rien.
c'est le Pterodactyl wings qui s'occupe des serveurs qu'on installera.
Donc on va récupérer et suivre les instructions de ce script : https://community-scripts.github.io/ProxmoxVE/scripts?id=pterodactyl-wings&category=Gaming+%26+Leisure
Et on retourne sur le Panel WEB ensuite.
On créer une localisation 
Et ensuite une NODE
oui, encore des noms d'oiseaux
Et maintenant on relie le Panel au "wings"
On va dans "configuration" puis on appuie sur "generate token".
et on copie la commande donnée dans la CMD du wings.
Puis ensuite on tape redémarre le service wings du serveur wings.
on voit bien qu'ils peuvent communiquer entre eux.
Maintenant, il faut faire des règles NAT. Sur la box internet et proxmox, les ports 2500 à 2700 sont redirigé vers OPNsense. On va rediriger les ports 2601 à 2700 pour les serveurs Pterodactyl :
Interface : WAN
Version TCP/IP : IPv4
Protocle : TCP/UDP
Destination : WAN adresse
Plage de port de destination : de 2601 à 2700
rediriger l'IP de destination : Hôte unique ou réseau : 192.168.15.111
Rediriger le port cible : 2601 - 2700
Reflexion NAT : Utiliser les paramètres système par défaut
Association de règle de filtrage : autoriser
Comme ça les ports sont dédiés aux serveurs.
Et on peut faire de même sur le panel :

IP address : l'ip du serveur wings
IP alias : un petit surnom
ports : les ports qu'on autorise à utiliser
Ensuite, on va dans "serveur" de notre panel, et on créer un nouveau serveur pour test. J'utilise nest qui à une config minecraft pré-faite, et je la mets en 1.12.2 pour avoir un truc léger.
Pterodactyl donne automatiquement un port au serveur. On test si on peut se connecter ensuite sur le serveur :

ça marche !
C'est juste un serveur Vanilla, donc on ne peut pas test le TPS, les ping, mais ça reste fluide, et j'ai pas de rollback.
Mais il nous reste une redirection de port à faire pour accéder au PANEL WEB.
Interface : WAN
Version TCP/IP : IPv4
Protocle : TCP
Destination : WAN adresse
Plage de port de destination : 2600
rediriger l'IP de destination : Hôte unique ou réseau : 192.168.15.110
Rediriger le port cible : 443
Reflexion NAT : Utiliser les paramètres système par défaut
Association de règle de filtrage : autoriser
Mais pour l'instant, ça ne va pas marcher, car pour l'instant le panel n'a pas de certificat.
Il va falloir en mettre un. Et on va réutiliser la même méthode que pour Nextcloud.
Donc on installe certbot sur la VM du panel ( car le PANEL fonctionne grâce à Apache2 ) et une dépendance :
apt install python3-certbot-apache
certbot --apache -d oiseau.antoninsio.com
Et on a notre certificat :
Deploying certificate
Successfully deployed certificate for cuicui.antoninsio.com to /etc/apache2/sites-available/pterodactyl-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://oiseau.antoninsio.com
Maintenant on peut se co depuis internet... Enfin....
Juste faire attention, un mot de passe trop long ne passe pas. Mettre un mdp de plus de 20 caractères ça passe pas en HTTPS.
Autre problème : on n'a pas accès à la CMD du serveur par internet. Par le LAN oui, mais pas internet. Solution : je ne sais pas.
Et malgré chatGPT, les solutions ne sont toujours pas là.
J'ai tenté de copier les certificats du panel pour les mettre sur le wings, mais ça ne marche pas.
Donc pour avoir accès, je dois passer par mon proxmox, puis par ma VM graphique pour l'accès à la CMD et gestion du serveur.
Les prochaines lignes sont écrit en fonction de mon avancement, donc il peut passer 2h, comme 2 jours.
Et là, ça galère pour trouver une solution.
Toujours rien, qui marche, souvent des erreurs de certificats qui lui plaisent pas.
carrement, j'ai plus d'accès en LAN, car il veut pas mettre le serveur wings en HTTPS, et si il est pas en HTTPS, le panel veut pas communiquer puisque lui est en HTTPS, malgré le fait qu'ils ne se parle qu'en LAN.
Mais après encore une vingtaine d'heures dessus, des centaines de messages avec chatGPT ( au vue du prix de la ram, du stockage, et prochainement des cartes graphiques, autant l'utiliser ) je vais mettre cet oiseau bloqué au sol de côté et plutôt tenter la mer avec PufferPanel.
J'ai regarder un peu ce qu'il se faisait en panel de gestion de serveur gratuit, auto-hébergé et PufferPanel est celui qui m'a attiré le plus.
Donc pour l'installer, il y a un peu plus de travail mais ça reste simple .
Pour commencer on créer une LXC debian 12 (car debian 13 n'est pas compatible au moment où j'écris ces lignes).
La LXC ressemble à ça : 
Ensuite, on va sur la doc, et on rentre deux commandes :
curl -s https://packagecloud.io/install/repositories/pufferpanel/pufferpanel/script.deb.sh | bash
apt-get install pufferpanel
Sur la documentation officielle, ils ont ajouté sudo, mais vu qu'on est en direct de la CM en LXC, il faut les enlever.
On ajoute un admin avec :
sudo pufferpanel user add
Et ensuite on démarre le panel avec : systemctl enable --now pufferpanel
On se retrouve en LAN pour le panel. Et ça marche ! (heureusement )
oui, google traduction a traduit la page
J'ai mis un serveur minecraft 1.12.2 pour test et aucun soucis, ça marche aux petits oignons.
Plus qu'a mettre le HTTPS .
Donc le certbot, let's encrypt et redirection de port (comme d'habitude maintenant )
au niveau des règles de routage, ça ressemble à ça :

Une règle pour le panel, le reste pour les serveurs ( oui c'est stupide d'avoir séparé, mais j'ai juste modifié les IP par rapport à ptérodactyl )
Quand je fais le certificat, il est quasi minuit, et je suis un peu lassé des certificats ( pour rester poli )
Donc j'installe certbot, ses dépendances et apache2
Avec apache2, j'ouvre le port 80 et donc permet à certbot de récupérer le certificat
Et on va utiliser apache2 comme reverse proxy .
Pour cela :
On se rend dans le fichier : /etc/apache2/sites-enabled/000-default-le-ssl.conf
Et on rajoute les lignes pour faire du reverse proxy :
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
RequestHeader set X-Forwarded-Proto "https"
On active bien sur le module de proxy apache2
a2enmod proxy proxy_http ssl headers
Ensuite, petite modification au niveau de OPNsense
j'ai laissé le port 443 du fichier de config de la page, donc on va juste la rediriger sur ce port
![]()
Et on peut redémarrer apache2 pour qu'il prenne la config.

Et ça marche.
il reste un petit détail à finaliser, pour retirer cette avertissement : le port SFTP
Par défaut c'est le port 5657
OR sur mon infra, ce port est bloqué. Il va falloir changer le port
Problème : 
Sauf qu'en LAN ou en WAN, qu'on change l'url principale par n'importe quoi, ça ne marche pas.
Mais pour gagner du temps je vous passe les nombreuses heures de tests, d'échouages, de rage, du peu de documentation existante, des tests proxy de mon apache2, des théories du complot de chatGPT et j'en passe
Donc on retourne sur le /etc/apache2/sites-enabled/000-default-le-ssl.conf, et on dégage les trois lignes ajoutées plus haut par celle-ci :
Include /etc/letsencrypt/options-ssl-apache.conf
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://127.0.0.1:8080/ retry=0
ProxyPassReverse / http://127.0.0.1:8080/
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:8080/$1 [P,L]
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Host "oiseau.antoninsio.com"
</VirtualHost>
</IfModule>
La 1ère ligne et les deux dernières sont juste là pour indiquer où j'ai placé les lignes, donc ne les recopiez pas
Ensuite on redémarre apache2 et on va sur le panel puffer, et on change l'URL principale par celle qu'on utilise pour y acceder par internet ( port compris, https, aussi )
Et ça marche

Pour le SFTP, j'ai un peu triché, je n'ai pas redirigé le port, mais laissé en "ligne directe", soit juste redirection d'IP sur la box, sur mon proxmox puis sur OPNsense.
Quand je me connecte, WinSCP, n'est pas content sur les certificats, mais on dit juste oui et ça marche

Après une grosse semaine sur ce service de gestion de serveur, je décide maintenant de le mettre de côté.
Quand le proxmox sera finalisé, on retournera dessus pour mettre docker, pour pouvoir gérer un peu mieux les ressources de chaque serveur, car actuellement c'est chaque serveur a toute les ressources, mais pour mon niveau, c'est pas trop grave.
Voilà pour aujourd'hui, avec les scripts, j'aurais pensé pouvoir faire ça en un week-end, ça m'aura pris plutôt un week.
Prochaine fois on installe RustDesk.
Bonne soirée
Posté le 17 janvier 2026 par _Antonin_