Velocity je proxy, přes kterou se hráči připojují na jednu adresu a pak mezi servery přecházejí příkazem /server – například z lobby do survivalu nebo na minihry. Ukážeme, jak Velocity nainstalovat, nastavit, propojit se servery přes bezpečný modern forwarding a zabezpečit servery za proxy tak, aby se na ně nikdo nedostal napřímo.
Co budete potřebovat
- Aspoň dva Minecraft servery: Paper nebo Purpur (verze 1.13 a novější), případně Fabric, Forge nebo NeoForge s módem pro forwarding
- Místo pro proxy: VPS s Ubuntu 24.04 nebo Debianem 13 (připojení přes SSH), samostatný produkt Minecraft Proxy u nás připravujeme
- Přístup do záložek Soubory a Nastavení serveru u každého serveru
- Asi 40 minut
Kdy proxy potřebujete#
| Chcete | Proxy potřebujete? |
|---|---|
| Jeden server pro kamarády nebo komunitu | Ne |
| Lobby + jeden nebo víc herních serverů pod jednou adresou | Ano |
| Různé módy hry (survival, kreativ, minihry) s přecházením bez odpojení | Ano |
| Společný chat, oprávnění nebo bany napříč servery | Ano (s pluginy na proxy) |
| Hráče z Bedrocku na celé síti | Ano, Geyser pak běží jen na proxy |
Proxy sama hru nepočítá, jen přeposílá spojení. Na výkon je nenáročná: pro desítky hráčů stačí 1–2 GB paměti.
Jak síť funguje#
Hráč ──► mc.example.cz:25565 (Velocity, ověří účet hráče)
│
├──► lobby (Paper, online-mode=false, přijme jen proxy)
├──► survival (Paper, online-mode=false, přijme jen proxy)
└──► minihry (Paper, online-mode=false, přijme jen proxy)- Hráč se připojí na adresu proxy. Proxy u Microsoftu ověří, že má originální účet (
online-mode = true). - Proxy ho pošle na první server ze seznamu
try(lobby). - S připojením proxy předá serveru jméno, UUID, skin a skutečnou IP adresu hráče (player info forwarding). Data podepíše tajným klíčem, který zná jen proxy a vaše servery.
- Servery za proxy (backendy) samy nic neověřují (
online-mode=false) a věří jen proxy s platným klíčem. Kdo by se připojil napřímo, dostane hláškuThis server requires you to connect with Velocity.
Proxy, servery a doména#
- Proxy: Velocity 4.x vyžaduje Javu 25. Provozujte ji na VPS (VPS Performance, VPS Budget). Na proxy patří jen pluginy pro Velocity – pluginy pro Paper na ní nefungují.
- Backendy: běžné Minecraft servery. Mohou běžet u nás jako samostatné služby (každá má vlastní adresu a port), nebo na stejné VPS jako proxy.
- Doména (volitelné): hráči zadají
mc.example.czmísto IP (Adresa serveru a doména).
Produkt Minecraft Proxy
Samostatnou proxy jako službu připravujeme. Bude mít v záložce Spuštění preset flagů Proxy určený pro Velocity. Do té doby použijte VPS – postup níže.
Instalace Velocity na VPS#
Platí pro Ubuntu 24.04 i Debian 13. Příkazy spouštějte jako root.
Nainstalujte Javu 25 a program
curl:bash apt update apt install openjdk-25-jre-headless curlapt update– stáhne aktuální seznam balíčků.apt install openjdk-25-jre-headless– nainstaluje běhové prostředí Javy 25 bez grafických knihoven (na serveru nejsou potřeba).curl– program pro stahování souborů z internetu (pokud už ho máte, nic se nestane).
Ověřte verzi:
bash java -versionPrvní řádek výstupu musí obsahovat
25.Vytvořte uživatele a složku pro proxy:
bash useradd --system --create-home --home-dir /opt/velocity --shell /usr/sbin/nologin velocityuseradd --system– vytvoří systémového uživatele bez hesla (proxy nepoběží jako root).--create-home --home-dir /opt/velocity– vytvoří složku/opt/velocity, kde bude proxy.--shell /usr/sbin/nologin– pod tímto uživatelem se nejde přihlásit.velocity– jméno uživatele.
Na stránce papermc.io/downloads/velocity (otevře se v novém okně) zkopírujte odkaz na nejnovější stabilní verzi a stáhněte ji:
bash cd /opt/velocity curl -o velocity.jar "<ODKAZ_KE_STAZENI>" chown velocity:velocity velocity.jarcd /opt/velocity– přejde do složky proxy.curl -o velocity.jar– stáhne soubor a uloží ho jakovelocity.jar.<ODKAZ_KE_STAZENI>– odkaz zkopírovaný ze stránky. Nahraďte ho celý včetně špičatých závorek, uvozovky ponechte.chown velocity:velocity– soubor bude patřit uživatelivelocity.
Spusťte proxy poprvé, aby vytvořila konfiguraci:
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 --– spustí příkaz za--jako uživatelvelocity.env MALLOC_ARENA_MAX=2– omezí paměťové arény alokátoru, proxy pak nezabírá zbytečně paměť navíc.-Xms1G -Xmx1G– proxy dostane 1 GB haldy (najednou, nemusí ji zvětšovat za běhu). Pro větší síť zvyšte na2G. Proxy potřebuje hodně paměti i mimo haldu na síť, proto jí nedávejte víc než polovinu paměti, kterou pro ni máte.-XX:– strop pro síťové buffery. Bez něj můžou narůst až do velikosti haldy.MaxDirectMemorySize= 512M -XX:+UseG1GC … -XX:+AlwaysPreTouch– flagy doporučené dokumentací Velocity (garbage collector G1 vyladěný pro proxy).-jar velocity.jar– spustí proxy.
Příkaz pro jinou velikost paměti připraví Generátor startovacího skriptu.
Po startu uvidíte řádek
Done (…)!. Zadejteenda Enter, proxy se vypne. Ve složce vznikly souboryvelocity.tomlaforwarding.secret.Aby proxy běžela trvale a po restartu VPS se spustila sama, vytvořte pro ni službu systemd podle návodu Aplikace 24/7 na VPS. Do unit souboru zadejte
User=velocity,WorkingDirectory=,/opt/ velocity Environment=a doMALLOC_ ARENA_ MAX=2 ExecStartpříkaz z kroku 5 bezrunuser -u velocity -- env MALLOC_ARENA_MAX=2a s plnou cestou k Javě, tedy začínající/usr/bin/java -Xms1G ….Povolte port proxy ve firewallu VPS: TCP
25565(a UDP port Geyseru, pokud ho budete používat). Viz Firewall v zákaznické zóně a UFW.
velocity.toml#
Otevřete soubor /opt/ (například nano /opt/). Ukázka s nastavením pro síť tří serverů (zbytek souboru ponechte):
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"
]| Nastavení | Co dělá | Doporučená hodnota | Kdy změnit |
|---|---|---|---|
config-version | Verze formátu souboru. | Neměnit | Nikdy – Velocity ji spravuje sama. |
bind | IP adresa a port, na kterém proxy poslouchá. | "0.0.0.0:25565" | Jiný port, pokud 25565 nechcete nebo nemůžete použít. |
motd | Popis v seznamu serverů. Formát MiniMessage (<gold>, <bold>, <#09add3>), ne kódy §. | Váš popis | Kdykoli. |
show-max-players | Kolik slotů ukáže seznam serverů. Velocity počet hráčů neomezuje, je to jen údaj. | Např. 100 | Podle velikosti sítě. |
online-mode | Proxy ověřuje účty hráčů u Microsoftu. | true | Nikdy na veřejném serveru. |
force-key-authentication | Vyžaduje od hráčů klíč pro podepisování chatu. | true | false, když na proxy běží Geyser (hráči z Bedrocku jinak nemohou psát do chatu). |
prevent-client-proxy-connections | Odpojí hráče, jehož poskytovatel internetu nesouhlasí s ověřovacím serverem. Slabá ochrana proti VPN. | false | Ponechte. |
player-info-forwarding-mode | Jak proxy předává údaje hráčů: none (nic, hráči mají offline UUID), legacy (formát BungeeCord, nezabezpečený), bungeeguard (legacy s klíčem), modern (podepsaný formát Velocity, verze 1.13+). | "modern" | legacy/bungeeguard jen pro servery 1.12 a starší. |
forwarding-secret-file | Soubor s tajným klíčem pro forwarding. | "forwarding.secret" | Neměňte. |
announce-forge | Proxy se v seznamu serverů hlásí jako Forge server. | false | true u sítě modovaných serverů. |
kick-existing-players | Při druhém přihlášení stejného účtu odpojí to první (chování Vanilly). | false | true, pokud to hráči očekávají. |
[servers] | Seznam backendů ve tvaru název = "IP:port". Název uvidí hráči v /server. | Adresy vašich serverů | Při přidání nebo přesunu serveru. |
try | Pořadí serverů, na které proxy zkusí poslat hráče po připojení nebo po vyhození ze serveru. | ["lobby"] | Přidejte záložní server, kam hráči spadnou, když lobby neběží. |
[forced-hosts] | Podle adresy, kterou hráč zadal, ho pošle rovnou na určený server (kdo zadá survival.example.cz, skončí rovnou na serveru survival). | Podle potřeby | Když chcete pro každý server vlastní subdoménu. Doména musí vést na proxy. |
Ze sekcí [advanced] a [query] stojí za pozornost tři položky:
| Sekce a nastavení | Co dělá | Doporučená hodnota | Kdy změnit |
|---|---|---|---|
[advanced] › login-ratelimit | Minimální odstup (ms) mezi připojeními z jedné IP. | 3000 | Neměňte, chrání před zahlcením. |
[advanced] › failover-on-unexpected-server-disconnect | Při pádu backendu pošle hráče na jiný server místo odpojení. | true | Ponechte. |
[query] › enabled | Odpovídá na dotazy Query (GameSpy4). | false | Když ho potřebuje web se statistikami. |
Velocity 3 a 4
Ve verzi 4 je místo řádku ping-passthrough = "DISABLED" samostatná sekce [ping-passthrough] s přepínači version, players, description, favicon a modinfo. Určují, co proxy v seznamu serverů převezme z backendu. Ve výchozím stavu je vše vypnuté a platí motd z velocity.toml.
Tajný klíč forwardingu#
Velocity při prvním startu vytvoří soubor forwarding.secret s náhodným klíčem o 12 znacích. Doporučujeme ho nahradit delším:
- Vygenerujte náhodné heslo o 32 a více znacích (písmena a číslice) v generátoru hesel.
- Vložte ho jako jediný řádek do
/opt/(například přesvelocity/ forwarding. secret nano). - Stejný klíč pak zadáte na všech backendech.
Klíč je jako heslo administrátora
Kdo zná forwarding.secret a adresu backendu, může se na něj připojit pod jménem kteréhokoli hráče, včetně vás. Neposílejte ho nikomu, nedávejte ho do veřejných repozitářů a při podezření na únik ho vyměňte na proxy i na všech backendech.
Nastavení backendů (Paper a Purpur)#
U každého serveru za proxy:
V záložce Nastavení serveru vypněte ve skupině Hráči Ověřování účtů (
online-mode=false) a klikněte na Uložit.Zákaznická zóna zobrazí varování, že se může připojit kdokoli. Za proxy s modern forwardingem je to správně – ověření dělá proxy a server přijme jen hráče s platným klíčem.
V záložce Soubory otevřete
spigot.ymla zkontrolujte, žesettings.bungeecordjefalse:spigot.ymlYAML settings: bungeecord: falsebungeecord– zapíná forwarding ve formátu BungeeCord (legacy). Pro modern forwarding musí být vypnutý.
Otevřete
config/paper-global.ymla v sekciproxiesnastavte:config/ paper-global.yml YAMLproxies: velocity: enabled: true online-mode: true secret: "<SECRET>"Za
<SECRET>vložte obsah souboruforwarding.secretz proxy. Nahraďte ho celý včetně špičatých závorek, uvozovky ponechte.Restartujte server.
Co nastavení v paper-global.yml znamenají:
| Nastavení | Co dělá | Doporučená hodnota | Kdy změnit |
|---|---|---|---|
proxies.velocity.enabled | Server přijímá modern forwarding z Velocity a odmítá přímá připojení. | true | Jen při rušení proxy. |
proxies. | Musí odpovídat online-mode ve velocity.toml. Určuje, jaká UUID hráči dostanou. | true | Nikdy, pokud proxy ověřuje hráče. |
proxies.velocity.secret | Stejný klíč jako ve forwarding.secret na proxy. | Obsah forwarding.secret | Při výměně klíče. |
Na Paperu 1.18.2 a starším jsou tato nastavení v souboru paper.yml pod názvy settings., settings. a settings..
Fabric, Forge a NeoForge#
| Loader | Co nainstalovat | Kde zadat klíč |
|---|---|---|
| Fabric | Mód FabricProxy-Lite (z Modrinthu, vyžaduje Fabric API) | config/, položka secret = "<SECRET>" |
| Forge, NeoForge | Mód ProxyCompatibleForge | Konfigurační soubor módu ve složce config (podle popisu módu na Modrinthu) |
Nastavení FabricProxy-Lite:
| Nastavení | Co dělá | Doporučená hodnota | Kdy změnit |
|---|---|---|---|
secret | Klíč z forwarding.secret. | Obsah forwarding.secret | Při výměně klíče. |
hackOnlineMode | Dovolí připojení přes proxy i se zapnutým online-mode na backendu. | true (výchozí) | Ponechte. |
hackEarlySend | Pošle údaje hráče dřív. Vyžaduje ho LuckPerms a některé další módy. | true, pokud používáte LuckPerms | Jinak výchozí false. |
hackMessageChain | Opraví vyhazování s hláškou o neplatném podpisu chatu po přechodu na jiný server. | false | true, když hráče po /server vyhodí kvůli podpisu chatu. |
Zabezpečení backendů#
Backend s online-mode=false bez funkčního forwardingu by pustil kohokoli pod libovolným jménem. Podle toho, kde servery běží:
- Backendy u nás (samostatné služby): adresu a port nastavujeme automaticky (
server-ipzměnit nejde), servery jsou tedy dostupné z internetu. Ochranu zajišťuje modern forwarding: sproxies.server odmítne každého, kdo nepřijde přes proxy s platným klíčem. Nikdy proto nepoužívejtevelocity. enabled: true legacyaninone. - Backendy na stejné VPS jako proxy: v
server.propertieskaždého backendu nastavteserver-ip=127.0.0.1a vevelocity.tomlzadejte adresy127.0.0.1:<PORT>. Servery pak nejsou zvenku vůbec dostupné. Ve firewallu VPS povolte jen port proxy. - Backendy na jiné VPS: ve firewallu backendu povolte port serveru jen z IP adresy proxy (Firewall v zákaznické zóně).
Přepínání serverů a pluginy na proxy#
| Příkaz | Co dělá | Oprávnění |
|---|---|---|
/server | Ukáže, na kterém serveru jste, a nabídne ostatní. | velocity.command.server (výchozí mají všichni) |
/server survival | Přepne na server survival. | Totéž |
/glist | Počet hráčů na proxy, s all výpis podle serverů. | velocity.command.glist (výchozí nikdo) |
/send <NICK> <SERVER> | Přesune hráče na jiný server. | velocity.command.send |
velocity reload | Načte znovu velocity.toml (v konzoli proxy). | velocity.command.reload |
shutdown | Vypne proxy (jen v konzoli). | – |
Pluginy na proxy (do složky /opt/velocity/plugins, verze pro Velocity):
- LuckPerms – oprávnění pro příkazy proxy. Pro oprávnění na serverech musí být LuckPerms i na každém backendu a všechny instance musí používat stejnou databázi MySQL/MariaDB (MySQL pro pluginy). Na každém backendu nastavte v konfiguraci LuckPerms jiný
server(napříkladlobby,survival), ať jde dávat oprávnění pro jednotlivé servery, amessaging-service: sql, ať se změny projeví na všech serverech hned. Podrobně v návodu LuckPerms. - Geyser a Floodgate – hráči z Bedrocku, instalujte je jen na proxy (návod).
- spark – profilování proxy, příkaz
sparkv.
Ověření#
- Spusťte proxy a backendy. V konzoli proxy uvidíte
Listening on …:25565aDone (…)!. - Připojte se ve hře na adresu proxy. Ocitnete se na serveru
lobby. - Napište
/server survival– přepne vás bez odpojení. - V konzoli backendu zkontrolujte řádek s vaším připojením: musí obsahovat vaši skutečnou IP adresu, ne adresu proxy. Pak forwarding funguje. Konzole v zákaznické zóně ve výchozím režimu streamu IP adresy skrývá – pro tuto kontrolu klikněte nahoře na Zobrazit údaje.
- Zkuste se připojit přímo na adresu backendu. Musíte dostat
This server requires you to connect with Velocity.
Když něco nefunguje#
Your server did not send a forwarding request to the proxy. Make sure the server is configured for Velocity forwarding.#
Backend nemá zapnutý modern forwarding. Zkontrolujte proxies. v config/paper-global.yml (u Fabricu FabricProxy-Lite) a že jste server po úpravě restartovali.
Unable to verify player details#
Klíč na backendu nesouhlasí s forwarding.secret na proxy. Zkopírujte ho znovu (bez mezer a prázdných řádků navíc) a backend restartujte.
This server requires you to connect with Velocity.#
Připojujete se přímo na backend – to je správně, server je chráněný. Pokud hlášku vidíte i při připojení přes proxy, má proxy player-info-forwarding-mode jiný než modern.
Unable to connect you to lobby. Please try again later.#
Proxy se nedostala na backend: server neběží, adresa nebo port ve [servers] nesouhlasí s adresou v záložce Síť daného serveru, nebo spojení blokuje firewall.
There are no available servers to connect you to. Try again later or contact an admin.#
Žádný server ze seznamu try není dostupný. Spusťte lobby nebo přidejte do try záložní server.
Hráči mají po přechodu na proxy prázdný inventář a jiná oprávnění#
Hráči dostali jiná UUID. Příčinou je player-info-forwarding-mode = "none" (offline UUID) nebo nesoulad online-mode na proxy a proxies. na backendu. Nastavte modern forwarding a obě hodnoty na true. Data se staršími UUID zůstávají v souborech světa a pluginů; před přechodem velké sítě na proxy si udělejte zálohu.
Hráče z Bedrocku proxy nepustí nebo nemohou psát#
Viz Crossplay s Bedrockem: Geyser musí být na proxy a ve velocity.toml vypnuté force-key-authentication.
Shrnutí
- Hráči se připojují jen na proxy, proxy ověřuje účty (
online-mode = true) a backendy majíonline-mode=false. - Vždy
player-info-forwarding-mode = "modern"a na backendechproxies.se stejným klíčem zvelocity. enabled: true forwarding.secret. forwarding.secretje tajný, nahraďte ho dlouhým náhodným klíčem.- Velocity 4 vyžaduje Javu 25, pluginy na proxy musí být pro Velocity.
- Ověřte, že přímé připojení na backend skončí hláškou
This server requires you to connect with Velocity.
Další zdroje#
- Velocity: první kroky (otevře se v novém okně)
- Velocity: player information forwarding (otevře se v novém okně)
- Velocity: konfigurace (otevře se v novém okně)
- Velocity: zabezpečení serverů (otevře se v novém okně)
- Paper: globální konfigurace (otevře se v novém okně)
- LuckPerms: instalace na síť (otevře se v novém okně)