Eigene Gameserver für Freunde: Pelican Panel auf Proxmox einrichten
Mit dem Pelican Panel startest du Gameserver für deine Freunde per Klick im Browser. Ein Minecraft-Server, ein Palworld-Server, später vielleicht noch Valheim: alles läuft auf deiner eigenen Hardware, und du verwaltest es über eine Weboberfläche mit Konsole, Dateimanager, Backups und Zeitplänen. In diesem Guide richtest du das Panel und den Daemon Wings in zwei LXCs auf Proxmox ein und legst deine ersten beiden Server an.
Kurz erklärt
- Pelican ist ein Open-Source-Panel für Gameserver. Es ist als Fork von Pterodactyl entstanden und wird aktiv weiterentwickelt.
- Das Setup besteht aus zwei Teilen: dem Panel (die Weboberfläche) und Wings (der Daemon, der die Gameserver als Docker-Container startet).
- Welche Spiele möglich sind, bestimmen Eggs. Ein Egg ist eine Vorlage, die beschreibt, wie ein bestimmter Server installiert und gestartet wird.
- Gedacht für alle, die für Freunde oder Familie ein paar Server betreiben wollen, ohne jedes Mal in der Shell zu hantieren.
- Du brauchst einen Proxmox-Host mit genug RAM für die Spiele, die du hosten willst. Palworld allein will deutlich mehr als Minecraft.
Pelican ist noch jung. Zum Zeitpunkt dieses Guides ist die aktuelle Version v1.0.0-rc.1 vom 10. Oktober 2026, ein Release Candidate für 1.0. Welche Version gerade aktuell ist, siehst du auf der Release-Seite auf GitHub. Davor gab es lange Betas. Die Community-Scripts unten installieren immer das neueste Release von GitHub, du bekommst also mindestens Version rc.1. Bei mir laufen Panel und Wings noch auf Beta-Versionen, und das seit Monaten ohne große Probleme. Rechne trotzdem damit, dass sich Menüs zwischen Versionen ändern. Die Menünamen in diesem Guide stammen aus meiner Installation und der offiziellen Doku, in deiner Version können einzelne Buttons leicht anders heißen.
Das brauchst du
- Einen Proxmox-VE-Host mit Zugriff auf die Shell.
- Für das Panel: einen kleinen LXC. Das Script schlägt 2 Kerne, 1 GB RAM und 4 GB Disk vor. Bei mir hat er 10 GB Disk, damit Logs und Uploads Platz haben.
- Für Wings: einen großen LXC. Bei mir hat er 8 Kerne, 16 GB RAM und 200 GB Disk, weil Spielwelten, Backups und Docker-Images schnell wachsen.
- Zugriff auf deinen Router, falls Freunde von außen ohne VPN spielen sollen.
Zur Größe von Wings: Ein Minecraft-Server für eine Handvoll Leute kommt mit wenigen GB RAM aus. Für Palworld empfiehlt die Egg-Doku mindestens 16 GB RAM, besser 32 GB, und eine CPU mit mindestens 4 Kernen. Plane den Wings-LXC also nach dem hungrigsten Spiel.
Schritt 1: Das Panel per Community-Script installieren
Die offizielle Doku auf pelican.dev beschreibt eine manuelle Installation mit PHP, Composer und Webserver. Einfacher geht es mit den Proxmox VE Helper-Scripts der Community, die genau das in einem LXC erledigen. So habe ich es auch gemacht. Führe auf der Shell deines Proxmox-Hosts aus:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/pelican-panel.sh)"
Bevor du ein fremdes Script als root ausführst, lohnt sich ein Blick in den Code auf GitHub (community-scripts.github.io/ProxmoxVE). Das Script fragt dich, ob du die Standardwerte nehmen oder eigene Einstellungen setzen willst. Es legt einen Debian-13-LXC an und installiert PHP 8.4, Apache, MariaDB und das Panel nach /opt/pelican-panel. Es richtet außerdem den Queue-Worker als Service und einen Cronjob ein, der jede Minute php artisan schedule:run aufruft. Ohne diesen Cronjob würden später deine Zeitpläne nicht laufen.
Am Ende zeigt dir das Script eine URL der Form http://192.168.1.x/installer. Dort öffnest du den Web-Installer. Er prüft zuerst PHP-Version, Extensions und Ordnerrechte und fragt dann nacheinander diese Schritte ab:
- Environment: Ein Name für dein Panel, die App URL (lass
http://192.168.1.xso stehen, wie das Script sie gesetzt hat) und unter Admin User E-Mail, Benutzername und Passwort für deinen Admin-Account. - Database: Das Script hat schon eine MariaDB-Datenbank angelegt. Wähle als Driver MariaDB, Host
localhost, Port3306, Datenbankpanelund Benutzerpelican. Das Passwort steht im Container in/root/pelican-panel.creds, du liest es mitcat /root/pelican-panel.credsaus. Der Installer empfiehlt zwar SQLite, bleib hier aber bei der Datenbank, die das Script vorbereitet hat. - Eggs: Hier wählst du direkt die ersten Spielvorlagen aus, zum Beispiel Minecraft. Sie werden im Hintergrund installiert.
- Session und Cache: Nimm die Empfehlung des Installers, also Filesystem.
- Queue: Driver Database. Der Installer zeigt dir einen Crontab-Befehl und einen Befehl für den Queue-Worker. Beides hat das Script schon erledigt, du setzt also nur den Haken bei I have done both steps below.
Danach meldest du dich mit deinem Admin-Account an. Laut Doku solltest du den APP_KEY aus der Datei /opt/pelican-panel/.env sicher aufbewahren, am besten außerhalb des Servers in deinem Passwort-Manager. Ohne ihn kannst du verschlüsselte Daten nicht wiederherstellen, selbst wenn du ein Datenbank-Backup hast. Du zeigst ihn mit grep APP_KEY /opt/pelican-panel/.env an. Gib dem Panel-LXC außerdem eine feste IP, zum Beispiel per DHCP-Reservierung im Router.
Schritt 2: Wings im zweiten LXC installieren
Wings startet jeden Gameserver als eigenen Docker-Container. Deshalb braucht der Wings-LXC Docker. Die Pelican-Doku warnt allgemein, dass Wings in LXC-Containern meist nicht läuft. In der Praxis liegt das fast immer an fehlenden Container-Features. Das Community-Script legt einen unprivilegierten Debian-13-LXC an und setzt dabei nesting=1 und keyctl=1. Damit klappt Docker im LXC, bei mir seit Monaten ohne Probleme. Auf dem Proxmox-Host:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/pelican-wings.sh)"
Das Script schlägt standardmäßig nur 2 Kerne, 4 GB RAM und 8 GB Disk vor. Wähle im Dialog die erweiterten Einstellungen und gib dem Container gleich mehr Ressourcen. Ein Minecraft-Image allein ist schon rund 600 MB groß. Das Script installiert Docker, legt Wings unter /usr/local/bin/wings ab und erstellt den systemd-Service wings. Prüfe im Container:
wings version
docker --version
systemctl status wings
Der Service ist zwar eingerichtet, startet aber erst sauber, wenn er eine Konfiguration hat. Bis dahin zeigt systemctl status wings eventuell Fehler oder Neustarts, das ist normal. Die Konfiguration holst du dir im nächsten Schritt aus dem Panel. Auch der Wings-LXC braucht eine feste IP.
Schritt 3: Den Node im Panel anlegen
Ein Node ist im Panel die Maschine, auf der Wings läuft. Gehe im Admin-Bereich auf Nodes und lege einen neuen Node an. Der Button heißt je nach Version Create Node oder, wie in der offiziellen Doku, Create New. Der Assistent hat zwei Seiten. Unter Basic Settings trägst du in das Feld Domain Name die IP des Wings-LXC ein, zum Beispiel 192.168.1.y. Das Feld heißt dann automatisch IP Address. Solange dein Panel per http läuft, bleibt Communicate over SSL aus, mit einer reinen IP geht SSL ohnehin nicht. Den Port lässt du auf 8080. Unter Advanced Settings steht der SFTP Port auf 2022. Mit diesen Standardports läuft es auch bei mir. Dort stellst du außerdem bei Memory und Disk auf Limited und gibst an, wie viel RAM und Disk der Node an Gameserver verteilen darf. Plane dabei etwas Puffer für das System des LXC ein.
Nach dem Speichern öffnest du den Node und wechselst in den Tab Configuration File (in der offiziellen Doku heißt er Configuration). Den Inhalt kopierst du im Wings-LXC nach /etc/pelican/config.yml, zum Beispiel mit nano /etc/pelican/config.yml. Den Ordner hat das Script schon angelegt. Alternativ bietet das Panel dort den Button Auto Deploy Command an. Wähle als Typ Standalone und führe den angezeigten Befehl im Wings-LXC aus. Danach:
systemctl restart wings
systemctl status wings
Wenn Wings Fehler wirft, starte es zum Testen einmal im Vordergrund mit wings --debug und beende es danach mit Strg+C. Zum Schluss legst du im Node unter Allocations mit Create Allocation die Ports an, die deine Server nutzen dürfen. Eine Allocation ist eine Kombination aus IP und Port. Als IP wählst du die IP des Wings-LXC, bei den Ports kannst du mehrere mit Komma trennen. Für dieses Beispiel brauchst du 25565 für Minecraft und 8211 für Palworld.
Schritt 4: Eggs importieren
Unter Eggs im Admin-Bereich kannst du weitere Vorlagen importieren. Der Import-Dialog nimmt eine Datei, eine URL zur rohen .yaml– oder .json-Datei oder eine Auswahl aus GitHub. Die meisten Eggs kommen aus den Community-Repos unter github.com/pelican-eggs. Das Paper-Egg für Minecraft liegt dort im Repo minecraft, das Palworld-Egg im Repo games-steamcmd. Für Palworld gibt es zwei Varianten: die normale Linux-Version und eine Proton-Variante für Mods. Für den Import per URL nimmst du diese Links zu den rohen Dateien:
https://raw.githubusercontent.com/pelican-eggs/minecraft/main/java/paper/egg-paper.yaml
https://raw.githubusercontent.com/pelican-eggs/games-steamcmd/main/palworld/egg-palworld.yaml
Schritt 5: Einen Minecraft-Server anlegen
Gehe auf Servers und erstelle einen neuen Server. Du wählst den Node, die Allocation mit Port 25565 und das Egg Paper. Als Docker-Image nimmst du Java 21 oder höher, je nachdem, was die Minecraft-Version verlangt. Bei Memory Limit sind 4096 MB für eine kleine Runde ein guter Start. Das Panel weist darauf hin, dass Wings auf das Limit noch etwas Overhead draufrechnet. CPU Limit wird in Prozent angegeben, 100 % entspricht einem Thread.
Unter Feature Limits stellst du ein, wie viele Backups der Server haben darf. Steht dort 0, kannst du später keine Backups anlegen. Nach dem Erstellen lädt Wings das Image, führt das Installationsscript aus und lädt die Server-JAR herunter. In der Konsole des Servers siehst du, wann er bereit ist. Wenn du die Welt regelmäßig frisch haben willst, zeige ich in Minecraft-Welt jede Woche neu generieren, wie ich das automatisiere. Ein eigener Guide zu einem Cobblemon-Server ist bei mir in Arbeit.
Schritt 6: Einen Palworld-Server anlegen
Der Ablauf ist derselbe, nur mit dem Palworld-Egg und Port 8211. Das Egg installiert den Server über SteamCMD, das dauert beim ersten Mal ein paar Minuten. Plane laut Egg-Doku rund 5 GB Disk für die Serverdateien ein, bei Updates eher mehr. Beim RAM solltest du großzügig sein, siehe oben. Im Reiter Startup setzt du die wichtigsten Variablen: Servername, Serverpasswort, Admin-Passwort und maximale Spielerzahl. Der RCON-Port braucht laut Egg-Doku keine eigene Allocation.
Bevor du die Konfigurationsdatei Pal/Saved/Config/LinuxServer/PalWorldSettings.ini im Dateimanager änderst, stoppe den Server vollständig. Sonst überschreibt er deine Änderungen beim Herunterfahren.
Schritt 7: Deine Freunde verbinden
Im Heimnetz verbinden sich alle direkt mit der IP des Wings-LXC und dem Port. Für Freunde von außen hast du drei Wege:
- Port-Forwarding: Im Router leitest du nur die Spielports an den Wings-LXC weiter, also TCP 25565 für Minecraft Java und UDP 8211 für Palworld. Das Panel, Port 8080 und Port 2022 gibst du nicht frei. Hinter DS-Lite oder CGNAT funktioniert das nicht, weil du keine eigene öffentliche IPv4 hast.
- Tailscale: Deine Freunde installieren Tailscale und bekommen Zugriff auf deinen Wings-LXC. Es ist kein Port im Router offen. In einem LXC braucht Tailscale das TUN-Device. Dafür ergänzt du auf dem Proxmox-Host in der Datei
/etc/pve/lxc/<CT-ID>.confdes Wings-LXC die Zeilenlxc.cgroup2.devices.allow: c 10:200 rwmundlxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=fileund startest den Container neu. Danach installierst du Tailscale im LXC mitcurl -fsSL https://tailscale.com/install.sh | shund meldest ihn mittailscale upan. Deine Freunde lädst du in dein Tailnet ein oder teilst ihnen nur diese eine Maschine. So läuft es bei mir. - playit.gg: Ein Tunnel-Dienst, der ohne Port-Forwarding auskommt und auch hinter CGNAT funktioniert. Laut der Preisseite deckt der kostenlose Tarif zum Zeitpunkt dieses Guides Minecraft Java und Bedrock und einige weitere Spiele wie Palworld ab. Manche Spiele und Tunnel-Typen brauchen Premium. Die Tarife ändern sich öfter, schau vorher dort nach, was gerade kostenlos ist.
Das Panel selbst würde ich nicht öffentlich ins Internet stellen. Greif von unterwegs per Tailscale darauf zu. Dein Browser muss dabei neben dem Panel auch Wings auf Port 8080 erreichen. Die Live-Konsole verbindet sich direkt vom Browser per WebSocket mit Wings.
Schritt 8: Backups und nächtlicher Restart
Jeder Server hat einen Reiter Backups. Dort legst du per Klick ein Backup an. Wings speichert lokale Backups im Wings-LXC unter /var/lib/pelican/backups. Das schützt dich vor einer kaputten Welt, aber nicht vor einer kaputten Disk. Sichere deshalb zusätzlich beide LXCs per Proxmox-Backup auf ein NAS oder einen anderen Speicher.
Automatisieren kannst du das im Reiter Schedules. Lege einen neuen Schedule an, zum Beispiel mit dem Cron-Ausdruck 0 4 * * * für jeden Tag um 4 Uhr. Darin erstellst du Tasks: zuerst Create Backup, dann Send Power Action mit Restart und einem Time Offset von ein paar Minuten. Ein nächtlicher Restart hilft vor allem bei Palworld, das laut Egg-Doku mit einem Speicherleck zu kämpfen hat. Mit Run Now testest du den Schedule sofort.
So prüfst du, ob es läuft
- Im Admin-Bereich unter Nodes zeigt dein Node einen grünen Status. Im Tab Overview des Nodes siehst du unter Wings Version die installierte Version.
- Im Wings-LXC zeigt
docker psfür jeden laufenden Gameserver einen Container. - In der Server-Konsole kommen Logzeilen an und die Ressourcenanzeige bewegt sich.
- Ein Freund außerhalb deines Netzes kann sich mit Adresse und Port verbinden.
Typische Probleme
- Node bleibt rot: Meist stimmt die
config.ymlnicht oder Wings läuft nicht. Prüfe mitjournalctl -u wingsund starte testweisewings --debug. - Konsole bleibt leer: Dein Browser erreicht Wings auf Port 8080 nicht, zum Beispiel weil du von unterwegs nur das Panel erreichst.
- Docker startet im LXC nicht: Nesting ist nicht aktiv. Unter Options und Features des Containers aktivierst du nesting und keyctl.
- Disk läuft voll: Images, Welten und Backups summieren sich. Bei mir sind gut zwei Drittel der 200 GB belegt. Lösche alte Backups und vergrößere die Disk rechtzeitig.
- Update schlägt fehl: Das Community-Script legt in jedem der beiden Container einen
update-Befehl an, der das neueste Release von GitHub holt. Erstelle vorher auf dem Host einen Snapshot, damit du zurückrollen kannst, wenn ein Update hakt. Solange Pelican im Release-Candidate-Stadium ist, lohnt sich vorher ein Blick in die Release Notes auf GitHub. - Installer meldet einen Datenbankfehler: Prüfe Host, Datenbankname, Benutzer und Passwort gegen
/root/pelican-panel.credsim Panel-LXC.
Fazit
Mit Panel und Wings in zwei LXCs hast du eine kleine Hosting-Plattform für deine Freunde. Neue Server legst du in ein paar Minuten an, Backups und Restarts laufen nach Zeitplan. Die meiste Arbeit steckt in der Planung der Ressourcen und in der Frage, wie deine Freunde von außen reinkommen. Wenn deine Runde auch einen Discord hat, passt dazu mein Guide zum eigenen Discord-Ticket-Bot mit Python.
Hat dir der Guide geholfen? Dann spendier mir gern einen Kaffee auf Ko-fi. Damit bleibt MappleBox werbefrei.