Hráč, který je v DayZ vyhozen na načítací obrazovce s chybou podpisu, má skoro vždy jediný problém: některý z modů, které načetl, je podepsaný klíčem, který server ve své složce keys nemá. Oprava spočívá v tom, že zkopíruješ soubor .bikey ze složky keys daného modu do složky keys na serveru a server restartuješ - a uděláš to znovu při každé aktualizaci modu. Zbytek tohoto návodu vysvětluje, proč to funguje, jak poznat, kterému modu klíč chybí, proč mody jen pro server klíč nepotřebují a jak zabránit tomu, aby klíče zastarávaly a problém se nevracel po každé aktualizaci z Workshopu.
Tento článek se věnuje jen klíčům a podpisům. Instalaci serveru, porty a ekonomiku lootu najdeš v kompletním návodu na DayZ server, každý řádek konfiguračního souboru pak v článku serverDZ.cfg vysvětleno.
Co ověřování podpisů ve skutečnosti kontroluje#
Obsah DayZ se distribuuje v souborech .pbo - zabalených archivech modelů, textur, konfigurací a skriptů - ve složce addons daného modu. Vedle každého .pbo leží soubor .bisign: podpis vytvořený autorem modu soukromým klíčem, který nikdy neopustí autorův počítač. Odpovídající veřejný klíč je .bikey, který autor přikládá do složky keys modu, aby servery mohly podpisy ověřit.
Když se hráč připojí k serveru s verifySignatures = 2, engine požádá klienta, aby prokázal, že každý načtený .pbo nese platný podpis klíče, kterému server důvěřuje. „Důvěřuje“ znamená jediné: soubor .bikey s tímto názvem a obsahem leží ve složce keys na serveru. Pokud některý načtený .pbo nemá podpis, má poškozený podpis nebo je podepsaný klíčem, který server nemá, hráč je vyhozen.
Tři soubory, tři úlohy:
| Soubor | Kde leží | Co to je |
|---|---|---|
.pbo | @Mod/addons/ | Samotný zabalený obsah |
.bisign | @Mod/addons/, vedle každého .pbo | Autorův podpis jednoho konkrétního .pbo |
.bikey | @Mod/keys/, poté zkopírovaný do keys/ na serveru | Veřejný klíč, který tyto podpisy ověřuje |
Soubor s podpisem se jmenuje podle .pbo i podle klíče, který ho podepsal, takže autor modu s klíčem pojmenovaným MyMod vytvoří takovéto dvojice:
@MyMod/ addons/ mymod_core.pbo mymod_core.pbo.MyMod.bisign mymod_items.pbo mymod_items.pbo.MyMod.bisign keys/ MyMod.bikey meta.cpp mod.cppDůležitý důsledek: server neporovnává soubory bajt po bajtu s vlastní kopií. Kontroluje, že soubory klienta podepsal někdo, komu server důvěřuje. Proto systém zachytí hráče, který upravil .pbo, aby měl průhledné stěny - upravený soubor už nesedí k podpisu - ale také proto má důvěra klíči váhu: přijato bude cokoli podepsané tímto klíčem.
Je také dobré mít jasno v tom, kdo vlastně vyhazuje. Ověřování podpisů je součást herního enginu, nastavuje se v serverDZ.cfg a funguje bez ohledu na to, jestli běží BattlEye. BattlEye je samostatná anticheat vrstva, která sleduje běžící procesy a paměť. Hráči i spousta návodů viní z kicků kvůli podpisu BattlEye, protože se obojí děje ve stejném okamžiku připojování, ale žádné nastavení BattlEye chybějící klíč nespraví. Článek BattlEye a Easy Anti-Cheat na serverech tuto hranici popisuje napříč hrami.
verifySignatures a nastavení kolem něj#
Nastavení je jediný řádek v serverDZ.cfg:
verifySignatures = 2;allowFilePatching = 0;forceSameBuild = 1;Oficiální dokumentace Bohemie k DayZ uvádí 2 jako jedinou podporovanou hodnotu. Starší hry Arma měly slabší režim 1, který DayZ nepoužívá, a 0 kontrolu vypíná. Běh s 0 se na fórech občas navrhuje jako rychlá oprava chyb s klíči. Kicky sice zastaví, ale stejným způsobem, jako když odstraníš zámek, abys neztrácel klíč: každý klient teď může načíst jakýkoli upravený soubor a tvůj server ochotně přijme hráče, jehož lokální kopie modu byla upravena tak, aby ukazovala loot skrz stěny. Nech 2 a oprav klíč.
Dvě nastavení vedle patří do stejného obrazu:
allowFilePatching = 0odmítá klienty spuštěné s parametrem-filePatching, který hře dovoluje načítat volné nezabalené soubory z disku místo podepsaných.pbo. Volné soubory nemají podpisy, takže file patching je díra přímo skrz kontrolu podpisů. Důvod ho zapnout má jen vývojář modů, který testuje lokálně.forceSameBuild = 1odmítá klienty s jiným buildem hry. To je kontrola verze, ne podpisu, ale kicky způsobuje ve stejném okamžiku a po patchi hry bývá často skutečnou příčinou toho, čemu hráči říkají „zase ta věc s podpisem“.
Detail, který ušetří čas: kontrola se týká toho, co načítá klient, ne toho, co spouští server. Server čte vlastní mody, aniž by jejich podpisy ověřoval proti své složce keys. Složka keys je čistě seznam veřejných klíčů, kterými smí být soubory klienta podepsané.
Složka keys#
Složka keys na serveru leží v kořenovém adresáři serveru, vedle DayZServer_x64.exe ve Windows nebo DayZServer v Linuxu, a vedle složek @Mod. Čerstvá instalace už obsahuje jeden soubor:
keys/ dayz.bikeydayz.bikey je vlastní klíč Bohemie, který podepisuje soubory .pbo základní hry. Nikdy ho nemaž. Bez něj selže ověření vanilla dat u každého klienta a na server se nedá připojit ani bez jediného modu.
Každý mod načítaný klientem přidá alespoň jeden klíč. Složka na serveru s mody pak vypadá takto:
keys/ dayz.bikey CF.bikey Dabs.bikey Expansion.bikey VPPAdminTools.bikey BuilderItems.bikeyNázvy jsou takové, jaké autor zvolil, takže se nemusí shodovat s názvem složky modu. Mod pojmenovaný @SomeWeaponsPack může obsahovat SWP_v3.bikey. Jeden autor s více mody je často podepisuje všechny jedním klíčem a velký mod rozdělený na několik položek Workshopu, například DayZ Expansion, může stejný klíč přikládat ke každé části. Zkopírovat klíč, který tam už je, nevadí - přepíše se identický soubor.
Některé mody mají klíč ve složce nazvané Keys nebo key místo keys. Ve Windows na tom nezáleží. Na Linuxovém serveru se ale u cest rozlišují velká a malá písmena, takže skript, který hledá jen v keys/, je přehlédne. Hledej podle přípony souboru, ne podle názvu složky.
Instalace klíče modu krok za krokem#
Pro jeden nový mod, který běží na klientovi nebo na klientovi i serveru, je postup takový:
- Zastav server. Klíče a seznam modů se čtou při startu.
- Stáhni mod. Přes SteamCMD použij app id klienta,
221100, ne serveru223350. Soubory skončí vsteamapps/workshop/content/221100/<workshop id>/. - Zkopíruj nebo nalinkuj tuto složku do kořenového adresáře serveru pod čitelným názvem, například
@SomeMod. Složky z Workshopu se jmenují čísly a spouštěcí řádek plný čísel se nedá udržovat. - Zkopíruj každý
.bikeyz modu do složkykeysna serveru. - Přidej mod do
-mod=v pořadí podle závislostí, frameworky první. - Spusť server a než někomu řekneš, že běží, připoj se sám přes DayZ Launcher.
$ steamcmd +force_install_dir /home/dayz/server +login <steam_account> \ +workshop_download_item 221100 1559212036 +quit$ cd /home/dayz/server$ cp -r steamapps/workshop/content/221100/1559212036 @CF$ find @CF -iname '*.bikey' -exec cp -v {} keys/ \;Na serveru s mnoha mody zkopíruj všechny klíče najednou, ne mod po modu. Z kořenového adresáře serveru v Linuxu:
$ find . -maxdepth 3 -path './@*' -iname '*.bikey' -exec cp -v {} keys/ \;Ve Windows, ze složky serveru v PowerShellu:
Get-ChildItem -Path .\@* -Recurse -Filter *.bikey | Copy-Item -Destination .\keys\Na panelovém hostingu uděláš totéž přes správce souborů nebo SFTP: otevři každou složku @Mod/keys/, zkopíruj soubor a vlož ho do keys/ v kořeni serveru. Zabere to minutu na mod a právě ta minuta rozhoduje o tom, jestli se někdo připojí. SFTP a správce souborů popisuje připojení a u seznamu víc než pár modů je rychlejší nahrát všechny klíče z lokální kopie modů do keys/ jedním uploadem než proklikávat každou složku.
Krok, který lidé vynechávají, je ten poslední. Server, který čistě nastartoval, prokázal jen to, že umí přečíst své mody. Připojení přes launcher prokáže, že klient s inzerovaným seznamem modů kontrolou projde, a o to ti ve skutečnosti jde.
-mod vs -serverMod: které mody potřebují klíče#
DayZ má dva spouštěcí parametry pro mody a rozdíl rozhoduje o tom, jestli je klíč vůbec potřeba:
| Parametr | Načítá | Potřebuje klíč v keys/ |
|---|---|---|
-mod= | Server i každý klient | Ano, každý mod v seznamu |
-serverMod= | Pouze server | Ne |
-mod=@CF;@Dabs Framework;@DayZ-Expansion-Core;@BuilderItems-serverMod=@MyServerTweaks;@LootLoggerMody v -mod= se inzerují DayZ Launcheru, který hráče přihlásí k jejich odběru a spustí hru se shodným seznamem. Každý z těchto modů se načítá na klientovi, takže každý se kontroluje, takže každý potřebuje na serveru svůj klíč.
Mody v -serverMod= se nikdy neinzerují a klienti je nikdy nenačítají. Protože je klienti nemají, není co ověřovat a jejich klíče mohou zůstat mimo keys/. Typické mody jen pro server jsou úpravy lootu nebo ekonomiky ve skriptu, logovací nástroje a serverová polovina modů, které mají samostatný serverový balíček. Pokud autor říká, že mod je serverový, patří sem.
Chyby jdou oběma směry a každá vyvolá jiný příznak:
- Klientský mod umístěný do `-serverMod=`. Server ho načte, hráči ho nikdy nedostanou a vše, co přidává, je pro ně neviditelné nebo rozbité: chybějící předměty, oblečení zobrazené jako chybová textura, menu, která se neotevřou. Žádný kick kvůli podpisu, protože klient mod nikdy nenačte.
- Serverový mod umístěný do `-mod=`. Každý hráč si ho musí stáhnout, a pokud nemá klíč v
keys, je vyhozen každý hráč. Některé mody jen pro server nejsou podepsané vůbec, protože autoři nečekali, že je bude klient načítat - a z té chyby se tak stává zaručený kick pro všechny.
Mody mohou být také čistě klientské: úpravy rozhraní, překryvy map, náhrady zvuků, které server nemusí spouštět. Ty nejsou ani v jednom parametru. Pokud chceš nějaký povolit, dej jeho .bikey do keys/ a hráči, kteří ho mají načtený, ověřením projdou. Hráčů bez něj se to netýká. To je jediný správný způsob, jak povolit volitelný klientský mod, a zároveň důvod šetřit: každý další klíč rozšiřuje to, co server přijímá.
Aktualizace modů bez vyřazení všech hráčů#
Většina kicků kvůli podpisu na zavedených serverech nastává v den, kdy se mod aktualizuje, a příčinou je nesoulad mezi tím, co má server, a tím, co launcher dává hráčům.
Když se mod z Workshopu aktualizuje, hráči, kteří ho odebírají, dostanou novou verzi automaticky přes Steam. Pokud server pořád má starou verzi, mohou se rozbít dvě věci:
- Autor podepsal aktualizaci novým klíčem. Někteří autoři generují pro každé vydání nový klíč nebo svůj klíč po změně verze rotují. Nové soubory
.bisignu klienta odkazují na klíč, který server nikdy neviděl. Každý hráč s aktualizací je vyhazován, dokud se nový.bikeynezkopíruje dokeys/. - Verze serveru a klientů se liší obsahem. I při stejném klíči se server se starší verzí a klienti s novější neshodnou na třídách a datech, což se projeví kicky, chybějícími předměty nebo pády při připojení.
Postup, který předejde obojímu:
- Zastav server.
- Aktualizuj na serveru každý mod na aktuální verzi z Workshopu, ne jen ten, o kterém jsi slyšel. Přes SteamCMD to znamená znovu
workshop_download_itempro každé id, s přidanýmvalidate, pokud stahování vypadá neúplně. - Zkopíruj složky modů přes staré v kořeni serveru.
- Zkopíruj znovu každý
.bikeyze všech modů pomocí příkazu pro jeden průchod výše. - Spusť server, přečti začátek logu kvůli chybám a připoj se sám přes launcher.
Krok 4 je návyk, který si vybuduj: po každé aktualizaci kopíruj všechny klíče, ať už věříš, že se klíč změnil, nebo ne. Zabere to pár sekund a odstraní to nejčastější důvod, proč se na server na celý večer nedá připojit.
Staré klíče se hromadí, jak je autoři rotují. Zastaralý klíč připojování neškodí, ale znamená, že server pořád důvěřuje podpisům vytvořeným klíčem, který autor možná vyřadil - ve vzácných případech proto, že unikl. Jednou nebo dvakrát za rok vyčisti složku zpět na dayz.bikey, zkopíruj všechny aktuální klíče znovu a zůstane ti přesně ta sada, kterou potřebuješ.
Druhá polovina je neaktualizovat ve špatnou chvíli. Patch hry DayZ může rozbít mody, dokud je autoři nepřestaví, a v den patche launcher hráčům podává nové verze modů tak rychle, jak je autoři zveřejňují. Aktualizovat server pár hodin po autorech, až se seznam modů usadí, je lepší než ho aktualizovat v minutě, kdy hra dostane patch. Co dělat, když aktualizace modu něco rozbije obsahuje postup návratu zpět a Mody ze Steam Workshopu na dedikovaných serverech vysvětluje, jak se stahování z Workshopu chová na straně serveru napříč hrami.
Diagnostika kicku kvůli podpisu#
Zpráva o kicku na obrazovce hráče je krátká a její znění se mezi verzemi změnilo, ale obvykle zmiňuje kontrolu podpisu, upravená data nebo konkrétní soubor. Užitečný detail je název souboru, pokud se zobrazí: název .pbo ukáže přímo na mod, který selhal.
Postupuj v tomto pořadí:
- Týká se to všech, nebo jednoho hráče? Pokud je vyhozen každý hráč, serveru chybí klíč nebo se do
-mod=dostal mod jen pro server. Pokud je vyhozen jen jeden hráč, problém jsou jeho lokální soubory. - Přečti log serveru. Kick se zapisuje do souboru
.RPTa do logu konzole ve složce profilů v okamžiku, kdy nastane, obvykle s jménem hráče a souborem nebo důvodem. Hledej jméno hráče v čase, kdy se pokusil připojit. - Najdi mod. Přiřaď název
.pboke složce modu: prohledej všechny složky@Mod/addons/kvůli tomuto souboru. - Zkontroluj jeho klíč. Otevři složku
keystoho modu, poznamenej si název.bikeya ověř, že stejný soubor je vkeys/na serveru. Pokud soubor s tímto názvem existuje, ale mod byl nedávno aktualizován, zkopíruj ho i tak znovu - rotovaný klíč může mít stejný název. - Zkontroluj verzi. Porovnej čas poslední aktualizace modu ve Workshopu s časem, kdy byla aktualizována kopie na serveru. Pokud je Workshop novější, aktualizuj server.
U jednoho hráče samotného je oprava na jeho počítači:
- V DayZ Launcheru otevři seznam modů, zruš odběr selhávajícího modu a přihlas ho znovu, nebo použij opravu v launcheru. Ověření přes launcher místo vlastností hry ve Steamu zajistí, že se zkontrolují i mody.
- Ujisti se, že nespouští lokální upravenou kopii modu ani další klientské mody, jejichž klíče server nemá. Hráči, kteří hrají na více serverech, mívají načtenou hromadu modů, které tvůj server nikdy nechtěl.
- Pokud si do spouštěcích voleb přidali
-filePatchingkvůli jinému serveru nebo návodu na modding, ať ho odstraní.
Pokud nic z toho příčinu nenajde, spusť server jen s @CF nebo úplně bez modů a připoj se. Pokud vanilla funguje, přidávej mody zpět po skupinách, dokud se kick nevrátí. Je to pomalé, ale vždy to skončí jménem.
Podepisování vlastních repacků#
Majitelé serverů někdy mod upraví - změní konfiguraci uvnitř .pbo, sloučí malé mody nebo předělá texturu předmětu. V okamžiku, kdy .pbo znovu zabalíš, původní .bisign přestane sedět a každý klient načítající tvou verzi je vyhozen. Řešením je podepsat ho sám, k čemu je systém navržený.
DayZ Tools, zdarma na Steamu, obsahují k tomu nástroje DS: DSCreateKey vygeneruje pár klíčů a DSSignFile podepíše .pbo soukromou polovinou. Addon Builder v DayZ Tools umí podepisovat i při balení, pokud mu dáš soukromý klíč. Pár tvoří .biprivatekey, který podepisuje, a .bikey, který distribuuješ.
- Dej svůj
.bikeydo složkykeys/na serveru a do složkykeys/svého repacku. - Nikdy nesdílej ani nenahrávej
.biprivatekey. Kdokoli, kdo ho má, může podepsat soubory, které tvůj server přijme. - Respektuj podmínky původního autora. Mnoho modů repacking výslovně zakazuje a zveřejnění cizí práce znovu podepsané tvým klíčem je způsob, jak servery přicházejí o položky na Workshopu.
U většiny serverů je lepší cesta repacking úplně obejít: měnit chování přes soubory mise, vlastní konfiguraci modu ve složce profilů nebo malý serverový mod v -serverMod=, který klíč nepotřebuje vůbec. Návod na server s DayZ Expansion ukazuje, jak daleko se s tím dostaneš u jednoho z největších modů vůbec.
Klíče na RE:NODE#
Na DayZ serveru RE:NODE jsou složka keys i každá složka @Mod dostupné přes správce souborů v panelu a přes SFTP, s přihlašovacími údaji pro každý server. Správce souborů rozbaluje archivy na místě, takže mod nahraný jako zip lze rozbalit přímo do kořene serveru, než zkopíruješ jeho klíč. Seznam modů se zadává ve spouštěcím nastavení na kartě Startup. Žádný seznam povolených modů neexistuje - nahraješ, co si vybereš, a sám si vybereš, kterým klíčům důvěřovat.
Před aktualizací modu udělej z panelu backup. Sloty pro backupy jsou na každém tarifu DayZ, backup lze obnovit tlačítkem a obnovení předchozího stavu je nejrychlejší cesta z aktualizace, která se nepovedla. Samotná instalace DayZ vyžaduje tvé vlastní přihlášení do Steamu, zadané na kartě Setup po vytvoření serveru, stejně jako u každého hostingu, který DayZ instaluje za tebe.
FAQ#
Kam dát soubor .bikey v DayZ?
Do složky keys v kořenovém adresáři serveru, vedle spustitelného souboru serveru a složek @Mod - ne dovnitř modu a ne do složky profilů. Každý mod uvedený v -mod= tam potřebuje svůj klíč. Po přidání klíčů server restartuj.
Můžu nastavit verifySignatures na 0, aby kicky přestaly?
Můžeš a kicky to zastaví, ale server tím přestane odmítat upravené soubory, takže každý hráč může načíst upravený .pbo, který ukazuje loot skrz stěny nebo odstraňuje zpětný ráz. Oprava chybějícího klíče zabere minutu a ochranu zachová.
Potřebují serverové mody bikey?
Ne. Mody načítané přes -serverMod= klienti nikdy nenačítají, takže se proti nim nic neověřuje. Klíče jsou jen pro to, co načítají klienti: vše v -mod= plus každý volitelný čistě klientský mod, který se rozhodneš povolit.
Proč se server po aktualizaci modu rozbil, když se nic jiného nezměnilo?
Autor modu pravděpodobně podepsal novou verzi novým klíčem, takže hráči, kteří aktualizaci dostali přes launcher, teď nesou podpisy, které server nemůže ověřit. Aktualizuj mod na serveru a zkopíruj znovu všechny klíče.
Proč je vyhazován jen jeden hráč?
Jeho lokální kopie se liší: poškozené nebo zastaralé stažení, mod, který upravil, další klientský mod, pro který tvůj server nemá klíč, nebo -filePatching ve spouštěcích volbách. Ať udělá opravu nebo znovu odebírá mody přes DayZ Launcher.
Můžu smazat dayz.bikey?
Ne. Je to klíč pro soubory základní hry. Bez něj selže u každého klienta kontrola podpisu na vanilla datech a nepřipojí se nikdo, s mody ani bez nich.


