Docker für Gameserver: Der praktische Weg zum eigenen Server
Gameserver mit Docker sicher und praxisnah betreiben: Einzelcontainer für Tests, Pterodactyl für skalierte Hosts, persistente Volumes, PUID/PGID und...
Gameserver mit Docker sicher und praxisnah betreiben: Einzelcontainer für Tests, Pterodactyl für skalierte Hosts, persistente Volumes, PUID/PGID und...
Für einen einzelnen Server genügt ein schlanker Docker-Container mit einem passenden Image, etwa aus dem LinuxGSM-Umfeld. Wer mehrere Server oder eine ganze Community betreibt, kommt an Pterodactyl kaum vorbei, weil sich Nodes, Allocations und Updates dort zentral verwalten lassen. Beide Wege setzen eine laufende Docker-Installation, persistente Volumes und saubere Dateirechte (PUID/PGID) voraus. Vor jedem Update oder LinuxGSM-„validate“ gehört ein Backup dazu, sonst drohen überschriebene Konfigurationsdateien.
Kurz gesagt:
- Für wenige Nutzer genügt ein einzelner Docker-Container, alle größeren Installationen profitieren jedoch von Pterodactyl zur zentralen Verwaltung mehrerer Server.
- Bei der Einrichtung eines Minecraft-Servers ist das Anlegen eines Volumes für Daten, korrekte Dateirechte und regelmäßige Backups vor Updates essenziell.
- Für Spiele mit hohem UDP-Verkehr sind Host-Netzwerke oft vorteilhaft, allerdings verringert das die Isolation des Containers erheblich.
- Die sichere Nutzung von Docker erfordert Ressourcenlimits, das Minimieren von Root-Rechten und die Überwachung der Container-Auslastung, um Sicherheitslücken zu vermeiden.
- Bei mehreren Nodes müssen Netzwerk-Subnetze sorgfältig konfiguriert werden, um IP-Kollisionen und Erreichbarkeitsprobleme zu vermeiden.
Wer heute einen Gameserver mit Docker aufsetzen will, hat im Kern drei Optionen. Jede davon passt zu einem anderen Betriebsmodell, und die Wahl hängt weniger vom Spiel als von der geplanten Größe und Wartungsbereitschaft ab.
docker run oder eine einzelne docker-compose.yml. Ideal für einen Testserver oder eine kleine Freundesrunde.Für Einsteiger ist der Einzelcontainer der schnellste Start. Sobald Skalierung, Nutzerverwaltung oder automatisierte Allocations wichtig werden, gewinnt Pterodactyl klar an Wert.
Ein Minecraft-Server lässt sich mit wenigen Zeilen docker-compose.yml betreiben. Das folgende Minimalbeispiel nutzt eine Java-17-Laufzeit, wie sie auch in Pterodactyls Yolks-Images zum Einsatz kommt, und funktioniert ebenso als eigenständiger Container ohne Panel.
services:
minecraft:
image: itzg/minecraft-server
restart: unless-stopped
ports:
- "25565:25565/tcp"
- "25565:25565/udp"
environment:
EULA: "TRUE"
MEMORY: "4G"
PUID: "1000"
PGID: "1000"
volumes:
- ./data:/data
./data auf dem Host an /data im Container. Weltdaten, Konfigurationen und Plugins überleben so jeden Neustart und jedes Update.PUID/PGID sorgen dafür, dass Dateien im Container demselben Nutzer gehören wie auf dem Host, sonst drohen Berechtigungsfehler beim Zugriff von außen.Bevor Sie ein Update fahren, sichern Sie den data-Ordner. Ein fehlgeschlagenes Update lässt sich so in Minuten zurückrollen statt in Stunden neu aufsetzen.
Docker bietet mehrere Netzwerk-Treiber, doch für Gameserver zählen praktisch nur zwei: bridge und host. Bridge ist der Standard und isoliert den Container in einem eigenen Netzwerk-Namespace, wofür jeder Port einzeln über -p gemappt werden muss. Host-Networking dagegen teilt den Netzwerk-Namespace direkt mit dem Server, Port-Mapping entfällt komplett und NAT-Overhead bei UDP-Traffic sinkt spürbar.
Für Spiele mit hohem UDP-Aufkommen wie Rust oder ARK lohnt sich host-Networking fast immer. Die Latenzgewinne sind real, allerdings auf Kosten der Isolation: Ein kompromittierter Container hat dann direkten Zugriff auf die Netzwerkschnittstelle des Hosts. Dieser Trade-off zwischen Performance und Isolation sollte bewusst getroffen werden, nicht aus Bequemlichkeit.
Profi-Tipp: Betreiben Sie mehrere Server auf einem Host, dokumentieren Sie jede Portvergabe in einer einfachen Tabelle. Nichts kostet mehr Zeit als die Suche nach einem Portkonflikt um Mitternacht, wenn die Community gerade online gehen will.
Bei Pterodactyl-Installationen mit mehreren Nodes kommt ein weiteres Risiko hinzu: überlappende Docker-Subnetze. Wenn zwei Wings-Instanzen dasselbe Subnetz nutzen, kollidieren interne Container-IPs und Server werden unerreichbar.
Persistente Volumes entscheiden darüber, ob ein Update ein Routinevorgang oder ein Risiko ist. Der Container-Pfad /home/container, wie er bei vielen Pterodactyl-Eggs verwendet wird, sollte immer auf ein Host-Verzeichnis gemappt werden, niemals als flüchtiges Containervolume ohne Bind-Mount laufen.
chown -R 1000:1000 /pfad/zu/daten an, wenn PUID/PGID nicht mit den Host-Rechten übereinstimmen.chmod 750, statt pauschal 777 zu vergeben.validate oder größeren Update, da dieser Befehl angepasste Konfigurationsdateien überschreiben kann.Ein Snapshot vor der Validierung kostet wenige Sekunden. Ein zerschossener Spawn-Punkt oder eine überschriebene Server-Konfiguration kostet dagegen oft einen ganzen Abend Wiederherstellungsarbeit.
SteamCMD lädt die eigentlichen Serverdateien für die meisten Steam-basierten Spiele herunter und aktualisiert sie. Für viele Titel reicht ein anonymer Login, manche Server erfordern jedoch einen echten Steam-Account samt SteamGuard-Freigabe, was automatisierte Updates erschwert.
Ein Gameserver-Container läuft am besten mit möglichst wenig Rechten. --cap-drop=ALL entzieht dem Container Linux-Capabilities, die er ohnehin nicht braucht, --security-opt=no-new-privileges verhindert, dass Prozesse im Container nachträglich Rechte erhöhen. Ein read-only Root-Dateisystem, kombiniert mit expliziten Schreibvolumes, blockt viele Angriffsversuche von vornherein.
--memory und CPU-Anteile über --cpus, damit ein einzelner Server nicht den ganzen Host lahmlegt.io_weight, wenn mehrere Container um Festplatten-I/O konkurrieren.docker stats und die Container-Logs zeigen ungewöhnliche CPU- oder Speicherspitzen meist frühzeitig.Root-Nutzung im Container zählt zu den häufigsten Sicherheitslücken bei selbst gehosteten Gameservern, weil ein kompromittierter Prozess dann Host-Dateien mit vollen Rechten verändern kann.
Wer mehrere Server verwalten will, kommt an einer strukturierten Installation nicht vorbei. Pterodactyl trennt Panel (Weboberfläche) und Wings (Docker-Daemon auf dem eigentlichen Server) strikt, was Skalierung über mehrere Maschinen erleichtert.
Profi-Tipp: Ändern Sie bei mehreren Nodes das Docker-Subnetz in der Wings-Konfiguration, damit sich Container-IPs zwischen den Nodes niemals überschneiden.
Wer diese Infrastruktur nicht selbst betreiben möchte, kann Panel-Funktionalität auch über einen gemanagten Gameserver-Anbieter beziehen, dazu später mehr.
Die drei häufigsten Fehler in der Praxis: überlappende Docker-Subnetze bei mehreren Wings-Nodes, falsch gesetzte PUID/PGID-Werte, die zu Berechtigungsfehlern führen, und SteamGuard-Blockaden bei automatisierten Updates. Die Entscheidung zwischen Panel und Einzelsystem hängt schlicht von der Anzahl der Server ab, nicht vom Spiel. Vor dem Live-Start: Backup ziehen, Ports testen, Ressourcenlimits setzen, Logs einmal komplett durchlesen.
— Erik
Wer die Netzwerk-, Rechte- und Update-Themen aus diesem Artikel lieber nicht selbst verwalten will, findet bei Nexthosting fertige Gameserver-Umgebungen für Minecraft, FiveM, Garry’s Mod und weitere Titel. Statt Subnetz-Konflikte zwischen Wings-Nodes zu debuggen oder SteamGuard-Logins zu automatisieren, mieten Sie einen Server, der bereits läuft. Die Angebote laufen auf NVMe-SSD-Hardware, sind mit DDoS-Schutz ohne Aufpreis ausgestattet und werden in einem deutschen Rechenzentrum betrieben, ein Vorteil für Datenschutz und Latenz zugleich.
Wer Docker-Container lieber selbst orchestrieren, aber die Hardware auslagern will, findet passende VPS-Server als Basis für eigene Pterodactyl-Nodes. Für alle, die einfach einen Minecraft-Server mieten wollen, ohne sich um Yolks-Images oder Volume-Mappings zu kümmern, ist die entsprechende Kategorieseite der direkte Einstieg. Schauen Sie sich die Gameserver-Kategorie an und vergleichen Sie, welches Modell zu Ihrem Betriebsaufwand passt.
Am einfachsten mit einem Docker-Container und einem passenden Image, etwa aus dem LinuxGSM-Umfeld oder als Yolks-Image für Pterodactyl. Alternativ mietet man einen fertig eingerichteten Server, etwa über die Gameserver-Angebote von Nexthosting, und überspringt die komplette Docker-Einrichtung.
Docker läuft unter Windows Server über Docker Desktop oder die Docker Engine mit Windows-Containern, für Gameserver-Images ist jedoch meist Linux die praktischere Basis, da fast alle Yolks- und LinuxGSM-Images für Linux gebaut sind. Wer produktiv Gameserver betreiben will, spart sich mit einem Linux-Host oder einem gemanagten VPS viele Kompatibilitätsprobleme.
Für Einzelserver eignen sich LinuxGSM-Images und SteamCMD-basierte Container am besten, für mehrere Server oder Communities ist Pterodactyl mit seinen Yolks-Images die verbreitetste Lösung. Beide Wege nutzen Docker als Basis, unterscheiden sich aber stark im Verwaltungsaufwand.
Sie schreiben eine docker-compose.yml mit Image, Ports, Umgebungsvariablen und einem Volume für persistente Daten, wie im Beispiel weiter oben gezeigt. Nach docker compose up -d läuft der Server, Updates erfolgen über einen erneuten Image-Pull mit vorherigem Backup des Datenordners.
Ein Minecraft-Server startet bei 5,57 € pro Monat, FiveM ist ab einem moderaten monatlichen Preis verfügbar und Garry’s Mod ab 6,49 € pro Monat. Wer stattdessen eigene Docker-Container auf einem VPS betreiben möchte, findet passende Pakete ab 6,49 € pro Monat in der VPS-Kategorie.