Velocity ist ein Proxy, über den sich Spieler mit einer Adresse verbinden und dann mit dem Befehl /server zwischen Servern wechseln – zum Beispiel von der Lobby ins Survival oder zu den Minispielen. Wir zeigen, wie Sie Velocity installieren und einrichten, es über sicheres Modern Forwarding mit Ihren Servern verbinden und die Server hinter dem Proxy so absichern, dass niemand sie direkt erreicht.
Was Sie brauchen
- Mindestens zwei Minecraft-Server: Paper oder Purpur (Version 1.13 oder neuer) oder Fabric, Forge oder NeoForge mit einem Forwarding-Mod
- Einen Ort für den Proxy: einen VPS mit Ubuntu 24.04 oder Debian 13 (Verbindung über SSH); ein eigenes Produkt Minecraft Proxy bereiten wir vor
- Zugriff auf die Registerkarten Dateien und Servereigenschaften jedes Servers
- Etwa 40 Minuten
Wann Sie einen Proxy brauchen#
| Sie möchten | Brauchen Sie einen Proxy? |
|---|---|
| Einen Server für Freunde oder eine Community | Nein |
| Eine Lobby + einen oder mehrere Spielserver unter einer Adresse | Ja |
| Verschiedene Spielmodi (Survival, Kreativ, Minispiele) mit Wechsel ohne Trennen der Verbindung | Ja |
| Gemeinsamen Chat, Berechtigungen oder Bans über mehrere Server | Ja (mit Plugins auf dem Proxy) |
| Bedrock-Spieler im ganzen Netzwerk | Ja, Geyser läuft dann nur auf dem Proxy |
Der Proxy führt das Spiel nicht selbst aus, er leitet nur Verbindungen weiter. Er ist sparsam: 1–2 GB Arbeitsspeicher genügen für Dutzende Spieler.
So funktioniert das Netzwerk#
Spieler ──► mc.example.cz:25565 (Velocity, prüft den Spieler)
│
├──► lobby (Paper, online-mode=false, nimmt nur den Proxy an)
├──► survival (Paper, online-mode=false, nimmt nur den Proxy an)
└──► minihry (Paper, online-mode=false, nimmt nur den Proxy an)- Der Spieler verbindet sich mit der Adresse des Proxys. Der Proxy prüft bei Microsoft, ob er ein echtes Konto hat (
online-mode = true). - Der Proxy schickt ihn zum ersten Server in der Liste
try(der Lobby). - Zusammen mit der Verbindung übergibt der Proxy dem Server Namen, UUID, Skin und echte IP-Adresse des Spielers (Player Info Forwarding). Die Daten signiert er mit einem geheimen Schlüssel, den nur der Proxy und Ihre Server kennen.
- Die Server hinter dem Proxy (Backends) prüfen selbst nichts (
online-mode=false) und vertrauen nur einem Proxy mit gültigem Schlüssel. Wer sich direkt verbindet, bekommt die MeldungThis server requires you to connect with Velocity.
Proxy, Server und Domain#
- Proxy: Velocity 4.x verlangt Java 25. Betreiben Sie es auf einem VPS (VPS Performance, VPS Budget). Auf den Proxy gehören nur Plugins für Velocity – Paper-Plugins funktionieren dort nicht.
- Backends: gewöhnliche Minecraft-Server. Sie können bei StormHost als eigene Dienste laufen (jeder mit eigener Adresse und eigenem Port) oder auf demselben VPS wie der Proxy.
- Domain (optional): Spieler geben statt einer IP
mc.example.czein (Serveradresse und Domain).
Das Produkt Minecraft Proxy
Wir bereiten einen eigenständigen Proxy als Dienst vor. In der Registerkarte Startoptionen wird er ein voreingestelltes Preset Proxy für Velocity haben. Bis dahin verwenden Sie einen VPS – das Vorgehen steht unten.
Velocity auf einem VPS installieren#
Das funktioniert unter Ubuntu 24.04 und Debian 13 gleichermaßen. Führen Sie die Befehle als root aus.
Installieren Sie Java 25 und
curl:bash apt update apt install openjdk-25-jre-headless curlapt update– lädt die aktuelle Paketliste herunter.apt install openjdk-25-jre-headless– installiert die Java-25-Laufzeit ohne Grafikbibliotheken (ein Server braucht sie nicht).curl– ein Programm zum Herunterladen von Dateien aus dem Internet (haben Sie es schon, passiert nichts).
Prüfen Sie die Version:
bash java -versionDie erste Zeile der Ausgabe muss
25enthalten.Legen Sie einen Benutzer und einen Ordner für den Proxy an:
bash useradd --system --create-home --home-dir /opt/velocity --shell /usr/sbin/nologin velocityuseradd --system– legt einen Systembenutzer ohne Passwort an (der Proxy läuft nicht als root).--create-home --home-dir /opt/velocity– legt den Ordner/opt/velocityan, in dem der Proxy liegen wird.--shell /usr/sbin/nologin– niemand kann sich als dieser Benutzer anmelden.velocity– der Name des Benutzers.
Kopieren Sie auf papermc.io/downloads/velocity (öffnet sich in einem neuen Fenster) den Link zur neuesten stabilen Version und laden Sie sie herunter:
bash cd /opt/velocity curl -o velocity.jar "<DOWNLOAD_URL>" chown velocity:velocity velocity.jarcd /opt/velocity– wechselt in den Ordner des Proxys.curl -o velocity.jar– lädt die Datei herunter und speichert sie alsvelocity.jar.<DOWNLOAD_URL>– der Link, den Sie auf der Seite kopiert haben. Ersetzen Sie alles einschließlich der spitzen Klammern, die Anführungszeichen bleiben.chown velocity:velocity– macht den Benutzervelocityzum Eigentümer der Datei.
Starten Sie den Proxy zum ersten Mal, damit er seine Konfiguration anlegt:
bash runuser -u velocity -- env MALLOC_ARENA_MAX=2 java -Xms1G -Xmx1G -XX:MaxDirectMemorySize=512M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -jar velocity.jarrunuser -u velocity --– führt den Befehl nach--als Benutzervelocityaus.env MALLOC_ARENA_MAX=2– begrenzt die Speicherbereiche des Allokators, damit der Proxy nicht unnötig zusätzlichen Speicher belegt.-Xms1G -Xmx1G– gibt dem Proxy 1 GB Heap (auf einmal, damit er ihn im Betrieb nicht vergrößern muss). Für ein größeres Netzwerk erhöhen Sie auf2G. Der Proxy braucht auch außerhalb des Heaps viel Speicher für das Netzwerk; geben Sie ihm daher nicht mehr als die Hälfte des Speichers, den Sie für ihn haben.-XX:– eine Grenze für Netzwerkpuffer. Ohne sie können diese bis zur Größe des Heaps wachsen.MaxDirectMemorySize= 512M -XX:+UseG1GC … -XX:+AlwaysPreTouch– von der Dokumentation von Velocity empfohlene Parameter (der Garbage Collector G1, eingestellt für einen Proxy).-jar velocity.jar– startet den Proxy.
Den Befehl für eine andere Speichergröße erstellt der Generator für Startskripte.
Nach dem Start sehen Sie eine Zeile
Done (…)!. Geben Sieendein und drücken Sie Enter; der Proxy fährt herunter. Im Ordner liegen jetztvelocity.tomlundforwarding.secret.Damit der Proxy dauerhaft läuft und nach einem Neustart des VPS selbst startet, legen Sie für ihn einen systemd-Dienst nach Eine Anwendung rund um die Uhr auf einem VPS betreiben an. Setzen Sie in der Unit-Datei
User=velocity,WorkingDirectory=,/opt/ velocity Environment=und tragen Sie inMALLOC_ ARENA_ MAX=2 ExecStartden Befehl aus Schritt 5 ohnerunuser -u velocity -- env MALLOC_ARENA_MAX=2und mit dem vollständigen Pfad zu Java ein, sodass er mit/usr/bin/java -Xms1G …beginnt.Erlauben Sie den Port des Proxys in der Firewall des VPS: TCP
25565(und den UDP-Port von Geyser, falls Sie es verwenden). Siehe Firewall im Kundenbereich und UFW.
velocity.toml#
Öffnen Sie /opt/ (zum Beispiel mit nano /opt/). Hier ein Beispiel mit Einstellungen für ein Netzwerk aus drei Servern (den Rest der Datei lassen Sie unverändert):
bind = "0.0.0.0:25565"
motd = "<gold><bold>StormCraft</bold></gold> <gray>| lobby, survival, minihry"
show-max-players = 100
online-mode = true
force-key-authentication = true
player-info-forwarding-mode = "modern"
forwarding-secret-file = "forwarding.secret"
[servers]
lobby = "203.0.113.10:30066"
survival = "203.0.113.11:30067"
minihry = "203.0.113.12:30068"
try = [
"lobby"
]
[forced-hosts]
"survival.example.cz" = [
"survival"
]| Einstellung | Was sie tut | Empfohlener Wert | Wann ändern |
|---|---|---|---|
config-version | Die Formatversion der Datei. | Nicht ändern | Nie – Velocity verwaltet sie selbst. |
bind | IP-Adresse und Port, auf denen der Proxy lauscht. | "0.0.0.0:25565" | Ein anderer Port, wenn Sie 25565 nicht verwenden möchten oder können. |
motd | Die Beschreibung in der Serverliste. Format MiniMessage (<gold>, <bold>, <#09add3>), keine §-Codes. | Ihre Beschreibung | Jederzeit. |
show-max-players | Wie viele Slots die Serverliste zeigt. Velocity begrenzt die Spielerzahl nicht; es ist nur ein Anzeigewert. | Z. B. 100 | Je nach Größe des Netzwerks. |
online-mode | Der Proxy prüft die Konten der Spieler bei Microsoft. | true | Auf einem öffentlichen Server nie. |
force-key-authentication | Verlangt von Spielern einen Chat-Signaturschlüssel. | true | false, wenn Geyser auf dem Proxy läuft (Bedrock-Spieler könnten sonst nicht schreiben). |
prevent-client-proxy-connections | Kickt einen Spieler, dessen Internetanbieter nicht zu dem passt, was der Authentifizierungsserver sieht. Ein schwacher Schutz gegen VPNs. | false | Lassen. |
player-info-forwarding-mode | Wie der Proxy Spielerdaten übergibt: none (nichts, Spieler bekommen Offline-UUIDs), legacy (BungeeCord-Format, unsicher), bungeeguard (legacy mit Schlüssel), modern (signiertes Velocity-Format, Version 1.13+). | "modern" | legacy/bungeeguard nur für Server mit 1.12 und älter. |
forwarding-secret-file | Die Datei mit dem geheimen Forwarding-Schlüssel. | "forwarding.secret" | Nicht ändern. |
announce-forge | Der Proxy meldet sich in der Serverliste als Forge-Server. | false | true für ein Netzwerk von Servern mit Mods. |
kick-existing-players | Meldet sich dasselbe Konto ein zweites Mal an, wird die erste Sitzung gekickt (Verhalten von Vanilla). | false | true, wenn Ihre Spieler das erwarten. |
[servers] | Die Liste der Backends als name = "IP:port". Den Namen sehen Spieler in /server. | Die Adressen Ihrer Server | Wenn Sie einen Server hinzufügen oder umziehen. |
try | Die Reihenfolge der Server, zu denen der Proxy Spieler nach dem Beitritt oder nach einem Kick von einem Server zu schicken versucht. | ["lobby"] | Ergänzen Sie einen Ausweichserver, auf dem Spieler landen, wenn die Lobby nicht läuft. |
[forced-hosts] | Schickt Spieler je nach eingegebener Adresse direkt zu einem bestimmten Server (wer survival.example.cz eingibt, landet direkt auf dem Server survival). | Nach Bedarf | Wenn Sie für jeden Server eine eigene Subdomain möchten. Die Domain muss auf den Proxy zeigen. |
Drei Einträge in den Abschnitten [advanced] und [query] sind einen Blick wert:
| Abschnitt und Einstellung | Was sie tut | Empfohlener Wert | Wann ändern |
|---|---|---|---|
[advanced] › login-ratelimit | Der Mindestabstand (ms) zwischen Verbindungen von einer IP. | 3000 | Nicht ändern; schützt vor Überflutung. |
[advanced] › failover-on-unexpected-server-disconnect | Stürzt ein Backend ab, schickt der Proxy die Spieler zu einem anderen Server, statt sie zu trennen. | true | Lassen. |
[query] › enabled | Beantwortet Query-Anfragen (GameSpy4). | false | Wenn eine Statistik-Website sie braucht. |
Velocity 3 und 4
In Version 4 gibt es statt der Zeile ping-passthrough = "DISABLED" einen eigenen Abschnitt [ping-passthrough] mit den Schaltern version, players, description, favicon und modinfo. Sie entscheiden, was der Proxy in der Serverliste vom Backend übernimmt. Standardmäßig ist alles aus, und es gilt das motd aus velocity.toml.
Der geheime Forwarding-Schlüssel#
Beim ersten Start legt Velocity eine Datei forwarding.secret mit einem zufälligen Schlüssel aus 12 Zeichen an. Wir empfehlen, ihn durch einen längeren zu ersetzen:
- Erzeugen Sie im Passwortgenerator ein Zufallspasswort mit 32 oder mehr Zeichen (Buchstaben und Ziffern).
- Schreiben Sie es als einzige Zeile in
/opt/(zum Beispiel mitvelocity/ forwarding. secret nano). - Denselben Schlüssel tragen Sie dann auf allen Backends ein.
Der Schlüssel ist wie ein Admin-Passwort
Wer forwarding.secret und die Adresse eines Backends kennt, kann sich als beliebiger Spieler damit verbinden, auch als Sie. Senden Sie ihn niemandem, legen Sie ihn nicht in öffentliche Repositorys, und tauschen Sie ihn bei Verdacht auf ein Leck auf dem Proxy und allen Backends aus.
Einrichtung der Backends (Paper und Purpur)#
Für jeden Server hinter dem Proxy:
Schalten Sie in der Registerkarte Servereigenschaften in der Gruppe Spieler die Kontoprüfung aus (
online-mode=false) und klicken Sie auf Speichern.Der Kundenbereich zeigt eine Warnung, dass jeder beitreten kann. Hinter einem Proxy mit Modern Forwarding ist das richtig – die Prüfung übernimmt der Proxy, und der Server nimmt nur Spieler mit gültigem Schlüssel an.
Öffnen Sie in der Registerkarte Dateien die Datei
spigot.ymlund prüfen Sie, obsettings.bungeecordauffalsesteht:spigot.ymlYAML settings: bungeecord: falsebungeecord– schaltet Forwarding im BungeeCord-Format (legacy) ein. Für Modern Forwarding muss es aus sein.
Öffnen Sie
config/paper-global.ymlund setzen Sie im Abschnittproxies:config/ paper-global.yml YAMLproxies: velocity: enabled: true online-mode: true secret: "<SECRET>"Ersetzen Sie
<SECRET>durch den Inhalt der Dateiforwarding.secretvom Proxy. Ersetzen Sie alles einschließlich der spitzen Klammern, die Anführungszeichen bleiben.Starten Sie den Server neu.
Was die Einstellungen in paper-global.yml bedeuten:
| Einstellung | Was sie tut | Empfohlener Wert | Wann ändern |
|---|---|---|---|
proxies.velocity.enabled | Der Server nimmt Modern Forwarding von Velocity an und lehnt direkte Verbindungen ab. | true | Nur beim Entfernen des Proxys. |
proxies. | Muss zu online-mode in velocity.toml passen. Entscheidet, welche UUIDs Spieler bekommen. | true | Nie, wenn der Proxy die Spieler prüft. |
proxies.velocity.secret | Derselbe Schlüssel wie in forwarding.secret auf dem Proxy. | Inhalt von forwarding.secret | Wenn Sie den Schlüssel austauschen. |
Auf Paper 1.18.2 und älter stehen diese Einstellungen in paper.yml unter den Namen settings., settings. und settings..
Fabric, Forge und NeoForge#
| Loader | Was installieren | Wo der Schlüssel eingetragen wird |
|---|---|---|
| Fabric | Den Mod FabricProxy-Lite (von Modrinth, verlangt Fabric API) | config/, Eintrag secret = "<SECRET>" |
| Forge, NeoForge | Den Mod ProxyCompatibleForge | Die Konfigurationsdatei des Mods im Ordner config (wie auf der Modrinth-Seite des Mods beschrieben) |
Einstellungen von FabricProxy-Lite:
| Einstellung | Was sie tut | Empfohlener Wert | Wann ändern |
|---|---|---|---|
secret | Der Schlüssel aus forwarding.secret. | Inhalt von forwarding.secret | Wenn Sie den Schlüssel austauschen. |
hackOnlineMode | Erlaubt Verbindungen über den Proxy auch mit eingeschaltetem online-mode auf dem Backend. | true (Standard) | Lassen. |
hackEarlySend | Sendet Spielerdaten früher. LuckPerms verlangt es, ebenso manche anderen Mods. | true, wenn Sie LuckPerms verwenden | Sonst der Standard false. |
hackMessageChain | Behebt, dass Spieler nach einem Serverwechsel mit einer Meldung über eine ungültige Chat-Signatur gekickt werden. | false | true, wenn Spieler nach /server wegen der Chat-Signatur gekickt werden. |
Absicherung der Backends#
Ein Backend mit online-mode=false ohne funktionierendes Forwarding würde jeden unter jedem Namen hereinlassen. Je nachdem, wo Ihre Server laufen:
- Backends bei StormHost (eigene Dienste): Adresse und Port setzen wir automatisch (
server-iplässt sich nicht ändern), die Server sind also aus dem Internet erreichbar. Geschützt werden sie durch das Modern Forwarding: Mitproxies.lehnt der Server jeden ab, der nicht mit gültigem Schlüssel über den Proxy kommt. Verwenden Sie daher nievelocity. enabled: true legacyodernone. - Backends auf demselben VPS wie der Proxy: Setzen Sie in der
server.propertiesjedes Backendsserver-ip=127.0.0.1und verwenden Sie invelocity.tomldie Adressen127.0.0.1:<PORT>. Von außen sind die Server dann überhaupt nicht erreichbar. Erlauben Sie in der Firewall des VPS nur den Port des Proxys. - Backends auf einem anderen VPS: Erlauben Sie in der Firewall des Backends den Port des Servers nur von der IP-Adresse des Proxys (Firewall im Kundenbereich).
Serverwechsel und Plugins auf dem Proxy#
| Befehl | Was er tut | Berechtigung |
|---|---|---|
/server | Zeigt, auf welchem Server Sie sind, und bietet die anderen an. | velocity.command.server (standardmäßig hat sie jeder) |
/server survival | Wechselt auf den Server survival. | Dieselbe |
/glist | Die Spielerzahl auf dem Proxy; mit all aufgeschlüsselt nach Servern. | velocity.command.glist (standardmäßig niemand) |
/send <NICK> <SERVER> | Verschiebt einen Spieler auf einen anderen Server. | velocity.command.send |
velocity reload | Lädt velocity.toml neu (in der Konsole des Proxys). | velocity.command.reload |
shutdown | Fährt den Proxy herunter (nur Konsole). | – |
Plugins auf dem Proxy (im Ordner /opt/velocity/plugins, Versionen für Velocity):
- LuckPerms – Berechtigungen für Befehle des Proxys. Für Berechtigungen auf den Servern muss LuckPerms auch auf jedem Backend laufen, und alle Instanzen müssen dieselbe MySQL-/MariaDB-Datenbank verwenden (MySQL für Plugins). Setzen Sie auf jedem Backend in der Konfiguration von LuckPerms einen anderen
server(zum Beispiellobby,survival), damit Sie Berechtigungen je Server vergeben können, undmessaging-service: sql, damit Änderungen sofort auf allen Servern wirken. Details stehen in der Anleitung LuckPerms. - Geyser und Floodgate – Bedrock-Spieler; installieren Sie sie nur auf dem Proxy (Anleitung).
- spark – Profiling des Proxys, Befehl
sparkv.
Überprüfung#
- Starten Sie den Proxy und die Backends. Die Konsole des Proxys zeigt
Listening on …:25565undDone (…)!. - Verbinden Sie sich im Spiel mit der Adresse des Proxys. Sie landen auf dem Server
lobby. - Geben Sie
/server survivalein – Sie wechseln, ohne getrennt zu werden. - Prüfen Sie in der Konsole des Backends die Zeile mit Ihrer Verbindung: Sie muss Ihre echte IP-Adresse enthalten, nicht die des Proxys. Dann funktioniert das Forwarding. Im standardmäßigen Streamer-Modus blendet die Konsole im Kundenbereich IP-Adressen aus – klicken Sie für diese Prüfung oben auf Details anzeigen.
- Versuchen Sie, sich direkt mit der Adresse des Backends zu verbinden. Sie müssen
This server requires you to connect with Velocity.erhalten.
Fehlerbehebung#
Your server did not send a forwarding request to the proxy. Make sure the server is configured for Velocity forwarding.#
Auf dem Backend ist Modern Forwarding nicht eingeschaltet. Prüfen Sie proxies. in config/paper-global.yml (auf Fabric FabricProxy-Lite) und ob Sie den Server nach der Änderung neu gestartet haben.
Unable to verify player details#
Der Schlüssel auf dem Backend passt nicht zu forwarding.secret auf dem Proxy. Kopieren Sie ihn erneut (ohne zusätzliche Leerzeichen oder Leerzeilen) und starten Sie das Backend neu.
This server requires you to connect with Velocity.#
Sie verbinden sich direkt mit dem Backend – das ist richtig, der Server ist geschützt. Sehen Sie die Meldung auch bei einer Verbindung über den Proxy, ist player-info-forwarding-mode auf dem Proxy auf etwas anderes als modern eingestellt.
Unable to connect you to lobby. Please try again later.#
Der Proxy hat das Backend nicht erreicht: Der Server läuft nicht, Adresse oder Port in [servers] passen nicht zur Adresse in der Registerkarte Netzwerk dieses Servers, oder eine Firewall blockiert die Verbindung.
There are no available servers to connect you to. Try again later or contact an admin.#
Keiner der Server in der Liste try ist verfügbar. Starten Sie die Lobby oder ergänzen Sie in try einen Ausweichserver.
Spieler haben nach dem Wechsel zum Proxy ein leeres Inventar und andere Berechtigungen#
Die Spieler haben andere UUIDs bekommen. Die Ursache ist player-info-forwarding-mode = "none" (Offline-UUIDs) oder ein Unterschied zwischen online-mode auf dem Proxy und proxies. auf dem Backend. Stellen Sie Modern Forwarding ein und beide Werte auf true. Die Daten unter den alten UUIDs bleiben in den Dateien der Welt und der Plugins; erstellen Sie vor dem Umzug eines großen Netzwerks auf einen Proxy ein Backup.
Der Proxy lässt Bedrock-Spieler nicht herein, oder sie können nicht schreiben#
Siehe Crossplay mit Bedrock: Geyser muss auf dem Proxy laufen, und force-key-authentication muss in velocity.toml ausgeschaltet sein.
Zusammenfassung
- Spieler verbinden sich nur mit dem Proxy; der Proxy prüft die Konten (
online-mode = true), die Backends habenonline-mode=false. - Verwenden Sie immer
player-info-forwarding-mode = "modern"und auf den Backendsproxies.mit demselben Schlüssel ausvelocity. enabled: true forwarding.secret. forwarding.secretist geheim; ersetzen Sie ihn durch einen langen Zufallsschlüssel.- Velocity 4 verlangt Java 25, und Plugins auf dem Proxy müssen für Velocity gemacht sein.
- Prüfen Sie, ob eine direkte Verbindung zu einem Backend mit
This server requires you to connect with Velocity.endet.
Weiterführende Links#
- Velocity: erste Schritte (öffnet sich in einem neuen Fenster)
- Velocity: Weitergabe von Spielerinformationen (öffnet sich in einem neuen Fenster)
- Velocity: Konfiguration (öffnet sich in einem neuen Fenster)
- Velocity: Server absichern (öffnet sich in einem neuen Fenster)
- Paper: globale Konfiguration (öffnet sich in einem neuen Fenster)
- LuckPerms: Installation im Netzwerk (öffnet sich in einem neuen Fenster)