PZ Server Incident Runbook (Build 42.19): Diagnose, Recover, Reopen
Build 42.19 incident response for connection failures, mod breakage, crash loops, desync, and damaged worlds. Use this page after something has gone wrong.
1. Stabilize before changing anything
- Stop new joins. Announce maintenance and temporarily restrict access so more clients do not write new state while you diagnose.
- Save cleanly if the console still responds. Run
/save, wait for completion, then use/quitfor a controlled shutdown. - Preserve the failed state. Before deleting or overwriting files, copy the current server config, world save, logs, and mod list to a dated incident folder.
- Write down the last known change. Game update, branch switch, mod update, INI edit, host migration, firewall change, and disk-full events each point to a different recovery path.
- Change one variable at a time. A five-fix restart may hide the cause and can make rollback impossible.
2. Classify the symptom
| What players see | First boundary to test | Do not start with |
|---|---|---|
| Nobody can reach the server | Is the server process still running, can a LAN client join, and did the public IP/firewall/NAT change? | Reinstalling mods or deleting the save. |
| One player cannot join | Compare branch, game build, username/access, and that client’s mod download state. | Restarting the whole host repeatedly. |
| “Getting server info” or connection timeout | Test Steam Relay versus direct IP; verify UDP 16261 and 16262 (or your custom pair). |
Opening long legacy port ranges. |
| Server starts, then fails on a mod | Compare the Workshop ID list, mod list, dependencies, and the last Workshop update. | Removing random save files. |
| Everyone rubber-bands or map chunks arrive late | Check CPU saturation, memory pressure, disk latency, upload loss, zombie density, and recent mod changes. | Assuming every report is a port-forwarding issue. |
| World loads with missing or rolled-back progress | Stop immediately and compare the active save folder, server name, timestamps, disk space, and backup set. | Letting players continue in the wrong world. |
3. What to collect before you change files
Record the incident
- Exact local time and server branch/build
- Whether Host, LAN, Steam Relay, and direct IP behave differently
- Last successful join and last clean shutdown
- First meaningful error plus the lines immediately around it
- CPU, memory, disk free space, and network loss during the event
Back up these folders together
- Server config:
Zomboid/Server/<name>.ini - Sandbox settings:
Zomboid/Server/<name>_SandboxVars.lua - World save:
Zomboid/Saves/Multiplayer/<name>/ - Current console/host logs
- The exact Workshop ID and Mod ID lists from the server config
A generic “connection failed” screenshot is rarely enough. Compare a working path versus a failing path: LAN versus internet, relay versus direct, vanilla test versus production mods, or current world versus a known-good backup.
4. Connection-failure branch
- Confirm the server is actually running. Check the server console and verify it reached the ready state instead of stopping on config or mod errors.
- Test locally. A LAN join that works while public joins fail points outside the game world: firewall, router, CGNAT, public IP, or relay path.
- Try the other connection path. Compare Steam invite/Relay with direct IP instead of treating them as the same test.
- Verify the configured UDP pair. Defaults are UDP
16261(game) and16262(Steam). If the server INI uses custom values, forward and allow those exact values. - Check every firewall layer. Router/NAT, operating-system firewall, container or VM rules, and hosting-provider security rules can fail independently.
- Retest from outside the home network. A phone hotspot or remote friend is a real external test; connecting to your own public address may be distorted by NAT loopback behavior.
Use the focused port-forwarding guide for router and Relay details, or Getting Server Info troubleshooting when discovery works but the join stalls.
5. Mod-failure branch
- Copy the production config and save before touching the mod list.
- Confirm every Workshop numeric ID has the intended internal Mod ID, with dependencies loaded first.
- Compare the failure time with Workshop update times and the game’s branch update.
- Reproduce in a disposable test server using the same config and mod order.
- If a recent update is responsible, restore the last known-good mod/config combination or remove only that mod in the test copy first.
- Never validate a mod-removal plan on the only copy of the live world; removed map or item mods can leave persistent data behind.
6. Lag, desync, and stalled-world branch
All players affected
- Inspect host CPU, memory pressure, disk latency, and outbound packet loss.
- Compare the event with player count, zombie density, vehicles, animals, and scheduled saves.
- Roll back the most recent mod or sandbox change in a test copy.
- Check that the host is not swapping or out of disk space.
One player affected
- Compare that client’s ping, packet loss, branch, and mod state.
- Ask whether the problem follows the character, location, or device.
- Test a different network route before changing server-wide limits.
- Do not raise memory blindly when only one connection is unstable.
Restarting can clear symptoms but also erases the best logs and metrics. Capture resource usage and log state first. For capacity planning after the incident, use the server memory guide.
7. World rollback and recovery
- Stop the server. Do not let more clients write to a world you may roll back.
- Archive the failed state. Keep it even if corruption seems obvious; it may contain recoverable player or map data.
- Select one coherent backup. Restore the matching server configuration and multiplayer world folder from the same backup point.
- Restore into a private test instance. Verify map chunks, players, vehicles, containers, mods, and spawn before exposing it publicly.
- Record the rollback point. Tell players exactly how much progress was lost and why the chosen backup is trusted.
- Keep the pre-restore copy. Do not overwrite your only failed-state archive with the first recovery attempt.
8. Reopen safely and close the incident
- Start privately with one admin and one ordinary test account.
- Verify join, spawn, movement, container access, vehicles, map streaming, and a clean save/restart cycle.
- Open to a small group before restoring the normal player cap.
- Publish what changed, what was rolled back, and what players should report.
- Turn the root cause into one preventive control: a monitored backup age, a staged mod update, a config diff, a branch pin, or a restore drill.
Keep this page as the incident console. For the routines that stop the next outage, continue with Server Admin Survival: preventive operations.