Project Zomboid Build 42 - server file paths and what changed from Build 41
The Indie Stone moved the Zomboid data directory in Build 42. On Build 41 every file your server cared about lived under the install tree at ~/prz/bin/Zomboid/. On Build 42 the data directory moved out one level and sits at ~/Zomboid/, separate from the binary install. Same shape underneath, different parent.
If you have asked the support helper "where is the settings.ini?" and the answer that worked on your last server suddenly does not, this is why. This page is the side-by-side map of every path that moved, plus the few that did not.
The headline change
| Path category | Build 41 (stable) | Build 42 (unstable) |
|---|---|---|
| Data root | ~/prz/bin/Zomboid/ | ~/Zomboid/ |
| Server config (servertest.ini) | ~/prz/bin/Zomboid/Server/servertest.ini | ~/Zomboid/Server/servertest.ini |
| Sandbox vars | ~/prz/bin/Zomboid/Server/servertest_SandboxVars.lua | ~/Zomboid/Server/servertest_SandboxVars.lua |
| Spawn points | ~/prz/bin/Zomboid/Server/servertest_spawnpoints.lua | ~/Zomboid/Server/servertest_spawnpoints.lua |
| Spawn regions | ~/prz/bin/Zomboid/Server/servertest_spawnregions.lua | ~/Zomboid/Server/servertest_spawnregions.lua |
| Player saves | ~/prz/bin/Zomboid/Saves/Multiplayer/servertest/ | ~/Zomboid/Saves/Multiplayer/servertest/ |
| Logs | ~/prz/bin/Zomboid/Logs/ | ~/Zomboid/Logs/ |
| Local mods folder | ~/prz/bin/Zomboid/mods/ | ~/Zomboid/mods/ |
| Workshop content cache | ~/prz/bin/steamapps/workshop/content/108600/ | ~/prz/bin/steamapps/workshop/content/108600/ (unchanged; Steam still writes here) |
Note the last row. The Workshop content cache is managed by SteamCMD and stays under the install tree on both branches. Build 42 reads from the same cache but writes parsed mod data into the new data root. This split is why "I subscribed but the mod won't load" is a common B42 question - the file is downloaded, but the load index lives somewhere else now.
Anatomy of the new data root
~/Zomboid/
โโโ Server/
โ โโโ servertest.ini # server config: port, password, Mods=, WorkshopItems=
โ โโโ servertest_SandboxVars.lua # zombie speed, loot rarity, all sandbox settings
โ โโโ servertest_spawnpoints.lua # which buildings spawn players
โ โโโ servertest_spawnregions.lua # which regions and seasons are active
โโโ Saves/
โ โโโ Multiplayer/
โ โโโ servertest/ # the actual world (chunks, players, vehicles, animals)
โโโ mods/ # local mods (non-Workshop)
โโโ Logs/ # crash and debug logs
โโโ workshop/ # parsed workshop metadata (NOT the .zip cache)
The two pieces that catch customers out are Server/servertest.ini (used to be under prz/bin; now under ~/) and Saves/Multiplayer/servertest/ (same name as before, new parent).
Mods= and WorkshopItems= - both lines are required
The B42 servertest.ini has the same dual-line shape as B41:
Mods=ModID1;ModID2;ModID3
WorkshopItems=2447729538;2402057349;2851550037
- WorkshopItems is the list of Steam Workshop numeric IDs to download.
- Mods is the list of internal mod IDs to actually load.
If either line is missing or mismatched, the mod will not load even though the Workshop cache contains the files. See PZ mods installed but not loading for the full debug flow.
What happens when you switch branches
Switching from stable to unstable (or back) in the Installation tab does not move data. The two branches operate on different directory trees, so:
- Your B41 saves stay at
~/prz/bin/Zomboid/. B42 will not see them. - A fresh B42 world starts in
~/Zomboid/. B41 will not see it. - Sandbox settings, mod lists, and spawn configs all need to be set up again per branch.
This is intentional. The save formats are not cross-compatible, and the dev team has stated more than once that an in-place upgrade is not supported. Treat them as two independent servers that happen to share a binary.
Workshop mods: subscribe vs download
On B42 the Workshop client downloads .zip archives to ~/prz/bin/steamapps/workshop/content/108600/<workshop_id>/ as before. The server reads them from there and writes parsed metadata into ~/Zomboid/workshop/. The first run after adding a new WorkshopItems= entry triggers the download; subsequent runs use the cached copy.
If a mod is in the cache but not loading on B42:
- Check the
Mods=line lists the mod'smod.infoID, not the Workshop numeric ID. - Check the mod's
mod.infofile inside the cache - it lists which game versions it supports. Many mods marked B41-only will not load on B42. - Check
~/Zomboid/Logs/<date>_DebugLog-server.txtforLoading mod:success orMod not found:failure lines.
Reset world without reinstalling
To wipe a B42 world but keep mods and config:
rm -rf ~/Zomboid/Saves/Multiplayer/servertest/
From the panel: delete the servertest folder under Saves/Multiplayer through the File Manager and restart the server. The next boot generates a fresh world using the current sandbox vars and spawn config.
Backup discipline on B42
Auto-backups on Supercraft snapshot the whole game directory tree. The default backup config covers both ~/prz/ and ~/Zomboid/ on B42 servers, so a panel restore brings back the data root with the saves. If you take a manual backup with an external tool, include both trees explicitly.
One more thing: the local mods folder vs the Workshop folder
Both branches have a local mods/ folder for non-Workshop mods (mods you upload manually). On B42 it is ~/Zomboid/mods/. Place a mod's folder directly inside, and list its mod ID in the Mods= line of servertest.ini. The Workshop chain does not apply to local mods - WorkshopItems= only matters for Workshop subscriptions.
Local mods are useful for testing your own mod, hosting a private community mod, or running a mod that was removed from the Workshop but you still have a copy of.
Related guides
- PZ unstable branch - what to expect
- PZ mods installed but not loading
- B42 performance tuning
- Build 42 stable migration guide (when B42 promotes)
Running a B42 server and want the file layout to just work? See PZ plans. Branch switching is one click and the File Manager surfaces the right tree for whichever branch is active.