Gameserver & Panels

Pterodactyl Panel installieren: Debian 13 / Ubuntu 24.04 Tutorial

Einleitung

Pterodactyl ist ein modernes, Open-Source Game Server Management Panel, das speziell für die Verwaltung von Game Servern entwickelt wurde. Es bietet eine benutzerfreundliche Web-Oberfläche zur Verwaltung von Minecraft, Rust, CS:GO und vielen anderen Spieleservern. Das Panel basiert auf Docker-Containern und ermöglicht es Administratoren, Server-Ressourcen effizient zu verwalten, Benutzer zu organisieren und detaillierte Statistiken einzusehen.

Pterodactyl besteht aus zwei Hauptkomponenten: dem Panel (Web-Interface) und Wings (Daemon für Server-Management). In diesem Tutorial konzentrieren wir uns auf die Installation des Panels auf Debian 13 und Ubuntu 24.04.

Systemvoraussetzungen

Komponente Mindestanforderung Empfohlen
CPU 1 vCPU 2+ vCPUs
RAM 2 GB 4+ GB
Speicher 10 GB 20+ GB SSD
Betriebssystem Debian 13 / Ubuntu 24.04 Ubuntu 24.04 LTS
PHP Version 8.1+ 8.2+
MySQL/MariaDB 5.7+ / 10.2+ 8.0+ / 10.6+

Benötigte Ports

Port Protokoll Zweck Firewall
80 HTTP Web-Interface (Weiterleitung) Öffnen
443 HTTPS Web-Interface (SSL) Öffnen
3306 MySQL Datenbankverbindung Lokal
6379 Redis Cache/Sessions Lokal

Vorbereitung

System aktualisieren

Aktualisieren Sie zunächst Ihr System auf den neuesten Stand:

sudo apt update && sudo apt upgrade -y
sudo apt install -y software-properties-common curl wget gnupg2

Abhängigkeiten installieren

Installieren Sie die erforderlichen Pakete:

# Basis-Pakete
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

# Webserver und PHP
sudo apt install -y nginx

# PHP und Extensions
sudo apt install -y php8.2 php8.2-cli php8.2-gd php8.2-mysql php8.2-pdo \
php8.2-mbstring php8.2-tokenizer php8.2-bcmath php8.2-xml php8.2-fpm \
php8.2-curl php8.2-zip php8.2-intl php8.2-sqlite3 php8.2-redis

# Composer installieren
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

Node.js und npm installieren

# NodeSource Repository hinzufügen
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

# Node.js installieren
sudo apt install -y nodejs

# Yarn installieren (optional, aber empfohlen)
npm install -g yarn

MariaDB installieren und konfigurieren

# MariaDB installieren
sudo apt install -y mariadb-server mariadb-client

# MariaDB sichern
sudo mysql_secure_installation
⚠️ Hinweis: Während der MariaDB-Sicherheitskonfiguration sollten Sie ein starkes Root-Passwort setzen und alle Sicherheitsfragen mit „Y“ beantworten.

Redis installieren

sudo apt install -y redis-server
sudo systemctl enable redis-server
sudo systemctl start redis-server

Installation

Pterodactyl Panel herunterladen

# Verzeichnis erstellen
sudo mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl

# Neueste Version herunterladen
sudo curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz

# Archiv extrahieren
sudo tar -xzvf panel.tar.gz
sudo chmod -R 755 storage/* bootstrap/cache/

Datenbank konfigurieren

Erstellen Sie eine Datenbank für Pterodactyl:

sudo mysql -u root -p

Führen Sie folgende SQL-Befehle aus:

CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'IhrSicheresPasswort';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Installation durchführen

cd /var/www/pterodactyl

# Abhängigkeiten installieren
sudo composer install --no-dev --optimize-autoloader

# Installations-Script ausführen
sudo php artisan p:environment:setup
sudo php artisan p:environment:database
sudo php artisan p:environment:mail
⚠️ Hinweis: Das Setup-Script wird Sie nach verschiedenen Konfigurationsdetails fragen. Verwenden Sie folgende Werte als Orientierung:

  • Application URL: https://ihr-domain.de
  • Application Timezone: Europe/Berlin
  • Cache Driver: redis
  • Session Driver: redis
  • Queue Driver: redis

Datenbank-Setup abschließen

# Datenbank migrieren
sudo php artisan migrate --seed --force

# Admin-Benutzer erstellen
sudo php artisan p:user:make

Berechtigung setzen

# Besitzer ändern
sudo chown -R www-data:www-data /var/www/pterodactyl/*

# Crontab für Queue Worker
sudo crontab -e

Fügen Sie folgende Zeile hinzu:

* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1

Queue Worker Service erstellen

sudo nano /etc/systemd/system/pteroq.service

Fügen Sie folgenden Inhalt ein:

[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.target

Service aktivieren:

sudo systemctl enable pteroq.service
sudo systemctl start pteroq.service

Konfiguration

Nginx konfigurieren

Erstellen Sie eine Nginx-Konfiguration:

sudo nano /etc/nginx/sites-available/pterodactyl.conf

Fügen Sie folgende Konfiguration ein:

server {
    listen 80;
    server_name ihr-domain.de;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name ihr-domain.de;

    root /var/www/pterodactyl/public;
    index index.html index.htm index.php;
    charset utf-8;

    # SSL-Konfiguration (wird später durch Certbot ergänzt)
    # ssl_certificate /etc/letsencrypt/live/ihr-domain.de/fullchain.pem;
    # ssl_certificate_key /etc/letsencrypt/live/ihr-domain.de/privkey.pem;

    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:/var/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;
    }
}

Site aktivieren:

sudo ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
sudo nginx -t
sudo systemctl reload nginx

SSL-Zertifikat einrichten

Installieren Sie Certbot für Let’s Encrypt:

sudo apt install -y certbot python3-certbot-nginx

# SSL-Zertifikat erstellen
sudo certbot --nginx -d ihr-domain.de

PHP-FPM optimieren

sudo nano /etc/php/8.2/fpm/conf.d/99-pterodactyl.ini

Fügen Sie folgende Optimierungen hinzu:

upload_max_filesize = 100M
post_max_size = 100M
memory_limit = 256M
max_execution_time = 300
max_input_vars = 1000
date.timezone = Europe/Berlin
sudo systemctl restart php8.2-fpm

Firewall-Regeln setzen

Konfigurieren Sie UFW (falls installiert):

# UFW installieren (falls nicht vorhanden)
sudo apt install -y ufw

# Grundregeln setzen
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Benötigte Ports öffnen
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Firewall aktivieren
sudo ufw enable

Für iptables:

# HTTP/HTTPS Traffic erlauben
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# SSH beibehalten
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Regeln speichern
sudo apt install -y iptables-persistent
sudo netfilter-persistent save

Dienst starten und beim Systemstart aktivieren

Alle Dienste aktivieren und starten:

# Nginx
sudo systemctl enable nginx
sudo systemctl start nginx

# PHP-FPM
sudo systemctl enable php8.2-fpm
sudo systemctl start php8.2-fpm

# MariaDB
sudo systemctl enable mariadb
sudo systemctl start mariadb

# Redis
sudo systemctl enable redis-server
sudo systemctl start redis-server

# Pterodactyl Queue Worker
sudo systemctl enable pteroq
sudo systemctl start pteroq

# Status überprüfen
sudo systemctl status nginx php8.2-fpm mariadb redis-server pteroq

Installation verifizieren

Service-Status überprüfen

# Alle wichtigen Services überprüfen
sudo systemctl status nginx
sudo systemctl status php8.2-fpm
sudo systemctl status mariadb
sudo systemctl status redis-server
sudo systemctl status pteroq

Web-Interface testen

Öffnen Sie Ihren Browser und navigieren Sie zu https://ihr-domain.de. Sie sollten das Pterodactyl-Login sehen.

Logs überprüfen

# Pterodactyl Logs
sudo tail -f /var/www/pterodactyl/storage/logs/laravel.log

# Nginx Logs
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/pterodactyl.app-error.log

# PHP-FPM Logs
sudo tail -f /var/log/php8.2-fpm.log

Datenbank-Verbindung testen

cd /var/www/pterodactyl
sudo -u www-data php artisan migrate:status

Troubleshooting

Häufige Fehler und Lösungen

500 Internal Server Error

Problem: Web-Interface zeigt 500-Fehler

Lösung:

# Logs überprüfen
sudo tail -f /var/www/pterodactyl/storage/logs/laravel.log

# Cache leeren
cd /var/www/pterodactyl
sudo -u www-data php artisan config:clear
sudo -u www-data php artisan cache:clear

# Berechtigungen korrigieren
sudo chown -R www-data:www-data /var/www/pterodactyl/
sudo chmod -R 755 /var/www/pterodactyl/storage/

Queue Worker startet nicht

Problem: pteroq.service Service fehlerhaft

Lösung:

# Service-Status überprüfen
sudo systemctl status pteroq.service

# Manual testen
cd /var/www/pterodactyl
sudo -u www-data php artisan queue:work --verbose

# Service neu laden
sudo systemctl daemon-reload
sudo systemctl restart pteroq.service

Datenbank-Verbindungsfehler

Problem: Keine Verbindung zur Datenbank

Lösung:

# MariaDB Status prüfen
sudo systemctl status mariadb

# Datenbankverbindung testen
mysql -u pterodactyl -p -h 127.0.0.1

# .env Datei überprüfen
sudo nano /var/www/pterodactyl/.env

# Cache leeren nach Änderungen
cd /var/www/pterodactyl
sudo -u www-data php artisan config:clear

SSL-Zertifikat Probleme

Problem: HTTPS funktioniert nicht

Lösung:

# Certbot Status prüfen
sudo certbot certificates

# Zertifikat erneuern
sudo certbot renew --dry-run

# Nginx Konfiguration testen
sudo nginx -t

# Nginx neustarten
sudo systemctl restart nginx

PHP Memory Limit überschritten

Problem: Composer oder Anwendung läuft in Memory-Limit

Lösung:

# PHP-FPM Konfiguration anpassen
sudo nano /etc/php/8.2/fpm/conf.d/99-pterodactyl.ini

# Memory Limit erhöhen
memory_limit = 512M

# PHP-FPM neustarten
sudo systemctl restart php8.2-fpm

Node.js/npm Probleme

Problem: Frontend-Assets können nicht kompiliert werden

Lösung:

# Node.js Version prüfen
node --version
npm --version

# Dependencies installieren
cd /var/www/pterodactyl
sudo -u www-data npm install

# Production Build
sudo -u www-data npm run production

Performance-Optimierung

# OPCache aktivieren
sudo nano /etc/php/8.2/fpm/conf.d/10-opcache.ini
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
# Redis Memory-Limit setzen
sudo nano /etc/redis/redis.conf
maxmemory 256mb
maxmemory-policy allkeys-lru

Updates und Wartung

Pterodactyl Panel aktualisieren

# Backup erstellen
sudo cp /var/www/pterodactyl/.env /var/www/pterodactyl/.env.backup
sudo mysqldump -u root -p panel > panel_backup.sql

# In Wartungsmodus schalten
cd /var/www/pterodactyl
sudo -u www-data php artisan down

# Neueste Version herunterladen
sudo curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
sudo tar -xzvf panel.tar.gz

# Dependencies aktualisieren
sudo -u www-data composer install --no-dev --optimize-autoloader

# Datenbank migrieren
sudo -u www-data php artisan migrate --force

# Cache leeren
sudo -u www-data php artisan config:clear
sudo -u www-data php artisan cache:clear

# Wartungsmodus deaktivieren
sudo -u www-data php artisan up

Automatische Backups einrichten

Erstellen Sie ein Backup-Script:

sudo nano /usr/local/bin/pterodactyl-backup.sh
#!/bin/bash

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/var/backups/pterodactyl"
PANEL_DIR="/var/www/pterodactyl"

# Backup-Verzeichnis erstellen
mkdir -p $BACKUP_DIR

# Datenbank-Backup
mysqldump -u root -p'IhRootPasswort' panel > $BACKUP_DIR/panel_$DATE.sql

# Panel-Dateien sichern
tar -czf $BACKUP_DIR/panel_files_$DATE.tar.gz -C /var/www pterodactyl

# Alte Backups löschen (älter als 30 Tage)
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete

echo "Backup completed: $DATE"
# Script ausführbar machen
sudo chmod +x /usr/local/bin/pterodactyl-backup.sh

# Tägliches Backup via Crontab
sudo crontab -e
# Täglich um 2:00 Uhr Backup erstellen
0 2 * * * /usr/local/bin/pterodactyl-backup.sh >> /var/log/pterodactyl-backup.log 2>&1

Log-Rotation einrichten

sudo nano /etc/logrotate.d/pterodactyl
/var/www/pterodactyl/storage/logs/*.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

Fazit und nächste Schritte

Sie haben erfolgreich Pterodactyl Panel auf Debian 13 oder Ubuntu 24.04 installiert und konfiguriert. Das Panel ist nun über HTTPS erreichbar und produktionsbereit.

Nächste Schritte

  • Wings-Daemon installieren: Für das Server-Management benötigen Sie zusätzlich den Wings-Daemon
  • Locations und Nodes konfigurieren: Erstellen Sie Server-Standorte in der Admin-Oberfläche
  • Server-Templates anlegen: Konfigurieren Sie Eggs für verschiedene Spieltypen
  • Benutzer-Management: Richten Sie Benutzer und Berechtigungen ein
  • Monitoring einrichten: Implementieren Sie Überwachung für System und Anwendung
  • Reverse-Proxy konfigurieren: Bei mehreren Services CloudFlare oder ähnliche Dienste nutzen

Wichtige Wartungsaufgaben

  • Regelmäßige Updates von System und Pterodactyl Panel
  • Überwachung der Log-Dateien auf Fehler
  • Überprüfung der SSL-Zertifikat-Gültigkeit
  • Kontrolle der Backup-Integrität
  • Performance-Monitoring von Datenbank und Redis
⚠️ Sicherheitshinweis: Vergessen Sie nicht, regelmäßige Sicherheitsupdates für Ihr System durchzuführen und starke Passwörter für alle Dienste zu verwenden. Erwägen Sie die Implementierung von Fail2Ban für zusätzlichen Schutz gegen Brute-Force-Angriffe.

Mit dieser Installation haben Sie eine solide Grundlage für das Management Ihrer Game Server geschaffen. Bei Problemen konsultieren Sie die offiziellen Pterodactyl-Dokumentation oder die Community-Foren.