Container Image
docker pull ghcr.io/community-valheim-tools/valheim-server:1.4.0
Highlights
Servers stuck on update state 0x6 now recover
SteamCMD needs the depot manifest of the installed build to update an existing
installation, and it cached those manifests inside the container, where they were
lost on every re-creation. Without the cache it asked Steam for the old manifest,
and anonymous logins are only granted request codes for a branch's current
manifest — so once Valheim had been updated, the request failed with Access Denied
and the update job ended in state 0x6. Process uid and file ownership were never
the cause.
- The manifest cache now lives at
/opt/valheim/dl/depotcache, with
$HOME/Steam/depotcachesymlinked to it, so it survives container re-creation.
An existing cache is migrated and only removed once the copy succeeds; otherwise
it's left in place with a warning. - If Steam does deny the installed manifest,
appmanifest_896660.acfis moved aside
as.deniedand the update retried. SteamCMD then verifies the existing files and
downloads only the changed chunks. Recovery also applies to an already-running
server, and a failed download is never merged over the installation.
Fixes #758.
BepInEx patchers are synced from /config
write_bepinex_config() now syncs both plugins/ and patchers/, creating either
directory as needed since neither archive ships them any more. Patchers such as
HookGenPatcher previously needed a custom hook to install.
- BepInEx: plugins in
/config/bepinex/plugins/, patchers in/config/bepinex/patchers/ - ValheimPlus: plugins in
/config/valheimplus/plugins/, patchers in/config/valheimplus/patchers/
Fixes #392.
The /config sync now prunes removed plugins and patchers
The sync was additive-only: a plugin removed from /config stayed on the server
until the next merge. Each sync now records what it installed into
BepInEx/.synced_from_config, and the next sync removes exactly those entries once
they leave /config.
This is deliberately narrower than rsync --delete, which was tried and reverted
(#654, #658) because it removed ValheimPlus.dll from the plugins/ directory V+
ships it into (#657). Deleting everything absent from /config fails the same way
for files written there at runtime, such as HookGenPatcher's MMHOOK assemblies.
Upgrade note: nothing is deleted on your first start after upgrading. An install
with no .synced_from_config manifest prunes nothing and simply starts recording, so
plugins that came with the mod archive itself, and files a patcher generates at
runtime, are left alone. From the second sync onward, removing a plugin or patcher
from /config also removes it from the server directory.
What's Changed
- Fix updating older installations on new start, survive Steam refusing prior manifest (state 0x6) by @JustinTArthur in #812
- Sync BepInEx patchers and prune loadables removed from /config by @JustinTArthur in #811
Full Changelog: v1.3.0...v1.4.0