Skip to main content

🥚 Créer un oeuf pterodactyl

Pterodactyl utilise des docker pour exécuter les services mais a besoin de quelques configuration supplémentaire pour fonctionner correctement avec les fichiers et la commande STARTUP.

Attention, pterodactyl nécessite que les dockers soient le plus petit possible. Aussi pour faire des fichiers binaires, il est judicieux de les compiler eux même dans un docker comme vu dans la section sur docker.

📦 Creation du Docker

Note: /home/container est un volume, donc les fichiers hôte sont privilégiés et écraseront ceux placé par le Dockerfile. C'est pour cela qu'il vaut mieux les stoquer ailleurs et les redéplacer dans le entrypoint.sh

Pour créer le Docker on peut créer un nouveau fichier Dockerfile

FROM docker.io/library/debian:bullseye

# CHANGER ICI
LABEL author="nom du developpeur" maintainer="addresse@mail.com"

# Commandes pour setup le bot (RUN pour lançer des commandes et ADD pour transfer des fichiers locaux)
# CHANGER ICI
ADD aurore /aurore
RUN chmod +x /aurore

# Pour déplacer un fichier dans /home/container
ADD nginx.conf /nginx.conf

# Création de l'utilisateur container et des variables obligatoires pour ptero 
RUN apt update && apt install -y wget
RUN useradd -d /home/container -m container
USER container
ENV  USER=container HOME=/home/container
WORKDIR  /home/container
ADD ./entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]

Et pour le entrypoint.sh qui va exécuter la commande d'install (rien a modifier)

#!/bin/bash
cd /home/container

# Placer ici des fichiers pour les mettre dans /home/container
ls /home/container/nginx.conf || cp /nginx.conf /home/container/nginx.conf # Va déplacer le fichier nginx.conf si il n'existe pas encore

# Replace Startup Variables
MODIFIED_STARTUP=`eval echo $(echo ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')`
echo ":/home/container$ ${MODIFIED_STARTUP}"

# Run the Server
eval ${MODIFIED_STARTUP}

Ensuite on peut lançer le docker et publier.

sudo docker build . -t <username>/<repo>
sudo docker login
sudo docker push <username>/<login>

🪺 Création d'un oeuf Pterodactyl

  1. Créer une nest dans le panel admin
  2. Création d'un oeuf dans une nest dans lequel on va préciser :
  • Le nom, la description, l'auteur·ice
  • L'image (docker.io/<username>/<repo>)
  • La commande de démarrage (relative au dossier /home/container)
  • La stop command (^C à mettre par défault)
  • Les autre configuration, juste écrire {} dans chaque par défault
  1. Dans la section variable, ajouter les variables d'environement nécessaire
  2. L'oeuf est prêt et par conséquent on peut l'exporter en JSON ou créer un serveur utilisant l'oeuf.