Project Zomboid Field guide

Project Zomboid Build 41 or Build 42: keep the server, clients and world together

Keep a Project Zomboid Build 41 server separate from Build 42: branch choice, complete profile backup and a matching client.

Project Zomboid Build 41 or Build 42: keep the server, clients and world together

Choose the world you need to preserve before selecting a Steam branch. An established Build 41 group and a new Build 42 group require separate compatibility decisions. Changing an executable does not convert the old world into a supported new one.

As checked on 18 October 2026, the publisher's 42.21 Stable announcement supersedes old advice that describes all Build 42 multiplayer as unstable. Treat this as dated release context: compare the versions actually available when maintaining your server.

This guide continues the Linux layout in our server setup article: account pz, installation /srv/pz/server, data /srv/pz/Zomboid, name servertest. The goal is either to keep that group's existing world playable or to create a genuinely separate Build 42 trial.

Decide whether you are preserving a world or starting one#

The developer's Build 42 transition announcement explicitly identifies legacy41 for players staying on Build 41 and states that Build 41 saves are incompatible with Build 42. It also documents a compatibility break between particular Build 42 releases. The major number alone is not a sufficient restore contract.

Write down three things together: the full server version, the full client version and the world last written by that version. Add the mod list and launch command. For an existing group that wants its old world, retain the matching legacy setup. For a new group, choose current stable and a new world. Reserve unstable for a separate test whose possible loss the group accepts.

Do not rename an old save into a new server's directory to see what happens. Likewise, do not downgrade an executable after a newer version has written to the only copy of its data. Recovery means restoring the original matched installation and data, not reversing a conversion.

Keep the two worlds separate. A branch selection is not a world migration tool.

Inventory the running installation#

From an administrative SSH session:

bash
getent passwd pz
sudo -iu pz sh -c 'printf "%s\n" "$HOME"; ls -ld /srv/pz/server /srv/pz/Zomboid'
sudo -iu pz sed -n '1,100p' /srv/pz/server/start-server.sh
sudo -iu pz find /srv/pz/Zomboid/Logs -maxdepth 2 -type f -printf '%TY-%Tm-%Td %TH:%TM %p\n'

Read the startup version in the current log. Check the launcher actually used, its working directory, server name and packaged runtime. Record any heap edits before Steam validation replaces installation files. Do not print passwords or attach the whole configuration to a public support post.

On every player's computer, inspect Steam's selected game version and the version shown by the launched client. A player may have changed the branch without allowing the download to finish. Resolve this discrepancy before changing networking or removing mods.

Freeze and archive the complete old state#

Warn players and prevent automatic restarts in your own supervisor. In the server console, send save, wait for saving, then quit and wait for the shell to return. Confirm that the process and its game sockets are gone. If your supervisor restarts it, resolve that first.

The following private archive includes both installation and persistent server data. It deliberately stops if a likely game process or either default UDP port remains active; substitute actual ports before using it:

bash
(
set -eu
pz_processes=$(pgrep -u pz -f 'zombie.network.GameServer|ProjectZomboid64|(^|/)java( |$)' || test "$?" -eq 1)
if [ -n "$pz_processes" ]; then
  printf '%s\n' 'Stop the game and confirm a completed save first.' >&2
  exit 1
fi
pz_sockets=$(sudo ss -H -lun 'sport = :16261 or sport = :16262')
if [ -n "$pz_sockets" ]; then
  printf '%s\n' 'Expected game ports are still in use.' >&2
  exit 1
fi
sudo install -d -o root -g root -m 700 /var/backups/pz
pz_snapshot=$(sudo mktemp -d /var/backups/pz/pre-branch-XXXXXXXX)
sudo tar -czf "$pz_snapshot/server-and-data.tar.gz" -C /srv/pz server Zomboid
sudo chmod 600 "$pz_snapshot/server-and-data.tar.gz"
sudo tar -tzf "$pz_snapshot/server-and-data.tar.gz" >/dev/null
printf 'Private archive directory: %s\n' "$pz_snapshot"
)

The checks are conservative and do not themselves prove a graceful save; the preceding console confirmation remains necessary. Preserve the build record with the archive and copy it off the machine through a protected transfer. Settings and databases can contain credentials or player information. Archive readability alone does not prove restoration.

Select a branch without overwriting the preserved installation#

For Build 41 clients, open Steam → Properties → Game Versions & Betas and select the developer-documented legacy41 option if it remains available. For the dedicated server, inspect its own Steam app branches rather than assuming every client branch also exists under app 380870:

bash
sudo -iu pz /usr/games/steamcmd +login anonymous +app_info_update 1 +app_info_print 380870 +quit

Check the returned branch metadata and the publisher's current instructions before downloading. If the required branch is unavailable, stop; your retained compatible installation is more useful than a guessed branch name. Keep a legacy server out of an automatic updater that silently follows public.

For a new Build 42 trial, use a separate Linux account and HOME, for example pz42test and /srv/pz42test, with a separate installation. Follow the setup guide using those replacements throughout. Generate a new configuration and world; do not copy the old Build 41 data into that HOME. Keep the original server stopped during a same-port trial, or isolate the trial's network completely.

Verify the intended group before admitting everyone#

First join the vanilla trial with one matching client. Then test the selected multiplayer-compatible mods on that new world. A Workshop item supporting Build 42 does not automatically support every minor release or multiplayer mode.

For a retained legacy world, verify recognizable locations and a normal player's character after restart. For rollback, stop the trial and restore the untouched original installation and its complete data with correct ownership and server name. Never merge the trial's databases into the old backup. Keep the trial separately until the group accepts the result, then record which installation, branch and world are now authoritative.