Wings ist der Service, der auf dem Node läuft und die eigentlichen Server-Container verwaltet.


1. Ordnerstruktur anlegen

Erstelle das Verzeichnis für die Wings-Konfiguration:

mkdir -p /etc/pterodactyl /opt/containers/pterodactyl/wings
cd /opt/containers/pterodactyl/wings

2. Pterodactyl Panel Vorbereitung (DB_SSL=false)

💡 Hinweis: Nur nötig, wenn dies in Schritt 7 nicht in der docker-compose.yml eingetragen wurde!

⚠️ Wichtig: Um einen 500 Internal Server Error beim Speichern der Node-Einstellungen im Panel zu vermeiden, muss das Panel wissen, dass die interne MariaDB-Verbindung kein SSL erfordert.

Füge in der .env des Panel-Containers die Zeile DB_SSL=false hinzu und leere den Config-Cache:

docker exec -it pterodactyl-panel sh -c "echo 'DB_SSL=false' >> /app/.env"
docker exec -it pterodactyl-panel php artisan config:clear
docker restart pterodactyl-panel

3. Location & Node im Panel anlegen

  1. Logge dich im Panel unter https://panel.orbis-craft.de ein.

  2. Gehe unten links auf das Zahnrad (Admin Control Panel).

  3. Locations:

    • Klicke auf Locations ➔ Create New.
    • Short Code: main (oder z. B. germany)
    • Description: Hauptserver
    • Klicke auf Create.
  4. Nodes:

    • Klicke auf Nodes ➔ Create New.
    • Name: Node-01
    • Location: main
    • FQDN: gameserver.orbis-craft.de
    • Communicate Over SSL: Use SSL Connection
    • Behind Proxy: Behind HTTP Proxy (da Nginx Proxy Manager davor liegt)
    • Daemon Port: 443 (da Nginx Proxy Manager die Anfragen auf dem HTTPS-Standardport annimmt)
    • Memory & Disk: Trage die Ressourcen deines Dedicated Servers ein (in MB).
    • Klicke auf Create Node.

4. Configuration (config.yml) einrichten

  1. Gehe in der neu erstellten Node auf den Reiter Configuration.

  2. Kopiere den generierten YAML-Inhalt.

  3. Erstelle die Konfigurationsdatei auf dem Host:

nano /etc/pterodactyl/config.yml
  1. Füge den Inhalt ein.

  2. Wichtige Anpassungen in der config.yml:

    • Docker-Subnetz anpassen: Ergänze bzw. passe den Bereich docker: an, um Netzwerkkonflikte (Docker Pool overlaps) zu vermeiden.
    • SSL in Wings deaktivieren: Da Nginx Proxy Manager die SSL-Verschlüsselung übernimmt, setze ssl.enabled unter api auf false.

Deine config.yml sollte in diesen Blöcken exakt so strukturiert sein (auf Leerzeichen achten!):

docker:
  network:
    name: pterodactyl0
    driver: bridge
    interfaces:
      v4:
        subnet: 172.28.0.0/16
        gateway: 172.28.0.1
    dns:
      - 1.1.1.1
      - 1.0.0.1
    ispn: false
    network_mode: pterodactyl0
    is_internal: false
    enable_icc: true
    network_mtu: 1500
api:
  host: 0.0.0.0
  port: 8081
  ssl:
    enabled: false
  upload_limit: 100

Speichere die Datei mit Strg+O, Enter, Strg+X.

5. Docker Compose für Wings erstellen

Erstelle im Ordner /opt/containers/pterodactyl/wings die docker-compose.yml:

cat << 'EOF' > docker-compose.yml
services:
  wings:
    image: ghcr.io/pterodactyl/wings:latest
    container_name: pterodactyl-wings
    restart: unless-stopped
    networks:
      - proxy-net
    ports:
      - "2022:2022" # SFTP Port für Server-Dateien
      - "8081:8081" # Wings API Port
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/containers:/var/lib/docker/containers
      - /etc/pterodactyl:/etc/pterodactyl
      - /var/lib/pterodactyl:/var/lib/pterodactyl
      - /tmp/pterodactyl:/tmp/pterodactyl
      - /etc/ssl/certs:/etc/ssl/certs:ro

networks:
  proxy-net:
    external: true
EOF

6. Firewall-Freigaben (UFW)

Damit SFTP und die API erreichbar sind, schalte die benötigten Ports in der Firewall frei:

sudo ufw allow 2022/tcp comment 'Pterodactyl SFTP'
sudo ufw allow 8081/tcp comment 'Pterodactyl Wings API'

7. Wings starten & testen

  1. Wings-Container starten:
docker compose up -d
  1. Logs prüfen:
docker logs -f pterodactyl-wings

Achte im Log auf folgende Erfolgsmeldungen:

- `sftp server listening for connections listen=0.0.0.0:2022`  
- Keine FATAL-Fehler bezüglich SSL oder Docker-Pools.

8. Reverse Proxy im Nginx Proxy Manager (NPM) anlegen

  1. Logge dich in Nginx Proxy Manager ein und erstelle einen neuen Proxy Host:

    • Domain Names: gameserver.orbis-craft.de
    • Scheme: http
    • Forward Hostname / IP: 172.17.0.1 (oder Container-Name pterodactyl-wings)
    • Forward Port: 8081
    • Block Common Exploits: Aktivieren
    • Websockets Support: Aktivieren (essentiell für die Server-Konsole)
  2. SSL Tab:

    • SSL Certificate: Request a new SSL Certificate
    • Force SSL: Aktivieren
  3. Klicke auf Save.

9. Status-Checklist

  • [ ] DB_SSL=false im Panel gesetzt und Cache geleert.
  • [ ] Ordner /etc/pterodactyl angelegt.
  • [ ] Location & Node im Pterodactyl-Panel erstellt (Daemon Port 443, Behind Proxy: Yes).
  • [ ] config.yml angepasst (Subnetz 172.28.0.0/16 & ssl.enabled: false).
  • [ ] Ports 2022 und 8081 in der UFW freigegeben.
  • [ ] docker-compose.yml für Wings erstellt und im proxy-net gestartet.
  • [ ] Proxy Host in NPM eingerichtet (http://pterodactyl-wings:8081 mit SSL & Websockets).
  • [ ] In der Node-Übersicht im Panel leuchtet das Herz-Symbol Grün.