Geyser zentral auf dem Proxy installieren
Der vorhandene direkte Geyser-/Floodgate-Guide installiert beide Plugins auf einem einzelnen Paper-Server. Hier ist Velocity bereits der öffentliche Einstieg für mehrere Backends. Deshalb läuft Geyser zentral auf dem Proxy.
Die aktuelle Geyser-Anleitung für Proxy-Netzwerke verlangt:
- Geyser ausschließlich auf dem Proxy installieren
- Floodgate für Bedrock-Authentifizierung auf dem Proxy installieren
- Floodgate nur bei benötigter API oder zusätzlichen Daten auf Backends ergänzen
- alle Backends mit der Java-Protokollversion kompatibel halten, die Geyser aktuell emuliert
Prüfe vor Updates immer die Supported-Versions-Seite. Bedrock-Clients wechseln schnell; die Architektur bleibt länger gültig als fest eingetragene Versionsnummern.
Schritt 1: Funktionierendes Velocity-Netzwerk voraussetzen
Bevor du Crossplay hinzufügst, müssen diese Punkte stimmen:
- Java-Spieler erreichen über Velocity ein Paper-Backend.
- Velocity Modern Forwarding funktioniert.
- Backend-Ports sind nicht öffentlich.
/serverdes Proxys ist dauerhaft eingebunden.
Nutze bei Bedarf zuerst die Velocity-Einrichtung mit Docker Compose und die Anleitung zur sicheren Spielerweiterleitung.
Schritt 2: Plugins und UDP-Port ergänzen
itzg/mc-proxy kann Plugins aus URLs laden. Ergänze die offiziellen Velocity-Downloads von Geyser und Floodgate sowie den Bedrock-UDP-Port:
services:
proxy:
image: itzg/mc-proxy:latest
ports:
- "25565:25577"
- "19132:19132/udp"
environment:
TYPE: VELOCITY
MEMORY: 1G
PLUGINS: "https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/velocity,https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/velocity"
volumes:
- ./proxy:/server
Die latest-Links sind für den ersten Aufbau praktisch, können später aber eine neue Version liefern. Für planbare Updates solltest du geprüfte Versionen fest eintragen oder bekannte JAR-Dateien aufbewahren und gemeinsam testen.
Prüfe und starte:
docker compose config
docker compose up -d proxy
docker compose logs -f proxy
Beide Plugins müssen ohne Fehler zu fehlenden Abhängigkeiten oder zur Java-Version geladen werden.
Schritt 3: Bedrock-Port konfigurieren
Öffne nach dem ersten Start die erzeugte Geyser-Konfiguration im Plugin-Verzeichnis und kontrolliere:
bedrock:
address: 0.0.0.0
port: 19132
clone-remote-port: false
Mit 0.0.0.0 lauscht Geyser auf allen Netzwerkadressen des Containers. Der Compose-Eintrag veröffentlicht den UDP-Port auf dem Host. Ohne /udp wird fälschlich ein TCP-Port geöffnet, über den Bedrock keine Verbindung aufbauen kann.
Suche in derselben erzeugten Geyser-Konfiguration nach auth-type und setze den Wert auf floodgate. Der umgebende Abschnitt kann sich zwischen Konfigurationsversionen ändern. Bearbeite deshalb die tatsächlich erzeugte Datei, statt sie komplett durch ein altes Beispiel zu ersetzen.
docker compose restart proxy
docker compose logs --tail=150 proxy
Schritt 4: UDP durchgängig öffnen
Vier Ebenen müssen Port und Protokoll teilen:
- Geyser lauscht im Container auf UDP 19132.
- Compose enthält
19132:19132/udp. - Die Host-Firewall erlaubt UDP 19132.
- Router oder Cloud-Firewall erlauben UDP 19132 zum Host.
Die Java-TCP-Regel bleibt zusätzlich bestehen:
| Client | Öffentlicher Endpunkt |
|---|---|
| Java Edition | play.example.com:25565/tcp |
| Bedrock Edition | play.example.com:19132/udp |
Ein Java-SRV-Record entfernt den Bedrock-Port in diesem Aufbau nicht. Gib Bedrock-Spielern den Port ausdrücklich an.
Schritt 5: Intern und extern prüfen
Kontrolliere zunächst die Portweiterleitung:
docker compose port proxy 19132/udp
docker compose logs --tail=150 proxy
Führe danach in der Proxy-Konsole Geysers externen Verbindungstest aus:
geyser connectiontest play.example.com 19132
Teste abschließend mit einem Bedrock-Client aus einem anderen Netzwerk. Ein Versuch im gleichen WLAN beweist nicht, dass Router- oder Provider-UDP funktioniert.
Der erste Login muss über Velocity dasselbe Backend wie Java-Spieler erreichen. Vergleiche Proxy- und Backend-Log und kontrolliere Namen sowie UUID-Verhalten gemäß deiner Floodgate-Konfiguration.
Wann Floodgate auch auf Backends gehört
Normales Crossplay benötigt Floodgate nicht auf jedem Paper-Server. Ergänze es nur für Backend-Plugins, die Floodgate-API, Skin-Daten oder andere Floodgate-Informationen brauchen.
Das offizielle erweiterte Verfahren verlangt send-floodgate-data: true am Proxy und dieselbe key.pem auf den vertrauenswürdigen Backends. Dieser Schlüssel ermöglicht Bedrock-Authentifizierung. Veröffentliche oder versende ihn niemals an nicht vertrauenswürdige Personen. Übertrage ihn binär und beschränke die Dateirechte.
Fehlerbehebung
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Java funktioniert, Bedrock meldet „Unable to connect“ | UDP-Portweiterleitung oder Firewall fehlt | Alle vier UDP-Ebenen und geyser connectiontest prüfen |
| Geyser läuft auf jedem Backend | Geyser wurde am falschen Ort installiert | Geyser nur auf Velocity behalten |
| Bedrock erreicht Geyser, aber keinen Server | Velocity-Verbindung oder Version passt nicht | Java-Verbindung und Geyser-Versionen prüfen |
| Floodgate-Login verlangt Java-Authentifizierung | Auth-Type nicht auf Floodgate | Erzeugte Geyser-/Floodgate-Konfiguration angleichen |
AEADBadTagException nach Schlüsselkopie | Schlüssel unterscheiden sich oder wurden falsch übertragen | Exakte Schlüssel gemäß Floodgate-Doku neu verteilen |
| UDP 19132 kollidiert mit einem anderen Plugin | Zwei Dienste verwenden denselben UDP-Port | Jedem Dienst einen eigenen Port geben |
Nächste Schritte
- Bei instabilen Java-Verbindungen hilft die Anleitung zur Backend-Verbindung.
- Erzeuge eine klare Java-Spieleradresse mit dem Minecraft-SRV-Generator; der Bedrock-Port bleibt explizit.
- Prüfe vor Upgrades erneut die von Geyser unterstützten Versionen.