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.
- Erlaube
25565/tcpin der Host-Firewall. - 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
Fange bei der lokalen Wahrheit an. 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: Die Linux-Host-Firewall öffnen
Wenn du UFW nutzt, erlaube Minecraft explizit:
sudo ufw allow 25565/tcp
sudo ufw status
Wenn du rohe iptables- oder nftables-Regeln pflegst, stelle sicher, dass eine eingehende Allow-Regel für 25565/tcp existiert.
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 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. Expose RCON nicht einfach mit, nur weil du Admin-Zugriff willst. Halte den Verwaltungszugang auf dem Host-System oder in einem privaten Docker-Netz.
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 saubere Domain ohne Port 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.