Part 1 Pterodactyl Installation – Panel
Hey und willkommen zum Textteil der Anleitung, ich beziehe mich bei der Installation auf Debian und werde daher dafür die Anleitung gestalten zwecks repos natürlich füge ich auch einen Ubuntu teil ein allerdings keine Informationen für RHEL basierte Systeme dafür bitte die offizielle Anleitung ansehen.
Dies ist eine Schritt für Schritt Installation wie im Video, sofern ihr eure Pfade Standard lasst passt das so ansonsten bitte selber alles abändern.
Hilfe Video
Hier die offiziell unterstützten Betriebssysteme
Betriebsysteme | Version | Unterstützt |
---|---|---|
Ubuntu | 18.04 | ✅ |
20.04 | ✅ | |
22.04 | ✅ | |
22.04 | ✅ | |
CentOS | 7 | ✅ |
8 | ✅ | |
Debian | 10 | ✅ |
11 | ✅ |
Es ist empfohlen, ein sauber installiertes System zu nutzen. Natürlich geht das auch bei einem laufenden ist aber mehr aufwand.
Als Erstes fügen wir unsere benötigten Repos hinzu. Weil Debian 11 Standard mit PHP 7.4 ausgeliefert wird, aber 8.1 oder 8.2 benötigt wird.
Bevor wir das aber tun können, benötigen wir einige Tools für z. B. die GPG Keys und Repo Zertifikate
apt update
apt install lsb-release apt-transport-https ca-certificates software-properties-common -y
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt update
Nachdem wir nun die PHP repo für Debian hinzugefügt haben können wir alle Benötigten pakete installieren, darunter der nginx Webserver mariadb redis php…..
apt -y install php8.2 php8.2-{common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip} mariadb-server nginx tar unzip git redis-server
Jetzt holen wir uns noch den Abhängigkeits Manager also den Composer für PHP.
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Jetzt, wo alle Pakete installiert sind, erstellen wir erstmal den Ordner, wo das Webinterface auf dem Server installiert wird und navigieren auch direkt dort hinein.
mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
Nun holen wir uns die letzte Version des Panels von GitHub. Wir entpacken es auch direkt und vergeben auch die Ordner und Datei Berechtigungen.
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/
Jetzt müssen wir einen MySQL User mit einer Datenbank erstellen, wer es bereits hat, kann an der stelle auch phpmyadmin nehmen oder halt einfach per Terminal.
mysql -u root -p
# Bitte wechsel 'DeinPassword' durch ein sicheres password
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'DeinPassword';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
exit
Jetzt benennen wir den env File um, damit das Panel ihn dann auch erkennt. Das ist wie eine config.php wo Daten wie Myzel Password usw. gespeichert werden.
Und gleichzeitig soll der Composer alle Abhängigkeiten laden. Anschließend erstellen wir einen Key, damit das Panel auch nur mit dieser Instanz sich starten lässt.
cp .env.example .env
composer install --no-dev --optimize-autoloader
php artisan key:generate --force
Jetzt können wir wie in einem Formular das Environment Setup starten und füllen alles aus, was benötigt ist.
php artisan p:environment:setup
php artisan p:environment:database
Falls ihr einen eigenen Mailserver habt oder einfach ein Mail Account habt bei z. B. google oder gmx… dann könnt ihr das Panel auch E-Mails versenden lassen für Installationsfortschritt oder wenn man sein Password vergessen hat.
php artisan p:environment:mail
Als Nächstes lassen wir die Datenbank erstellen. Dies kann je nach CPU Geschwindigkeit und Kerne schneller oder langsamer gehen.
php artisan migrate --seed --force
Jetzt können wir schon den ersten User erstellen. Natürlich würde ich als Erstes einen Admin Account erstellen, aber wählt bitte ein sicheres Password.
php artisan p:user:make
Der vorletzte Schritt, bevor das Panel dann funktioniert, ist das Vergeben der Berechtigung, damit der Webserver mit dem zugewiesenen User www-data auch darauf zugreifen kann.
chown -R www-data:www-data /var/www/pterodactyl/*
Nun müssen wir einen Cronjob erstellen, damit die automatischen Dienste des Panels auch laufen, wenn die Seite nicht geöffnet ist. Ihr werdet gefragt, ob ihr nano oder vi nutzen wollt, ich nutze nano in meiner Videoanleitung.
crontab -e
Und nun fügt ihr folgende Zeile ganz unten in der Datei ein.
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1
Jetzt installieren wir die Aufgabenplanung des Panels noch als Systemdienst so das man es Neustarten oder Stoppen kann, wenn man z. B. Panel Updates macht oder oder oder.. Dafür erstellen wir eine neue Datei.
nano /etc/systemd/system/pteroq.service
Und nun fügt ihr folgende Zeilen in der Datei ein.
# 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
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s
[Install]
WantedBy=multi-user.target
Jetzt starten wir noch den Cache Server ( redis ) und unsere neu erstellten pteroq Dienst.
sudo systemctl enable --now redis-server
sudo systemctl enable --now pteroq.service
Jetzt nur noch einen vhost File anlegen, damit der Webserver auch anfragen annehmen kann und die Files aus dem richtigen Verzeichnis lädt.
Falls ihr Certbot also ganz einfach ein Lets Encrypt Certificate wollt, müsst ihr dies noch installieren.
apt install certbot python3-certbot-nginx
Jetzt erstellen wir einen vhost im Nginx Verzeichnis.
nano /etc/nginx/sites-available/pterodactyl.conf
Und nun fügt ihr folgende Zeilen in der Datei ein. Bitte ändert den Eintrag <domain> zu eurer TLD Domain um.
server {
# Replace the example <domain> with your domain name or IP address
listen 80;
server_name <domain>;
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.2-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;
}
}
Jetzt machen wir eine symbolische Verknüpfung vom available Ordner in den Enabled Ordner und starten danach den Webserver einmal neu.
ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
systemctl restart nginx
Jetzt nur noch das SSL Certificate, damit die Seite auch eine verschlüsselte Verbindung hat, das geht einfach mit dem certbot ihr müsst natürlich eure E-Mail angeben und deren agbs usw. akzeptieren, dann wählt ihr eure Domain nur aus, mit der gezeigten zahl.
certbot
Jetzt habt ihr das Panel installiert jetzt fehlt nur noch der Daemon ( Wings ) genannt, dafür hier zu Schritt 2 wechseln