Project Zomboid Server Setup: SteamCMD, servertest.ini, Mods & RCON
How to stand up a Project Zomboid dedicated server: installing app 380870 with SteamCMD (anonymous login works), choosing Build 41 vs the Build 42 unstable branch without losing your save, the servertest.ini keys and both UDP ports that must be forwarded, raising the default Java heap, adding Workshop mods with WorkshopItems= and Mods=, and enabling the built-in Source RCON for remote admin.
Project Zomboid is one of the friendlier games to self-host - the dedicated server is a free, anonymous SteamCMD download and runs fine on modest hardware for a small group. The things that actually trip up new hosts are two required UDP ports, a Java heap that ships too small, the two-key mod config, and (right now) the Build 41 vs Build 42 branch choice. This guide covers all of them.
Installing the server with SteamCMD
The dedicated server is its own Steam app - 380870 ("Project Zomboid Dedicated Server"), separate from the game client (108600). Unlike DayZ, anonymous login works - you do not need an account that owns the game:
Start scripts are StartServer64.bat (Windows) and start-server.sh (Linux).
Build 41 vs Build 42
Build 41 (41.78) is the stable default branch and the safe choice for a public server.
Build 42 multiplayer lives on the "unstable" beta branch (since 42.13). To run it: +app_update 380870 -beta unstable validate. It is opt-in for a reason - check the current status before choosing it for anything you care about.
B41 and B42 saves are mutually incompatible and there is no converter. Switching the branch either way effectively means a fresh world - back up ~/Zomboid/ before ever touching the beta flag.
First launch and the admin account
On the very first launch the server console prompts you to set the admin password interactively - watch for it, it is easy to miss in the log scroll. On Linux you can pass it up front instead:
-servername selects which config set the server loads (default servertest). If you ever lose the admin password, the fix is offline: stop the server and edit the whitelist inside the SQLite database at Zomboid/db/<servername>.db (or remove the user from an existing admin session and reconnect).
Configuring servertest.ini
Config lives under ~/Zomboid/Server/ (Windows: %USERPROFILE%\Zomboid\Server\), all files prefixed with your server name:
servertest.ini - network, ports, RCON, mods, player cap, PVP.
servertest_SandboxVars.lua - gameplay rules: zombie population and lore, loot abundance, XP multipliers, day length.
servertest_spawnregions.lua / servertest_spawnpoints.lua - where players spawn.
The ini keys most hosts touch first: PublicName/PublicDescription, Password (join password; empty = public), MaxPlayers, PVP, Open (whitelist mode when false), and Public=true if you want the server visible in the in-game browser.
Ports to forward
Project Zomboid needs two UDP ports, and forwarding only one is the single most common "my server is invisible/closed" cause:
16261/UDP - the main game/query port (DefaultPort in the ini).
16262/UDP - the direct-connection port. It is always DefaultPort + 1 and is not separately configurable - if you move DefaultPort, the pair moves together.
All traffic is UDP - no TCP forwarding needed. Do not rely on the default UPnP: it silently fails on many routers and behind CGNAT/double-NAT (the log says "No UPnP-enabled Internet gateway found") - forward the ports manually.
RAM and the Java heap
PZ is a Java server and ships with a low heap (around 3 GB in ProjectZomboid64.json), which starts to lag and crash once mods and players scale up. Raise -Xmx in ProjectZomboid64.json (or the start script): 8 GB is a comfortable vanilla/light-mod setting, more for heavily modded servers - and leave a few GB free for the OS. CPU-wise the simulation is clock-speed-bound per tick, so fewer fast cores beat many slow ones.
Workshop mods
Mods on a dedicated server need two ini keys, both required:
WorkshopItems= - the numeric Workshop ids (from the mod's Steam URL). The server auto-downloads these at startup.
Mods= - the mod's internal id from its mod.info file (one Workshop item can contain several). Load order is left-to-right.
Both lists are semicolon-joined, no spaces. Forgetting one of the two keys (usually Mods=) is the top mod-failure mode - the download happens but nothing loads.
RCON for remote admin
Project Zomboid speaks the standard Source RCON protocol, so ordinary RCON clients work against it. In the ini:
RCONPassword is blank by default, which disables RCON - set it (long and random; anyone with it has admin). If you administer remotely, forward/allow the RCON port separately from the game ports.
MantaScope tracks the live Project Zomboid server list with population history, per-server rank, uptime and downtime alerts, plus decoded server attributes (PVP, mod count, mod list, VAC). Because PZ speaks standard Source RCON, you can claim your server on MantaScope and administer it from the browser - live player list, kick/ban, chat and console over the RCONPort you set above - alongside population graphs, scheduled messages, automations and Discord notifications.