How to Set Up a Project Zomboid Server
Build a persistent Project Zomboid world for your survivors. Install with SteamCMD, set the memory and admin password, and open port 16261.
Project Zomboid's persistent world is perfect for a dedicated server โ the map keeps evolving, loot and zombies stay where you left them, and your group can drop in and out. Here's how to run one on Linux.
Sizing your server
Zomboid load scales with map exploration and player count:
- 2โ4 players: 4 GB RAM.
- 6โ8 players: 6โ8 GB RAM.
- The server pre-allocates a Java heap, so give the process its own memory budget.
Step 1: Install SteamCMD
sudo add-apt-repository multiverse -y
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install steamcmd screen -y
Step 2: Download the server
sudo adduser --disabled-password zomboid
sudo su - zomboid
steamcmd +force_install_dir ./pz-server +login anonymous +app_update 380870 validate +quit
App ID 380870 is the Project Zomboid dedicated server.
Step 3: First launch sets the admin password
cd pz-server
screen -S pz
./start-server.sh
On first run it prompts you to set an admin password. Enter one, and the server generates its config files, then loads the world. Detach with Ctrl+A then D.
Step 4: Adjust the memory allocation
Edit ProjectZomboid64.json (or the -Xmx line in the start script) to give the server enough heap โ for example -Xmx6g for a 6-player server. Too little RAM causes stutter as the map streams in.
Step 5: Tune the server settings
The main config lives in ~/Zomboid/Server/servertest.ini. Useful settings:
PublicNameandPublicDescription.Passwordโ the join password for players.MaxPlayers.PauseEmpty=trueโ pauses the world when nobody's online to save CPU.ModsandWorkshopItemsโ for Steam Workshop mods.
Step 6: Open the ports
Zomboid uses UDP ports 16261 and 16262:
sudo ufw allow 16261:16262/udp
Step 7: Connect
In game, choose Join โ enter IP, use port 16261 and the server password. Admins log in with the account whose password you set on first launch.
Adding Workshop mods
List Workshop Mod IDs in the Mods line and Workshop item IDs in WorkshopItems โ they're different numbers, both found on each mod's Workshop page. The server downloads them on next start. Every player must subscribe to the same mods for the world to load. Popular additions like more traits, vehicles and map expansions all install this way.
Backups
Your world and player data live under ~/Zomboid/Saves/ and ~/Zomboid/db/. Back up both before each restart:
cp -r ~/Zomboid/Saves ~/Zomboid/db ~/backups/pz-$(date +%F)
Zomboid worlds represent hours of survival, so treat backups as essential โ a corrupted save on a hard crash is a real risk without them.
Sandbox settings shape everything
Project Zomboid's difficulty lives in its sandbox settings, stored alongside the server config as servertest_SandboxVars.lua. This is where you set zombie population, speed (shamblers vs sprinters), respawn rules, loot rarity, and how fast skills and hunger progress. A server with sprinting hordes and rare loot is a brutally different game from shamblers with abundant supplies โ agree with your group before you commit, since some changes don't retroactively affect explored areas.
Admin commands
Log in with the admin account you set on first launch, then use the in-game admin panel or console commands like /kick, /ban, /setaccesslevel to promote moderators, and /save to force a world save. /players lists who's online.
Common issues
- Server won't accept connections: confirm both UDP 16261 and 16262 are open.
- Mods fail to load:
Mods(mod IDs) andWorkshopItems(item IDs) are different numbers โ set both correctly. - High CPU when empty: set
PauseEmpty=trueso the world pauses with no players online.
The easy path
Zomboid streams map cells from disk constantly as players move, so NVMe storage keeps the world smooth and stutter-free. Nxeon's VPS delivers that plus full root for tuning the Java heap and installing Workshop mods, and a one-click Project Zomboid deploy handles SteamCMD and first-run setup so you can get straight to surviving Kentucky.