Proxy
Proxy je most mezi klasickými servery, který backend (= “klasické”) servery propojí. To znamená, že se mezi nimi může hráč přepojovat bez odpojování ze serveru.
Platformy
Nejspíš nejznámější, ale už ne nejpoužívanější proxy platformou je BungeeCord. V dnešní době byste měli používat moderní variantu Velocity. Pro používání Bungee už prakticky není důvod. Více se o proxy platformách dočtete zde.
Využití
Proxy se vyplatí používat v podstatě vždy, když chcete na serveru více herních módů. Ku příkladu v případě, kdy byste chtěli server, na kterém bude herní mód “Survival” a “SkyBlock”, nejideálnější by bylo vytvořit celkem 4 servery:
- 1 proxy server
- 1 lobby server
- 1 survival server
- 1 skyblock server
Nabízí se otázka, proč vše nemít na jednom serveru. Odpověď je jednoduchá. Je to neskutečně neflexibilní a omezující.
Ku přikladu - co kdybyste chtěli, aby příkaz spawn teleportoval hráče na spawnu dle herního módu? (tj. na survivalu by příkaz teleportoval na survival spawn a na skyblocku na skyblock spawn).
V případě, kdy by Survival a SkyBlock byly dva separátní servery, tak by to žádný problém nebyl. Standardně nemá plugin poskytující spawn příkaz podporu pro více světů, protože na serveru bývá spawn pouze jeden. V případě, kdy by na jednom serveru bylo více herních módů, by v takovém případě bylo nutné vymýšlet řešení, jak takového chování docílit. To stejné platí i pro rozdělení věcí jako chat a podobně.
Postupně byste se setkávali s řadou dalších komplikací a omezení. Problém nastává zejména u pluginů, jelikož mnoho z nich nemá podporu pro jednotlivé světy, a proto by takové řešení ani nebylo možné najít.
U některých věcí, jako např. příkazů by se to vyřešit dalo (ačkoli výmýšlet taková řešení by byla ztráta času a ne každý je řešení schopen vymyslet, obzvlášť pokud nemá větší zkušenosti), avšak u funkcí pluginů by řešení zkrátka nebylo. Takových omezení je opravdu velký počet, a postupně byste se s nimi setkávali.
Proxy se tedy vyplatí použít v podstatě vždy, když chcete na serveru více herních módů. Ku příkladu pokud byste chtěli server, kde bude herní mód survival a skyblock. Možností využití je více, toto je však nejčastější z nich.
Pro správné fungování proxy jsou tak zapotřebí minimálně 3 servery - jeden proxy server a dva backend servery. Respektive ne tak úplně. Pro správné fungování stačí jeden proxy a jeden backend server, avšak to ve většině případě nedává smysl, jelikož smyslem proxy je zejména propojení více serverů (nicméně využití existují například v případě, kdy chcete použít plugin, který podporuje pouze proxy, nebo když chcete backend server za proxy “schovat”). Nejčastěji se však setkáte celkem alespoň s čtyřmi servery kvůli lobby serveru (1x proxy, 1x lobby, 1x server1, 1x server2).
Jak se mezi servery přepojovat?
V základu se na jiný server přepojíte pomocí příkazu server [server] (bez argumentu server se ukáže seznam serverů).
Standardně budete pro hráče chtít nastavit, ať se můžou na servery přepojovat přes lobby, na které se dostanou po připojení (a po provedení příkazu hub, lobby apod. (na což je potřeba plugin), pokud se na něj budou chtít přemístit z nějakého serveru). To lze udělat různými způsoby. Ať už pomocí menu (lze udělat např. pomocí DeluxeMenus), NPC (např. Citizens), nebo armor standů (např. ArmorStandTools). Všechny tyto pluginy mají pro teleportaci mezi proxy serveru specifické funkce, o kterých se dočtete více v dokumentaci daného pluginu.
Nastavení permisí
V případě, kdy chcete mít permise synchronizované napříč servery a mít možnost využívat příkazy vyžadující proxy permise, je potřeba nastavit permission plugin pro proxy. Jak tak udělat u LuckPerms se dočtete zde.
Fungování a principy
Je důležité si uvědomit, že proxy je pouze most mezi klasickými servery a nejedná se o samostatný Minecraft server, na kterém by šlo standardním způsobem hrát.
Hráči se vždy připojuji právě přes tento proxy server. Na backend servery se nelze připojit přímo (v základu. V určitých případech to jít může, ale jedná se o zranitelnost viz zde), vždy se připojujte přes adresu proxy!
Základní astavení proxy/Konfigurace proxy/Proxy setup
Jak na Velocity tak Bungee existuje řada návodů, jak danou platformu správně nastavit.
Po nastavení serverů pro proxy jej nezapomeňte správně zabezpečit!
Velocity
Jak správně nastavit Velocity je skvěle popsáno ve Velocity dokumentaci. Pozor! Přečtěte si všechny části v kapitole “Getting Started”, ne jen první!
Pokud budete mít s nastavením potíže, můžete o pomoc požádat na PaperMC Discordu.
BungeeCord
Mějte na paměti, že BungeeCord je zastaralá platforma, která se nedoporučuje používat! Zvažte použití Velocity.
BungeeCord server i backend servery je zapotřebí správně nastavit. BungeeCord config se nachází v souboru config.yml.
Pro projevení změn v konfiguraci je vždy potřeba daný server restartovat (včetně backend serverů).
Co konkrétní nastavení znamenají se můžete dočíst v Bungee dokumentaci].
servers
V sekci servers je potřeba přidat všechny servery, které chcete k Bungee síti připojit. V základu sekce servers vypadá nastavení následovně:
servers:
lobby:
motd: '&1Just another BungeeCord - Forced Host'
address: localhost:25565
restricted: false
Pokud byste měli ku příkladu 3 servery (3 backend servery, s Bungee celkem 4), vypadala by správně nastavená sekce servers takto:
servers:
lobby:
motd: '&1Just another BungeeCord - Forced Host'
address: node.myhost.com:47290
restricted: false
survival:
motd: '&1Just another BungeeCord - Forced Host'
address: node.myhost.com:57270
restricted: false
skyblock:
motd: '&1Just another BungeeCord - Forced Host'
address: node.myhost.com:67210
restricted: false
Do tohoto seznamu těchto serveru nepatří samotný BungeeCord server! Patří sem pouze backend servery, které chcete pomocí proxy propojit (viz zde)!
Server lobby s adresou localhost:25565 ve výchozí konfiguraci je pouze příklad. Pokud backend server s takovou adresou nemáte, logicky jej nemůžete použít, tím pádem jej z konfigurace vymažte, nebo změňte jeho adresu!
v sekci listeners nastavte následující:
hostaquery_port
jako hodnotu nastavte dostupný port serveru, přes který se budou hráči připojovat. Pokud můžete, použijte port 25565.
force_default_server
nastavte hodnotu na true tedy force_default_server: true. To způsobí, že se hráč vždy připojí na první server z priorities místo serveru, kde byl hráč naposledy.
priorities
Do priorities dejte jméno serveru (ze sekce servers), na který se hráč po připojení na proxy server automaticky napojí. Hodnota priorities je array (list/seznam), nikoli string (text), tím pádem zápis musí být následovný!
priorities: [lobby]
nebo
priorities:
- lobby
Následující zápis je chybný, viz zde.
priorities: lobby
forced_hosts
nastavte hodnotu na {}, tedy forced_hosts: {}
groups
nastavte hodnotu na {}, tedy groups: {}
ip_forward
nastavte hodnotu na true, tedy ip_forward: {}
Na všech backend serverech co mají být připojeny k proxy je nutno udělat následující:
-
v
server.propertiesnastavteonline-modenafalse -
v
spigot.ymlnastavtebungeecordnatrue
Pro aplikování změn nezapoměňte servery restartovat!
Reset BungeeCord configu
Pokud se Vám BungeeCord config automaticky resetuje, více se o tomto problému dočtete zde.
Zabezpečení
Je velmi důležité proxy síť zabezpečit! Více se dočtete zde.