Pterodactyl Panel & Wings
Für die Faulen (inoffizielles Skript):
bash <(curl -s https://pterodactyl-installer.se)Panel installieren
Offizielle Dokumentation: https://pterodactyl.io/project/introduction.html
Dependencies installieren
sudo apt update -ysudo apt install ca-certificates apt-transport-https software-properties-common gnupg curl -ywget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpgecho "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.listsudo apt update -y && sudo apt upgrade -yapt -y install php8.1 php8.1-{cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip} mariadb-server redis-server nginx tar unzip gitcurl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composerPanel installieren
mkdir -p /var/www/pterodactylcd /var/www/pterodactylcurl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gztar -xzvf panel.tar.gzchmod -R 755 storage/* bootstrap/cache/sudo mariadbMariaDB konfigurieren
CREATE USER 'pterodactyl'@'localhost' IDENTIFIED BY 'PASSWORT';CREATE DATABASE panel;GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'localhost' WITH GRANT OPTION;exitPanel konfigurieren
cp .env.example .envTRUSTED_PROXIES='<ip_reverse_proxy>'composer install --no-dev --optimize-autoloaderphp artisan key:generatephp artisan p:environment:setupphp artisan p:environment:databasephp artisan p:environment:mailphp artisan migrate --seedphp artisan p:user:makeDurch diese Befehle wird die .env Datei geändert.
In dieser wird mit key:generate ein Schlössel erzeugt, mit dem die Daten des Panels verschlüsselt werden.
Dementsprechend empfiehlt es sich diese Datei zu sichern z.B. in einem Passwort Manager.
Rechte der Dateien anzupassen
Das Ownership der Dateien von Pterodactyl muss an den Nutzer www-data übergeben werden.
Anlegen eines Cronjobs
Es muss ein Cronjob angelegt werden, um geplante Aufgaben (z.B. Backups) zu starten.
Hierfür muss der crontab editiert werden:
crontab -eIn dem geöffneten Editor muss nun der Cronjob eingefügt werden (am Besten am Ende).
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1Erstellen eines Systemd Dienstes
Um die Queues des Panels abarbeiten zu können wird ein Worker dafür verwendet.
nano /etc/systemd/system/pteroq.service[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service
[Service]
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.targetStarten der Dienste
systemctl enable --now redis-server
systemctl enable --now pteroq.serviceErstellen einer NGINX Konfiguration
Diese Konfiguration ist eine Beispielkonfiguration ohne TLS. In einer Produktionsumgebung sollte unbedingt TLS verwendet werden. Dies kann realisiert werden z.B. über einen Reverse Proxy.
Default Seite deaktivieren
rm /etc/nginx/sites-enabled/defaultErstellen der Seite für Pterodactyl
nano /etc/nginx/sites-available/pterodactyl.confserver {
listen 80;
server_name example.com;
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;
# allow larger file uploads and longer script runtimes
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.3-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;
}
}Verlinken der Seite von available zu enabled
ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.confNGINX neu starten
systemctl restart nginxWings installieren
Docker installieren
Docker kann entweder schnell über den folgenden Befehl installiert werden, aber sollte in Produktivumgebungen nach den Vorgaben in der offiziellen Docker-Dokumentation installiert werden.
curl -sSL https://get.docker.com/ | CHANNEL=stable bashDocker Dienst aktivieren
systemctl enable --now dockerSwapüberwachung (optional, empfohlen)
Die Konfiguration sollte ab Kernelversion 5.8 Standard sein und muss nicht manuell konfiguriert werden. Hier wird beispielsweise GRUB verwendet. Die Konfiguration kann bei anderen Bootloadern wie systemd-boot auch verwendet werden.
nano /etc/default/grubDarin die Variable GRUB_CMDLINE_LINUX_DEFAULT anpassen:
GRUB_CMDLINE_LINUX_DEFAULT="swapaccount=1"Wings herunterladen und installieren
Ordner für Wings anlegen
mkdir -p /etc/pterodactylExecutable herunterladen
curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"Executable ausführbar machen
chmod u+x /usr/local/bin/wingsWings konfigurieren
Wings kann auf zwei Arten konfiguriert werden:
- Automatisch über den Befehl aus der Pterodactyl Web UI
- Manuell über die Konfigurationsdatei
/etc/pterodactyl/config.yml
Erstellen und Starten des Wings-Dienstes
Dienst erstellen
nano /etc/systemd/system/wings.serviceServicekonfiguration einfügen:
[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service
PartOf=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=180
StartLimitBurst=30
RestartSec=5s
[Install]
WantedBy=multi-user.targetStarten des Dienstes
systemctl enable --now wingsFertig! Jetzt sollte die Installation und Konfiguration von Pterodactyl Panel & Wings erfolgreich abgeschlossen sein.