Spielerweiterleitung und Netzwerkschutz gehören zusammen
Velocity authentifiziert die öffentliche Verbindung. Paper läuft mit online-mode=false, damit es die vom Proxy übermittelte Identität akzeptiert. Allein wäre diese Einstellung gefährlich: Bei direktem Zugriff könnte sich ein Spieler möglicherweise als fremdes Konto ausgeben.
Modern Forwarding schützt die Identitätsdaten durch ein gemeinsames Secret. PaperMC empfiehlt trotzdem eine Firewall oder gleichwertige Isolation. Das Secret ergänzt die Netzwerkgrenze, ersetzt sie aber nicht.
Falls Proxy und Paper-Server noch nicht gemeinsam laufen, beginne mit der Velocity-Einrichtung mit Docker Compose.
Einstellungen am Proxy
Stoppe beide Container vor der Änderung:
docker compose down
Setze in proxy/velocity.toml:
online-mode = true
player-info-forwarding-mode = "modern"
forwarding-secret-file = "forwarding.secret"
Velocity übernimmt mit online-mode=true die Mojang-/Microsoft-Authentifizierung. Der moderne Forwarding-Modus ist für Minecraft 1.13 und neuer vorgesehen und wird von aktuellen Paper-Versionen direkt unterstützt.
Lies den Wert aus proxy/forwarding.secret, ohne ihn in Befehlszeilen, Git, Screenshots oder Supportnachrichten zu übernehmen. Fehlt die Datei, starte Velocity einmal zur Generierung und stoppe es danach wieder.
Einstellungen am Paper-Backend
Paper muss bereits einmal gestartet worden sein, damit lobby/config/paper-global.yml existiert.
Setze in lobby/server.properties:
online-mode=false
Öffne danach lobby/config/paper-global.yml:
proxies:
velocity:
enabled: true
online-mode: true
secret: "hier-das-exakte-forwarding-secret-eintragen"
Der Wert proxies.velocity.online-mode muss zu online-mode im Proxy passen. Er ersetzt nicht den Eintrag in server.properties; beide beschreiben unterschiedliche Seiten der Authentifizierung.
Falls vorher BungeeCord-Legacy-Forwarding aktiv war, schalte es in spigot.yml aus:
settings:
bungeecord: false
Mische moderne und alte Weiterleitung nicht. Für einen Verbindungspfad wird genau ein Verfahren verwendet.
Backend-Port privat halten
Innerhalb desselben Compose-Projekts braucht Paper keine Portweiterleitung zum Host:
services:
proxy:
ports:
- "25565:25577"
networks: [minecraft]
lobby:
networks: [minecraft]
networks:
minecraft: {}
Velocity nutzt intern lobby:25565. Kontrolliere die tatsächliche Compose-Ausgabe:
docker compose config
docker compose port proxy 25577
docker compose port lobby 25565
Nur der Proxy darf eine öffentliche Portweiterleitung anzeigen.
Laufen Proxy und Backend auf verschiedenen Hosts, reicht ein Compose-Netzwerk nicht aus. Begrenze Paper in der Host- und Provider-Firewall auf die Proxy-Adresse oder transportiere den Datenverkehr durch ein privates, verschlüsseltes Netzwerk. Ein Backend mit deaktivierter Online-Authentifizierung darf nie offen im Internet stehen.
Neustart und Identitätstest
Starte beide Seiten und beobachte ihre Logs:
docker compose up -d
docker compose logs -f proxy lobby
Ein vollständiger Test erfüllt alle Bedingungen:
- Velocity authentifiziert das Java-Konto.
- Paper akzeptiert den Login ohne Forwarding-Fehler.
- UUID, Skin und Adressdaten kommen korrekt über Velocity an.
- Eine direkte Verbindung zum Backend ist nicht möglich.
- Ein Container-Neustart verändert Secret und Modus nicht.
Teste zusätzlich mit einem Konto ohne Operatorrechte. Ein OP-Konto kann Berechtigungs- und Routingfehler verdecken.
Offengelegtes Secret rotieren
Sobald der Wert in Git, Logs, Chat oder Screenshot sichtbar war, gilt er als kompromittiert:
- Proxy und alle Backends stoppen.
proxy/forwarding.secretdurch einen neuen langen Zufallswert ersetzen.- Den identischen Wert in jedem Paper-Backend eintragen.
- Erneut prüfen, dass kein Backend-Port öffentlich ist.
- Das gesamte Netzwerk starten und einen echten Login testen.
Nur eine Seite zu ändern führt absichtlich zu fehlgeschlagenen Logins.
Fehlerbehebung
| Meldung oder Symptom | Ursache | Lösung |
|---|---|---|
This server requires you to connect with Velocity | Paper erwartet Modern Forwarding, Velocity sendet es nicht | Proxy auf modern stellen und beide Seiten neu starten |
| Login scheitert nach Secret-Wechsel | Werte stimmen nicht überein | Exakten neuen Wert auf alle Backends übernehmen |
| UUIDs oder Skins sind falsch | Legacy-/kein Forwarding aktiv | Bungee-Forwarding deaktivieren und Modern-Konfiguration prüfen |
| Direkter Backend-Login gelingt | Host-Port oder Firewall machen Paper öffentlich erreichbar | Portweiterleitung entfernen und Zugriff sofort schließen |
| Proxy erreicht Paper gar nicht | Docker-Netzwerk, Service oder Port falsch | Backend-Verbindung prüfen |
Nächste Schritte
- Prüfe Routingfehler mit den Velocity-Backend-Checks.
- Ergänze Crossplay über Geyser und Floodgate am Proxy.
- Übernimm die allgemeine Docker-Minecraft-Härtung.