RE:NODE

BeamMP Keymaster: vytváření a správa auth klíčů

Text: Tým RE:NODE
12 min čtení


BeamMP Keymaster na adrese keymaster.beammp.com je místo, odkud se berou auth klíče serverů. Přihlásíš se přes Discord, otevřeš Keys, klikneš na zelené +, klíči dáš popisek a 36znakový řetězec zkopíruješ do AuthKey v sekci [General] souboru ServerConfig.toml. Jeden klíč pustí vždy jen jeden server, účet jich dostane jen pár a BeamMP server s prázdným AuthKey se vůbec nespustí - ať je privátní, nebo ne. Většina potíží s BeamMP klíči se vrací ke třem věcem: klíč nebyl vůbec vložen, byl vložen s nechtěnou mezerou nebo na špatný řádek, anebo jeden klíč sdílejí dva servery.

Tento návod se věnuje samotnému Keymasteru a všemu kolem klíče. Instalace serveru, zbytek ServerConfig.toml, mapy a módy jsou v návodu na BeamMP server; skriptování je v článku BeamMP Lua pluginy a závody.

Co auth klíč ve skutečnosti dělá#

BeamMP server není osamocený ostrov. Dokud běží, posílá na backend BeamMP přes HTTPS heartbeat - svůj název, mapu, počet hráčů, verzi a seznam hráčů - a klíč putuje s každým heartbeatem jako identita serveru. Backend odpoví stavem a server zaloguje, zda byl klíč přijat. Tak se server dostane do seznamu serverů ve hře a tak backend ví, kterému účtu server patří.

vytvoř klíčvložnačte při startuHTTPS 443, klíčpřijato, nebo odmítnutoKeymasterkeymaster.beammp.comTyzkopíruj klíčServerConfig.tomlAuthKeyBeamMP serverBeamMP backendheartbeat, seznam
Klíč putuje s každým heartbeatem

Z tohoto návrhu plynou tři důsledky, které stojí za to mít v hlavě, než na cokoli sáhneš:

  • Klíč patří účtu, ne stroji ani hostingu. Vzniká pod tvým Discord přihlášením. Hosting ti ho nemůže vygenerovat; každý poskytovatel tě požádá, abys vložil ten svůj, protože jiná legitimní cesta neexistuje.
  • Server potřebuje odchozí HTTPS. Heartbeat odchází na port 443. Server za firewallem, který blokuje odchozí provoz, nastartuje, ale nikdy se neautentizuje a nikdy se neobjeví v seznamu.
  • Klíč je přihlašovací údaj. Kdokoli ho má, může spustit server, o kterém si backend myslí, že je tvůj. Dokumentace BeamMP to říká jasně: zacházej s ním jako s heslem a nikomu ho neukazuj.

Přihlášení do Keymasteru#

Keymaster používá pro přihlášení Discord. BeamMP uvádí jako důvod ochranu před spamem: vázání klíčů na Discord účet ztěžuje vytváření tisíců zbytečných serverů. Vyplatí se vstoupit i na Discord server BeamMP - podpora, včetně postupu při kompromitaci klíče, běží právě tam.

Na čem se lidé v tomto kroku nejčastěji zasekávají:

  • Vlastníkem je Discord účet. Klíče vytvořené pod jedním Discord účtem nejsou z jiného vidět. Pokud servery provozuje klub, rozhodni se předem, který účet bude klíče vlastnit, a vyber takový, který bude existovat i za dva roky - ne člena, který může odejít.
  • Zabezpečení Discordu je zabezpečení klíčů. Kdo se dostane do toho Discord účtu, vidí a může smazat všechny tvoje klíče. Zapni si v Discordu dvoufázové ověření; úvahy z článku dvoufázové ověření na účtu panelu platí pro každý účet, který drží přístupové údaje k serveru.
  • Účet na fóru BeamMP je samostatné přihlášení. Výhody za podporu se párují podle e-mailu na účtu fóra a podle Discord účtu propojeného na Patreonu, což je důležité pro limity klíčů níže.

Vytvoření klíče krok za krokem#

  1. Otevři keymaster.beammp.com a přihlas se přes Discord.
  2. Klikni na Keys v nabídce vlevo.
  3. Klikni na zelené tlačítko + vpravo nahoře.
  4. Zadej Server Name. Je to jen popisek klíče uvnitř Keymasteru - není to jméno, které vidí hráči. To pochází z Name v ServerConfig.toml.
  5. Klikni na Create.
  6. Hodnotu v poli Key zkopíruj ikonou schránky vpravo vedle něj.

Používej ikonu schránky, ne ruční označení textu. Právě při ručním označování se do konfigurace dostane mezera na konci nebo chybějící poslední znak a oboje skončí serverem, který nastartuje, ale nikdy se neautentizuje.

Pojmenuj klíč podle toho, kde bude žít: cruise-de-prod, drift-test, league-season-3. Až budeš mít tři klíče a bude potřeba zrušit ten, který unikl, popisek prozrazující, ke kterému serveru patří, tě ušetří hádání - a vyřazení špatného serveru ze seznamu uprostřed závodní noci.

Samotný klíč je UUID: 36 znaků, pět skupin hexadecimálních znaků oddělených pomlčkami. Tato délka je užitečná kontrola, protože ji ověřuje i server.

code
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Kolik klíčů dostaneš#

Každý účet má omezený počet klíčů a každý klíč pustí vždy právě jeden server. Bezplatný limit je malý - návody hostingových poskytovatelů se shodují na dvou klíčích na jeden Discord účet - a přesné číslo ukáže Keymaster, když na limit narazíš. Právě tam ho ověřuj, protože pravidla může BeamMP kdykoli změnit.

Další klíče přicházejí za podporu projektu. Oficiální FAQ pro hráče uvádí tyto sazby:

PodporaDalší klíče
Dar nebo tarif na Patreonu1 za každý darovaný US$
Boost Discordu BeamMP+5 celkem, ne za každý boost

Obě cesty zároveň přinášejí výhody předběžného přístupu. Aby klíče dorazily, musí být tvůj Patreon účet propojený se stejným Discord účtem, který používáš v Keymasteru, a e-mail na Patreonu by se měl shodovat s e-mailem na účtu fóra BeamMP. BeamMP uvádí, že synchronizace může trvat několik hodin a občas až 12; pokud po té době nic nedorazí, dalším krokem je jejich podpora, ne druhý dar.

Než zaplatíš za další klíče, zvaž, jestli je vůbec potřebuješ:

  • Testovací server nepotřebuje vlastní trvalý klíč, pokud nikdy neběží zároveň s ostrým. Musí se ale zastavit dřív, než nastartuje ostrý server, jinak jeden z nich bude odmítnut.
  • Staré klíče serverů, které jsi zrušil, se pořád počítají. Smaž je. Mrtvý klíč v seznamu je nevyužitý slot a zároveň přihlašovací údaj, který by se ještě mohl zneužít.
  • Pravidlem je jeden klíč na běžící server, ne jeden klíč na stroj. Dva BeamMP servery na jednom počítači potřebují dva klíče.

Kam klíč patří#

Klíč žije na jednom řádku ServerConfig.toml, v sekci [General], v uvozovkách, protože je to řetězec v TOML:

ServerConfig.toml
[General]Port = 30814AuthKey = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"Private = falseName = "Sunday Night Cruise"

Při prvním startu server vytvoří nový ServerConfig.toml s komentářem odkazujícím na Keymaster a prázdným AuthKey a poté se zastaví. To je v pořádku: doplň klíč a spusť server znovu. Rozložení souboru a všechny ostatní klíče jsou v návodu na server.

Proměnné prostředí místo souboru

Současné buildy serveru řady 3.x čtou klíč i z prostředí. Pokud je BEAMMP_AUTH_KEY nastavená a neprázdná, přepíše to, co je v souboru; BEAMMP_PRIVATE dělá totéž pro Private a za pravdu se bere jen hodnota 1 nebo true.

bash
$ export BEAMMP_AUTH_KEY="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"$ export BEAMMP_PRIVATE=false$ ./BeamMP-Server

Tohle je lepší postup pro kontejnery i pro každého, kdo drží konfigurační soubor v Gitu: soubor lze commitovat a sdílet a tajemství zůstane mimo něj. Článek proměnné prostředí a tajné údaje vysvětluje, proč se to malé úsilí navíc vyplatí. Jediná past je priorita - pokud je proměnná nastavená, úprava AuthKey v souboru nic neudělá, což vypadá úplně jako by tě server ignoroval. Starší verze serveru tyto proměnné neznají, takže si před použitím ověř poznámky k vydání buildu, který provozuješ.

Na hostovaném panelu

Na hostingu s panelem je klíč obvykle pole, ne řádek, který píšeš do souboru, a panel ho zapíše do konfigurace nebo prostředí za tebe. Na RE:NODE je BeamMP jednou z her, které potřebují vlastní přihlašovací údaj: server se vytvoří, jakmile projde platba, a instalace čeká na záložce Setup, dokud tam klíč nevložíš - tam ho také později vyměníš.

Privátní a veřejné servery#

Private rozhoduje o tom, zda se server inzeruje, ne o tom, zda potřebuje klíč. Server odmítne nastartovat s prázdným AuthKey bez ohledu na Private, takže klíč z Keymasteru potřebuje i server pro čtyři kamarády.

NastaveníV seznamu serverůPřipojení
Private = falseAno, po autentizaciZe seznamu nebo přímé připojení
Private = trueNeJen přímé připojení

Dvě podrobnosti jsou důležitější, než vypadají:

  • `Private = true` není heslo. Jen drží server mimo seznam. Kdokoli, kdo zná adresu a port, se stále může připojit. Skutečná kontrola přístupu je kontrola v Lua v onPlayerAuth; ukazuje ji návod k pluginům a článek whitelist vs heslo vysvětluje, proč je seznam identifikátorů stejně lepší než sdílené tajemství.
  • Privátní režim umlčí zprávy o autentizaci. V současných buildech privátní server heartbeaty stále posílá, ale nevypíše řádek „Authenticated“, důvod odmítnutí ani varování o nedostupném backendu. Privátní server se špatným klíčem proto v konzoli vypadá naprosto zdravě. Když klíč testuješ, vyzkoušej ho nejdřív s Private = false, přečti si výsledek a teprve potom server nastav jako privátní.

Správa, výměna a zrušení klíčů#

Stránka Keys je celé rozhraní pro správu: tvoje klíče, jejich popisky, hodnota každého z nich a možnost jeden smazat. Smazání klíče je způsob, jak ho zrušit. Jakmile zmizí, backend ho přestane uznávat: server spuštěný s ním bude odmítnut a u serveru, který pod ním už běží, nečekej, že v seznamu zůstane. Smazaný klíč ber jako mrtvý všude najednou.

Klíč vyměň, když byl odhalen - vložený do kanálu na Discordu, viditelný na screenshotu nebo streamu, commitnutý do veřejného repozitáře nebo ho měl admin, který už odešel. Na pořadí záleží, protože nechceš, aby byl server mimo seznam déle než po dobu restartu:

  1. Vytvoř v Keymasteru nový klíč a dej mu srozumitelný popisek.
  2. Nahraď AuthKey v ServerConfig.toml (nebo pole v panelu, nebo BEAMMP_AUTH_KEY) novou hodnotou.
  3. Restartuj server a v konzoli ověř řádek „Authenticated“.
  4. Smaž starý klíč v Keymasteru.

Pro krok 1 potřebuješ jeden volný slot. Pokud jsou obsazené všechny, musíš nejdřív smazat starý klíč a smířit se s krátkou prodlevou. Pokud se domníváš, že byl klíč zneužit, a ne jen odhalen - například se pod tvým jménem objevil server, který neznáš - BeamMP vyžaduje, abys kromě smazání klíče otevřel i ticket Account Support přes jejich Discord.

Klíč nenech uniknout tam, kde se obvykle ztrácí: tickety u třetích stran, screenshoty editoru konfigurace, sdílené šablony konfigurace a historie Gitu. Pokud někdo z týmu potřebuje server upravovat, dej mu přístup k souborům, ne k Discord účtu; obecný princip popisuje článek subusery a nejmenší oprávnění. A uchovávej zálohu ServerConfig.toml, která necestuje s klíčem na očích - zbytek tohoto návyku je v článku zálohy, které se opravdu obnoví.

Chyby ze špatného, chybějícího nebo znovu použitého klíče#

Každý problém s klíčem se objeví v konzoli serveru během prvního heartbeatu, pokud se díváš. Tohle jsou zprávy, které vypisují současné buildy řady 3.x, a co každá znamená:

Zpráva v konzoliPříčina
No AuthKey specified in the "ServerConfig.toml" file...AuthKey je prázdný. Server se zastaví
AuthKey specified is the wrong length and likely isn't valid.Není to 36 znaků. Server pokračuje
Authenticated!Backend klíč přijal
Backend REFUSED the auth key. Reason: ...Klíč je neznámý, smazaný nebo používaný
Backend failed to respond to a heartbeat.Backend není ze serveru dosažitelný

Znění zpráv se mezi vydáními mírně mění, proto v konzoli hledej AuthKey, Authenticated a REFUSED, ne přesnou větu. Návyky, díky kterým je to rychlé, má článek čtení konzole.

Server se zastaví hned po startu

Klíč je prázdný. Buď soubor nikdy nebyl uložen, klíč byl vložen do zakomentovaného řádku, nebo jsi upravil jiný ServerConfig.toml, než jaký server čte - snadno se to stane, když vedle leží stará kopie ve složce se zálohou. Otevři soubor, který server skutečně načítá, a zkontroluj řádek v sekci [General].

Varování o špatné délce

Hodnota není 36znakové UUID. Obvyklými příčinami jsou mezera na začátku nebo na konci, chybějící poslední znak po ručním označení, uvozovky vložené dovnitř uvozovek nebo omylem zkopírované ID zprávy z Discordu. Po tomto varování server běží dál, takže je snadné ho přeskrolovat; backend ho pak odmítne.

„Backend REFUSED the auth key“

Backend klíč viděl a odmítl ho. Důvod za dvojtečkou pochází od BeamMP, takže si ho přečti dřív, než začneš hádat. V praxi jde o jednu ze tří věcí: klíč byl smazán v Keymasteru, byl překlepnutý tak, že má stále správnou délku, nebo ho už používá jiný běžící server. Řešením posledního případu je klíč pro každý server - testovací kopie zapomenutá běžet na domácím PC je klasický viník.

„Backend failed to respond to a heartbeat“

Je to problém sítě, ne klíče. Server se nedokázal dostat k backendu přes HTTPS, takže nedostal žádnou odpověď - ani kladnou, ani zápornou. Zkontroluj, že je povolený odchozí provoz na portu 443, že na stroji funguje překlad DNS a že backend BeamMP nemá zrovna špatný den. Přímá připojení během toho fungují dál; postižený je jen seznam.

Server běží, je autentizovaný, ale není v seznamu

Nejdřív zkontroluj Private - s velkým náskokem je to nejčastější příčina. Pak dej seznamu minutu nebo dvě na obnovení. Pokud ho stále nevidíš, připoj se přímo adresou a portem: pokud to funguje, klíč i server jsou v pořádku a potíž je v řazení nebo filtrování v klientu. Pokud se hráči nemohou připojit vůbec, jde o problém s porty 30814 TCP a UDP, který popisuje článek porty herních serverů vysvětleně, a Keymaster s tím nic nenadělá.

FAQ#

Je BeamMP Keymaster zdarma?

Ano. Každý Discord účet dostane zdarma malý počet klíčů, což stačí většině lidí, kteří provozují jeden nebo dva servery. Další klíče přicházejí s dary nebo boostem Discordu v sazbách z oficiálního FAQ.

Mohou dva servery sdílet jeden auth klíč?

Ne. Klíč může používat vždy jen jeden běžící server a backend odmítne ten druhý. Dva servery, včetně testovací kopie, potřebují dva klíče - nebo se musí testovací kopie zastavit, dokud běží ostrý server.

Potřebuji auth klíč i pro privátní server?

Ano. Server se s prázdným AuthKey nespustí, ať je Private nastaveno na cokoli. Privátní režim jen drží server mimo veřejný seznam a navíc skrývá zprávy o autentizaci, takže klíč ověř nejdřív s veřejným serverem.

Co se stane se serverem, když smažu jeho klíč?

Proces nespadne a hráči, kteří už na serveru jsou, nejsou vyhozeni, ale klíč u backendu už neplatí: počítej s tím, že server přijde o místo v seznamu a při dalším startu bude odmítnut. Vlož nový klíč a restartuj, aby se vše správně vrátilo.

Mohu klíč přesunout na jiný hosting?

Ano. Klíč patří tvému účtu, ne stroji, takže přesun serveru znamená zkopírovat klíč do nové konfigurace a nejdřív vypnout starý server. Pokud poběží oba najednou, jeden bude odmítnut.

Může klíč pro můj server vytvořit někdo jiný?

Může vytvořit klíč pod svým Discord účtem, ale pak ho vlastní on a může ho kdykoli smazat. U serveru, za který zodpovídáš, vytvoř klíč sám a sám ho i vlož.