Server, ktorý beží nonstop pre partiu hrajúcu dva večery do týždňa, je väčšinou len stroj, ktorý páli peniaze v prázdnej miestnosti. Prirodzené riešenie je spúšťať ho len vtedy, keď chce niekto naozaj hrať. Patrí to medzi najhľadanejšie témy okolo Minecraft hostingu a takmer všetky odpovede, na ktoré narazíš, sú nástroje typu „urob si sám". V tomto návode ich prejdeme poctivo a na záver pridáme spravovanú alternatívu pre každého, kto nič z toho prevádzkovať nechce.
Čo „spustí sa, keď sa niekto pripojí" v skutočnosti vyžaduje
Minecraft klient neposiela žiadny čarovný budiaci paket. Niečo musí na adrese servera nepretržite počúvať, odpovedať na pingy zoznamu serverov, aby server stále vyzeral živý, rozpoznať skutočný pokus o pripojenie, spustiť samotný serverový proces a odovzdať mu spojenie. To „niečo" je maličké, no musí niekde bežať celý deň. A práve za to si platiť nechcel.
V tom je poctivé jadro celej témy: wake-on-join presúva bremeno nepretržitého behu z veľkého serverového procesu na drobný listener. Otázka znie, kto ten listener prevádzkuje.
Možnosť 1: lazymc (vlastné hostovanie, obľúbenec komunity)
lazymc je malá proxy napísaná v Ruste, ktorá sedí na porte tvojho servera. Kým server spí, odpovedá na pingy stavom „sleeping", a keď sa hráč pripojí, naštartuje skutočný server a spojenie presmeruje. Je zadarmo, vyzretý a naozaj dobrý.
Zároveň sa však upisuješ k tomuto: vlastný stroj (doma alebo prenajaté VPS), ktorý treba držať online a aktualizovaný, starostlivosť o port forwarding a firewall, config, ktorý treba udržiavať pri každej aktualizácii servera, a rola človeka, ktorý to opraví, keď chce partia hrať a niečo nesedí. Ak ťa takéto vŕtanie baví, lazymc je dobrá odpoveď.
Možnosť 2: pluginy a skripty
Do rovnakej kategórie patria pluginy zo Spigot rodiny ako ServerAlarmClock, systemd socket aktivácia a skripty ako mcstart. Plugin vypnutý server spustiť nedokáže, pretože JVM, v ktorom žije, je práve tá vec, ktorá nebeží. Takéto riešenia preto kombinujú strážny proces so štartovacím skriptom, čo znamená viac pohyblivých dielov než lazymc a rovnakú požiadavku na stroj bežiaci nonstop. Zmysel dávajú hlavne vtedy, keď na tom istom stroji už beží niečo iné a shell ti je domovom.
Možnosť 3: spravovaný wake-on-join
Tretia cesta je hosting, kde spánok a budenie nie sú projekt, ale funkcia. Na VoxelRune sa volá wake-on-join: prepínač pre každý server zvlášť, vďaka ktorému si vypnutý server nechá hostname aj port, zostane v zozname serverov viditeľný so spiacou správou a automaticky sa spustí, keď sa hráč pripojí. Zabudovaná je aj druhá polovica cyklu. Automatické vypnutie server zastaví po tichu, ktorého dĺžku si zvolíš, od 5 minút po 24 hodín.
Účtovanie ten cyklus kopíruje. Výkon sa meria, len kým server beží, nič sa nezaokrúhľuje na celé hodiny a prvých 10 GB úložiska je zadarmo. Bežný server pre partiu teda počas spánku nestojí doslova nič. Každé zobudenie míňa kredity majiteľa, preto je funkcia dobrovoľná a dá sa zviazať s whitelistom: so zapnutým whitelistom spustia server len hráči zo zoznamu a skenery zoznamu serverov uvidia iba spiacu správu.
Čo zažije hráč, ktorý sa pripája
Toto platí pri každom riešení, vlastnom aj spravovanom. Minecraft klient čaká na prihlásenie len asi 30 sekúnd, potom to vzdá. Vanilla alebo ľahko modovaný server, ktorý nabehne pod pol minúty, dokáže pripojenie podržať a pustiť hráča rovno do sveta. Ťažký modpack, ktorý potrebuje niekoľko minút, to nestihne. Hráč vtedy dostane krátku správu, aby sa o minútu pripojil znova, a na druhý pokus už vojde. Každý nástroj, ktorý sľubuje okamžitý vstup pre 6 GB modpack, sľubuje priveľa. Vyladená verzia tohto zážitku je jasná správa, nie mágia.
Ako si vybrať
lazymc prevádzkuj vtedy, keď aj tak držíš nejaký stroj online a správcovanie ťa baví. Pluginy a skripty použi, keď server zdieľa stroj s inými službami, ktoré spravuješ. Spravovaný wake-on-join si vyber, ak celý zmysel bol prestať byť človekom zodpovedným za stroj bežiaci nonstop. Listener, automatické vypnutie, zálohy aj účtovanie sa vtedy zmenia na jeden prepínač v paneli.
Nech si vyberieš čokoľvek, uzavri celý cyklus. Budenie pri pripojení bez zastavovania pri nečinnosti automatizuje iba tú lacnú polovicu. Peniaze totiž stoja prázdne hodiny.