Wann du genau diesen Guide brauchst
Diese Anleitung ist genau dann die richtige, wenn dein Minecraft-Container sauber startet, aber Spieler von außen nicht verbinden können. Typische Symptome sind:
Connection refused- Verbindungs-Timeouts
- lokal auf
localhostfunktioniert es, über die öffentliche IP aber nicht docker compose pssieht gesund aus, trotzdem kann niemand joinen
Das Ziel ist klar: Minecraft-Java-Traffic muss TCP-Port 25565 aus dem Internet bis zu deinem Server durchkommen.
60-Sekunden-Check
- Prüfe, ob Docker
25565:25565wirklich veröffentlicht. - Prüfe, ob der Linux-Host auf Port 25565 lauscht.
- Prüfe, wie Docker mit deiner Host-Firewall zusammenspielt.
- Erlaube
25565/tcpin der Hetzner Cloud Firewall. - Teste aus einem anderen Netzwerk.
Voraussetzungen
- Ein laufender Minecraft-Java-Server in Docker oder Docker Compose
- Eine öffentliche IPv4 oder IPv6 auf deinem Hetzner-Server
- SSH-Zugriff auf den Linux-Host
Wenn der Server noch gar nicht ausgerollt ist, beginne mit Einrichten eines Minecraft-Servers auf einem Hetzner Cloud-Server mit Docker Compose.
Schritt 1: Prüfen, ob Docker den Spiel-Port überhaupt veröffentlicht
Prüfe zuerst die Portfreigabe in Docker. Wenn Docker den Port nie veröffentlicht hat, helfen Firewall-Änderungen nicht.
docker compose ps
docker ps --format 'table {{.Names}}\t{{.Ports}}'
Du solltest 25565/tcp auf dem Host sehen, zum Beispiel:
0.0.0.0:25565->25565/tcp
:::25565->25565/tcp
Wenn dort nichts veröffentlicht ist, korrigiere zuerst die Compose-Datei:
services:
mc:
image: itzg/minecraft-server:latest
ports:
- "25565:25565"
Danach neu anwenden:
docker compose up -d
Schritt 2: Prüfen, ob der Host auf 25565 lauscht
Bestätige als Nächstes, dass der Linux-Host den Port wirklich offen hat:
sudo ss -tlnp | grep 25565
Wenn der Befehl nichts zurückgibt, trifft meistens eines davon zu:
- der Container läuft nicht
- das Port-Mapping fehlt
- der Dienst ist beim Start fehlgeschlagen
Dann zuerst die Logs ansehen:
docker compose logs -f
Schritt 3: Den Linux-Firewall-Pfad prüfen
Docker Engine erstellt eigene Paketfilter- und NAT-Regeln für veröffentlichte Ports. Bei einem normalen Linux-Bridge-Netzwerk wird der Datenverkehr zu 25565:25565 umgeleitet, bevor er die von UFW verwendeten INPUT- und OUTPUT-Chains erreicht. Ein veröffentlichter Container-Port kann deshalb erreichbar bleiben, obwohl UFW ihn eigentlich blockieren würde.
Du kannst die beabsichtigte Freigabe weiterhin in UFW dokumentieren:
sudo ufw allow 25565/tcp
sudo ufw status
Behandle diese Regel aber nicht als Beweis dafür, dass UFW den veröffentlichten Docker-Port kontrolliert. Prüfe den effektiven Pfad aus einem zweiten Netzwerk.
Wenn du Quell-IP-Beschränkungen direkt auf dem Linux-Host brauchst, nutze Regeln, die vor Dockers Freigabe für weitergeleiteten Traffic ausgewertet werden. Beim standardmäßigen iptables-Backend dokumentiert Docker dafür die DOCKER-USER-Chain. Beim nftables-Backend brauchst du eine eigene Forward-Chain mit passender Priorität. Deaktiviere Dockers Firewall-Verwaltung nicht nur, um UFW anders wirken zu lassen; das kann Container-Netzwerke beschädigen.
Entferne dabei nicht versehentlich deinen SSH-Zugang. Wenn deine Firewall sehr restriktiv ist, halte 22/tcp für deine Admin-IP offen.
Schritt 4: Die Hetzner Cloud Firewall öffnen
Hetzner Cloud Firewalls sitzen vor dem Server. Das heißt: Dein Linux-Host kann korrekt konfiguriert sein und der Traffic wird trotzdem vorher verworfen.
In der Hetzner-Konsole:
- Öffne dein Projekt.
- Gehe zu
Firewalls. - Erstelle oder bearbeite die Firewall, die am Minecraft-Server hängt.
- Füge eine eingehende Regel für
TCP, Port25565, Quelle0.0.0.0/0hinzu, wenn der Server öffentlich erreichbar sein soll. - Wenn auch IPv6-Spieler joinen sollen, ergänze
::/0.
Für den ersten Test sollte die Regel bewusst einfach sein. Später kannst du andere Ports wie SSH enger absichern.
Schritt 5: Von außen testen
Teste nicht nur vom Host selbst aus. Nutze stattdessen:
- das normale Minecraft-Spiel aus einem anderen Netz
- einen Freund
- einen Mobilfunk-Hotspot
Im Java-Spiel verbindest du dich mit:
DEINE_SERVER_IP:25565
Wenn das funktioniert, ist der Verbindungsweg sauber. Für eine schönere Serveradresse geht es mit Minecraft-Domain ohne Port: SRV-Record richtig einrichten weiter.
Häufige Fehler
| Symptom | Wahrscheinliche Ursache | Fix |
|---|---|---|
docker ps zeigt keine veröffentlichten Ports | Compose-Datei hat kein ports-Mapping | "25565:25565" ergänzen und neu erstellen |
| UFW blockiert den Port, er ist aber trotzdem erreichbar | Veröffentlichte Docker-Ports umgehen die normale UFW-Verarbeitung | Mit Hetzner Cloud Firewall oder Docker-tauglichen Forward-Regeln beschränken |
| UFW ist offen, öffentlich bleibt es trotzdem dicht | Hetzner Cloud Firewall blockiert noch | Dort ebenfalls 25565/tcp erlauben |
| Portscan zeigt geschlossen, Logs wirken normal | Falsches Protokoll | Für Java TCP verwenden |
| RCON funktioniert intern, Spieler können trotzdem nicht joinen | Nur der Verwaltungszugang ist offen | Den eigentlichen Spiel-Port veröffentlichen, nicht nur RCON |
Sicherheitshinweis
Öffne nur die Ports, die du wirklich für Spieler brauchst. Für einen normalen Minecraft-Java-Server ist das meist TCP 25565 und sonst nichts. Veröffentliche RCON nicht einfach mit, nur weil du Admin-Zugriff willst. Halte den Verwaltungszugang auf dem Host-System oder in einem privaten Docker-Netzwerk.
Auf Hetzner ist die Cloud Firewall die einfachste äußere Allowlist für öffentlichen Spiel-Traffic. Docker-taugliche Host-Regeln bleiben als zweite Schicht sinnvoll, aber ein UFW-Status allein beschreibt nicht die effektive Erreichbarkeit veröffentlichter Container-Ports.
FAQ
Sollte ich den Spiel-Port nur an eine einzelne IP binden?
Nur wenn du genau weißt, warum. Für die meisten Einzelserver ist das öffentliche Standard-Binding sinnvoll.
Was ist mit dem Query-Port?
Den brauchst du nur, wenn du Query bewusst einsetzt. Für normale Java-Spieler ist er nicht notwendig.
Nächste Schritte
- Für eine Domain ohne Portangabe lies Minecraft-Domain ohne Port: SRV-Record richtig einrichten.
- Wenn du noch mitten in der ersten Einrichtung bist, geh zurück zum Hetzner-Docker-Guide.
- Für sichere Administration statt zusätzlicher offener Ports nutze Minecraft-Server mit Docker administrieren: RCON und Konsole sicher nutzen.