Když dedikovaný Valheim server zemře při startu, příčinou je téměř vždy jedna ze šesti věcí: Steam knihovna steamclient.so se nedá najít (jen Linux), heslo porušuje některé pravidlo hry, soubor světa je poškozený, port už drží jiný proces, BepInEx selže dřív, než se načte hra, nebo procesu při načítání velkého světa dojde paměť. Každá z nich zanechá v logu jinou stopu a log je místo, kde začíná každá oprava. Čti ho od začátku, ne od konce - poslední řádky spadlého serveru jsou obvykle ukončování a důvod je o dvacet řádků výš.
Tento článek prochází jednotlivá selhání, jak vypadají a jak je opravit, a také jak poznat server, který spadl jednou, od serveru uvízlého ve smyčce restartů. Předpokládá, že server byl nainstalován přes SteamCMD nebo hostingový panel; pokud ještě instaluješ, návod na instalaci přes SteamCMD na Linuxu popisuje čistou instalaci, která se většině těchto potíží vyhne.
Nejdřív si přečti log#
Valheim server zapisuje na standardní výstup, pokud není nastaveno -logFile. Kde hledat:
| Jak běží | Kde je log |
|---|---|
| Panel (Pterodactyl a podobné) | Záložka konzole, živě; starší výstup v zobrazení logu serveru |
| Linux, ručně | Terminál, nebo soubor zadaný v -logFile |
| Linux, služba systemd | journalctl -u valheim -n 300 (název tvé jednotky) |
| Windows | Okno konzole, nebo cesta z -logFile |
| S BepInEx | Také BepInEx/LogOutput.log ve složce serveru |
Pokud se okno konzole zavře dřív, než ho stihneš přečíst, přidej -logFile s cestou, aby výstup pád přežil. Pak čti od prvního řádku. Zdravý start probíhá zhruba v tomto pořadí: inicializuje se Unity, načte se Steam API pro herní servery, načte se nebo vygeneruje svět, server se zaregistruje a na crossplay serveru se objeví řádek s kódem pro připojení. Kde tato posloupnost končí, tam je problém.
Užitečný zvyk: zkopíruj log ven dřív, než cokoli restartuješ. V mnoha instalacích ho další start přepíše, a s ním i jediný důkaz. Logy herních serverů vysvětleně popisuje, jak obecně číst logy ze startu a co si ponechat.
Linux: steamclient.so a chybějící knihovny#
Nejčastější selhání při startu na samostatně nainstalovaném Linux serveru je, že se nepodaří inicializovat Steam API. Log obsahuje řádky přibližně v tomto duchu:
dlopen failed trying to load:/home/steam/.steam/sdk64/steamclient.sowith error:/home/steam/.steam/sdk64/steamclient.so: cannot open shared object file[S_API] SteamAPI_Init(): Sys_LoadModule failed to load: ...Přesné znění se mezi verzemi liší a některé z těchto řádků jsou neškodné: loader zkouší několik cest a selhání na jedné nevadí, pokud další řádek říká, že se knihovna načetla. Rozhoduje, jestli server pokračuje ve startu. Pokud se zastaví, server nenašel použitelný steamclient.so.
Server dodává vlastní kopii ve složce linux64/ a standardní start_server.sh na ni nasměruje loader před spuštěním. Důležité řádky ve skriptu jsou:
export templdpath=$LD_LIBRARY_PATHexport LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATHexport SteamAppId=892970./valheim_server.x86_64 -nographics -batchmode -name "Longship Crew" \ -port 2456 -world "Midgard" -password "herring-barrel-42" -public 1export LD_LIBRARY_PATH=$templdpathCo to rozbíjí:
- Spuštění binárky napřímo. Volání
./valheim_server.x86_64z jednotky systemd nebo vlastního skriptu bez nastaveníLD_LIBRARY_PATHtuto opravu obejde. Buď spouštějstart_server.sh, nebo nastav stejné proměnné ve své jednotce pomocíEnvironment=. - Relativní cesty ze špatného adresáře.
./linux64je relativní cesta. Služba, která nemá pracovní adresář nastavený na složku serveru, hledá na špatném místě. Nastav v jednotceWorkingDirectory=. - Chybějící `SteamAppId`.
892970je ID aplikace hry (instalační ID serveru je896660). Bez něj se Steam API nemusí inicializovat pro správnou aplikaci. - Kopie v sdk64. Častým doplňkovým krokem je vytvořit
~/.steam/sdk64/pro uživatele, pod kterým server běží, a zkopírovat tamlinux64/steamclient.so. Neuškodí to a opraví instalace, kde loader na této cestě trvá.
Chybějící systémové knihovny způsobují podobná zastavení hned na začátku. Na Debianu a Ubuntu může minimální image postrádat knihovny, které runtime Unity očekává. Obvykle jde o libatomic1 a klientskou knihovnu PulseAudio; nainstaluj je správcem balíčků a zkus to znovu. Řádek v logu pojmenuje chybějící .so; hledej v balíčcích své distribuce tento název souboru a nehádej.
Pravidla pro heslo a název#
Valheim odmítne spustit server, jehož heslo porušuje pravidla, a udělá to jediným řádkem, který proletí okamžitě. Pravidla:
- Alespoň pět znaků.
- Heslo se nesmí vyskytovat v názvu serveru.
- Heslo se nesmí vyskytovat v názvu světa.
Server nazvaný Bjorn's Hall s heslem bjorn se zastaví hned. Stejně tak svět Asgard s heslem asgard1. Vyber heslo, které nesdílí žádné slovo ani s jedním z nich. Pokud chceš server provozovat úplně bez hesla - třeba skrytý přes -public 0 v důvěryhodné síti - vyzkoušej to na své verzi a nepředpokládej; chování prázdných hesel se mezi verzemi a nastaveními lišilo a dlouhé heslo tě nestojí nic.
Záleží i na uvozovkách. Název s mezerami potřebuje na příkazové řádce uvozovky a heslo se znaky, které shell bere speciálně ($, !, zpětné apostrofy), potřebuje na Linuxu jednoduché uvozovky. Rozbitá uvozovka nemusí vyvolat chybu; může tiše udělat zbytek řádku součástí názvu. Přehled spouštěcích argumentů Valheimu uvádí všechny argumenty a jejich pravidla.
Chyby při načítání světa#
Pokud se Steam inicializuje a server se zastaví při načítání světa, podezřelý je soubor světa. Svět Valheimu jsou dva soubory ve složce worlds_local: Name.fwl (název, seed, pár set bajtů) a Name.db (všechno ostatní). Příznaky poškozeného světa:
- Výjimka při načítání světa -
EndOfStreamExceptiona podobné - po které server skončí. - Soubor
.dbs nulovou velikostí, nebo mnohem menší než včera. - Soubor
.fwls nulovou velikostí; server pak vůbec nepřečte metadata světa.
Skoro vždy následují po nečistém zastavení během ukládání: proces byl zabit, počítači vypadl proud, nebo se při zápisu světa zaplnil disk. Hra uchovává dřívější kopie, ze kterých lze obnovit: Name.db.old a Name.fwl.old z předchozího uložení a automatické zálohy pojmenované jako Name_backup_auto-20261011120000.db ve stejné složce.
Obnova v tomto pořadí:
- Zastav server. Zkopíruj celou složku
worlds_localna bezpečné místo dřív, než na cokoli sáhneš. - Poškozený
Name.dbpřejmenuj stranou a zkopírujName.db.oldjakoName.db. Stejně postupuj s.fwl, pokud je poškozený on. - Spusť server a v logu zkontroluj, že se svět načítá.
- Pokud selže i to, obnov stejným způsobem nejnovější automatickou zálohu, nebo skutečnou zálohu uloženou mimo server.
Zbytek tématu - přepínače záloh, co automatické zálohy pokrývají a co ne, a jak správně obnovovat - patří do článku zálohy Valheim serveru a poškození světa, takže se tu neopakuje.
Neshoda názvu světa, která vypadá jako reset
Ne každý problém se světem je pád. Pokud -world přesně neodpovídá názvu souboru - včetně velkých písmen, bez přípony - server nespadne; vygeneruje nový svět pod novým názvem a hráči dorazí na prázdnou mapu. Původní soubory tam pořád jsou. Oprav název a restartuj.
Port je již používán#
Dva Valheim servery nemohou sdílet herní port na stejné adrese a druhý, který nastartuje, selže nebo se chová divně. Příčiny:
- Duch procesu. Předchozí server neskončil, často po zavření terminálu nebo špatném restartu služby. Port pořád drží.
- Dva servery, stejné `-port`. Několik serverů na jednom stroji potřebuje každý vlastní dvojici -
2456,2466,2476a tak dále, s query portem vždy o jedna vyšším. - Něco jiného v rozsahu. Vzácné, ale jiný software může sedět na UDP portech v tomto rozsahu.
Na Linuxu zjistíš, kdo port drží:
$ ss -ulpn | grep -E ':245[6-8]'$ pgrep -a valheim_serverPokud běží starý valheim_server.x86_64, zastav ho čistě - kill -INT <pid> ho požádá o uložení a ukončení - a k kill -9 sáhni, až když neskončí. Na Windows dá ID procesu Správce úloh nebo netstat -ano s findstr 2456. Porty Valheimu 2456-2458 vysvětleně popisuje rozestupy několika serverů na jedné IP.
Na hostovaném panelu se to stává zřídka, protože každý server je vlastní kontejner s vlastními přidělenými porty.
BepInEx a preloader#
Server s módy přidává fázi, která běží před samotnou hrou. Nejdřív se načte injektor Doorstop z BepInEx, preloader hru upraví a teprve potom nastartují Valheim a pluginy. Selhání v tomto řetězci zastaví server dřív, než se objeví jakýkoli výstup Valheimu, nebo ho o pár sekund později shodí výjimka, která pojmenuje mód.
Kde se to kazí:
- Špatný spouštěcí skript. S BepInEx se musí server na Linuxu spouštět ze
start_server_bepinex.sh. Start zestart_server.shběží jako vanilla - žádný pád, ale ani módy, což vede k jinému zmatku. - Skript se nespustí.
Permission deniedznamená, že není spustitelný:chmod +x start_server_bepinex.sh.bad interpreter: /bin/bash^Mznamená, že byl uložen s windowsovými konci řádků; převeď ho pomocídos2unixnebo balíček rozbal znovu. - Chybějící části. Složka
doorstop_libsz balíčku a na Windowswinhttp.dllmusí ležet v kořeni serveru vedle binárky. Rozbalení do podsložky je klasická chyba. - Mód pro jinou verzi. Po patchi hry mohou módy zkompilované proti staré hře při načítání vyhazovat
MissingMethodExceptionneboTypeLoadException. Výjimka pojmenuje plugin. - Mód bez své závislosti. Většina obsahových módů potřebuje Jotunn nebo podobnou knihovnu; BepInEx zaloguje, že plugin byl přeskočen kvůli chybějící závislosti.
BepInEx/LogOutput.log obsahuje celou stopu. Nejrychlejší způsob, jak najít vadný plugin, je půlení: přesuň polovinu z BepInEx/plugins ven, spusť a opakuj na té polovině, která pořád selhává. Den patche rozbije módy plošně; co dělat, když aktualizace módu něco rozbije má obecný postup a samotná instalace BepInEx je v článku Valheim módy s BepInEx na serveru.
Zabití kvůli nedostatku paměti#
Velký svět potřebuje paměť už při načítání: server čte celé .db do paměti a dlouho žijící svět s velkými stavbami a úpravami terénu může potřebovat několik gigabajtů, než dorazí první hráč. Pokud je limit nižší, proces zabije jádro - ne Valheim - a log prostě skončí, často uprostřed načítání světa, bez jakékoli chyby od hry.
Příznaky na vlastním Linux stroji:
$ dmesg -T | grep -i -E 'out of memory|killed process'$ journalctl -k | grep -i oomŘádek pojmenovávající valheim_server je odpověď. Návratový kód 137 z kontejneru nebo správce služeb znamená totéž: zabito signálem SIGKILL, téměř vždy kvůli paměti. Swap v Linuxu a OOM killer vysvětluje, proč jádro vybírá právě ten proces, který vybírá.
Řešení v pořadí, v jakém je zkoušet:
- Dej serveru víc paměti. Dimenzování podle velikosti party a stáří světa je v článku kolik RAM potřebuje Valheim server.
- Odeber těžké módy na zkoušku. Obsahové módy přidávají prefaby a zabírají paměť; svět, který se jako vanilla načte a s módy zemře, má svou odpověď.
- Zkontroluj nekontrolovaný růst. Pokud
.dbnáhle narostlo, skutečným problémem může být něco ve světě - předměty zbylé po farmě, mód vytvářející objekty.
Na RE:NODE se server, který dosáhne limitu paměti, zastaví a čistě restartuje, místo aby ho nechal swapovat, takže uvidíš restart, ne server lezoucí šnečím tempem. Znamená to také, že zastavení kvůli paměti je zabití, ne uložení: vše od posledního uložení je ztraceno, což je další důvod držet -saveinterval krátký u velkého světa.
Když se pořád restartuje#
Jeden pád je hádanka; server padající při každém startu je smyčka a smyčka vyžaduje jiný přístup. Každý pokus přepíše log, může přepsat .old kopii světa něčím horším a na hostingu může spustit ochrany. Na RE:NODE hlídač pádů kontroluje každé dvě minuty a tři nevyžádané restarty za hodinu dají na stránku serveru varování a automaticky otevřou ticket; šest server pozastaví, dokud se na něj někdo nepodívá. Restarty, které jsi vyžádal, se nepočítají.
Takže když server cyklí:
- Zastav ho. Nenech ho dál zkoušet.
- Zkopíruj log a složku
worlds_localze serveru. - Změň jednu věc - odeber pluginy, obnov svět z
.old, přidej paměť - a spusť jednou.
Proč se tvůj herní server pořád restartuje a smyčky pádů herních serverů popisují obecnou metodu; příčiny specifické pro Valheim jsou ty výše.
Další selhání při startu#
Několik vzácnějších, stručně:
- Chybí `-nographics -batchmode`. Bez nich se headless Linux server může pokusit otevřít displej a zastavit se. Oba patří na každý spouštěcí řádek dedikovaného serveru.
- Nedokončená aktualizace. Aktualizace přerušená během stahování nechá nesourodé soubory. Oprav to příkazem
steamcmd +force_install_dir <dir> +login anonymous +app_update 896660 validate +quit. - Oprávnění. Složka serveru zkopírovaná jako root a spuštěná pod jiným uživatelem nemůže zapisovat svět ani log. Nastav složku pomocí
chown -Ruživateli, pod kterým server běží. - `-savedir` míří nikam. Cesta, která neexistuje nebo není zapisovatelná, zastaví ukládání a v některých instalacích i start. Valheim savedir a umístění souborů popisuje výchozí umístění.
FAQ#
Proč se můj Valheim server hned po startu zavře bez chyby?
Obvykle proto, že chyba tam je a proletěla: klasikou je pravidlo pro heslo. Spusť s -logFile nastaveným na cestu a čti soubor od začátku. Pokud je log opravdu useknutý uprostřed řádku, proces byl zabit zvenčí, nejčastěji kvůli paměti.
Je chyba steamclient.so vždy fatální?
Ne. Loader zkouší několik umístění a loguje selhání pro každé, které nemůže použít. Pokud další řádek říká, že se knihovna načetla, a server pokračuje načtením světa, ignoruj to. Záleží na tom, jen když se server zastaví hned potom.
Může mód zabránit startu vanilla serveru?
Jen pokud je v řetězci BepInEx. Vanilla Valheim složku BepInEx úplně ignoruje. Start vanilla skriptem je rychlý způsob, jak dokázat, jestli jsou problémem módy.
Můj svět se nenačte. Přijdu obnovou souboru .old o postup?
Přijdeš o to, co se stalo mezi posledními dvěma uloženími - při výchozím intervalu až třicet minut. To je obvykle mnohem méně než obnova denní zálohy, takže zkus nejdřív dvojici .old.
Kolik volného místa na disku Valheim server potřebuje?
Dost na svět několikrát: živé .db, jeho kopie .old a automatické zálohy leží vedle sebe. Několik gigabajtů volných navíc k instalaci je pro většinu světů pohodlných.


