Velocity proxy pro Minecraft – propojení více serverů pod jednu IP
Jak nastavit Velocity proxy s modern forwardingem a Paper backendy, proč backendy nesmí být veřejně dostupné a čím se Velocity liší od BungeeCordu.
Proxy server umožní hráčům připojit se na jednu adresu (mc.example.cz) a přepínat mezi několika servery – lobby, survival, minihry – bez odpojení. Dvě nejznámější proxy jsou BungeeCord (a jeho fork Waterfall, jehož vývoj byl ukončen) a Velocity, kterou dnes vyvíjí a doporučuje tým PaperMC.
Velocity vs. BungeeCord
| Velocity | BungeeCord | |
|---|---|---|
| Vývoj | PaperMC | SpigotMC |
| Předávání informací o hráči | modern forwarding (podepsané tajným klíčem) | legacy (IP forwarding bez ověření) |
| Pluginy | vlastní Velocity API | BungeeCord API |
| Doporučení pro nové sítě | ano | spíš kvůli existujícím pluginům |
Hlavní bezpečnostní rozdíl: BungeeCord předává UUID a IP hráče bez ověření, takže pokud je backend dostupný z internetu, útočník se na něj může připojit pod libovolným jménem. Velocity v režimu modern podepisuje data tajným klíčem a backend je bez klíče odmítne. Modern forwarding funguje pro Minecraft 1.13 a novější.
Architektura
hráč ──► Velocity :25565 (veřejný port)
├─► lobby 127.0.0.1:30066
└─► survival 127.0.0.1:30067
Backendy běží v offline módu – ověření účtu u Mojangu provádí proxy. Proto je kritické, aby se na backendy nedalo připojit napřímo.
Instalace Velocity
Stáhněte Velocity z papermc.io/downloads/velocity a spusťte:
java -Xms512M -Xmx512M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -jar velocity.jar
Proxy potřebuje málo paměti, pro desítky hráčů obvykle stačí 512 MB–1 GB. První spuštění vytvoří velocity.toml a forwarding.secret.
velocity.toml
Klíčové části:
bind = "0.0.0.0:25565"
motd = "<#09add3>Moje síť"
show-max-players = 100
online-mode = true
player-info-forwarding-mode = "modern"
forwarding-secret-file = "forwarding.secret"
[servers]
lobby = "127.0.0.1:30066"
survival = "127.0.0.1:30067"
try = ["lobby"]
[forced-hosts]
"survival.example.cz" = ["survival"]
- try – na které servery se hráč připojí po vstupu (a kam spadne, když backend spadne).
- forced-hosts – připojení přes konkrétní doménu pošle hráče rovnou na daný server.
- forwarding.secret – náhodný řetězec. Nikde ho nezveřejňujte.
Nastavení Paper backendu
Na každém backendu:
server.properties
online-mode=false
server-port=30066
spigot.yml – BungeeCord režim musí být vypnutý:
settings:
bungeecord: false
config/paper-global.yml (Paper 1.19+):
proxies:
velocity:
enabled: true
online-mode: true
secret: 'obsah-souboru-forwarding.secret'
Po restartu backendu se připojte přes proxy a zkontrolujte, že má hráč správné UUID a skin. Špatně nastavený forwarding se projeví hláškou typu „Unable to verify player details“ nebo hráči bez skinů.
Varianta s BungeeCord (legacy)
Pokud musíte použít BungeeCord nebo starší verzi hry:
config.ymlBungeeCordu:ip_forward: true,online_mode: true,spigot.ymlbackendu:settings.bungeecord: true,server.propertiesbackendu:online-mode=false.
Zde je zabezpečení backendů ještě důležitější, protože forwarding nemá žádné ověření.
Zabezpečení backendů
Backend musí přijímat spojení jen od proxy:
- Pokud proxy a backendy běží na stejném stroji, nechte backendy naslouchat jen na
127.0.0.1(server-ip=127.0.0.1vserver.properties). - Na různých strojích použijte privátní síť nebo firewall, který povolí port backendu jen z IP proxy.
V Pterodactylu dejte pozor: porty kontejnerů publikuje Docker a ten obchází ufw. Omezení musí být v řetězci DOCKER-USER – podrobnosti v článku Alokace a porty v Pterodactylu. Alternativou je přiřadit backendům alokaci na privátní IP nodu, pokud ji provider poskytuje.
Ověřte zvenku, že backend není dostupný:
nc -vz -w 3 VEREJNA_IP 30066
Spojení musí selhat.
Užitečné příkazy Velocity
/velocity info – verze proxy
/velocity plugins – nainstalované pluginy
/velocity reload – znovunačtení konfigurace
/server survival – přepnutí hráče na server
/glist – hráči na jednotlivých serverech
Pluginy na proxy
Pluginy pro Velocity patří do složky plugins/ proxy a musí být napsané pro Velocity API – Paper ani BungeeCord pluginy nefungují. Typicky na proxy patří: chat napříč servery, ban systém, MOTD, tablist. Pro synchronizaci dat mezi servery se používá plugin messaging nebo sdílená databáze (MySQL/Redis).
Shrnutí
- Velocity s
player-info-forwarding-mode = "modern". - Backendy
online-mode=falsea vpaper-global.ymlVelocity s tajným klíčem. - Backendy nedostupné z internetu.
- Ověřit připojení, UUID a nedostupnost backendů zvenku.