Skip to content
Project Zomboid

Install a Project Zomboid server

The Project Zomboid dedicated server (App ID 380870) installs for free with SteamCMD on Windows or Linux. Plan 4 to 8 GB of RAM depending on players and mods, and 15 to 30 minutes. Build 41 is the stable branch; Build 42 (beta) worlds are incompatible with B41.

Last updated: 10/10/2026

The Project Zomboid dedicated server (App ID 380870) installs for free with SteamCMD on Windows or Linux. Plan 4 to 8 GB of RAM depending on players and mods, and 15 to 30 minutes. Build 41 is the stable branch; Build 42 (beta) worlds are incompatible with B41.

Step-by-step installation

  1. Pick the machine: 4 GB RAM minimum, more with many mods or players.

  2. Install SteamCMD.

  3. Install the server with app_update 380870 validate (anonymous login).

  4. Run start-server.sh (Linux) or StartServer64.bat (Windows).

  5. On first launch, enter the password for the admin account.

  6. Stop the server then edit Zomboid/Server/servertest.ini and servertest_SandboxVars.lua.

  7. Open UDP ports 16261 and 16262 (firewall, provider, router).

  8. Test by connecting to 127.0.0.1 (local) then to the public IP.

  9. Set up automatic start (systemd or scheduled task).

  10. Schedule updates, backups of Zomboid/ and restarts.

Requirements

  • 64-bit Windows or Linux (Ubuntu/Debian)
  • RAM: set with -Xmx in the launch script/JSON (e.g. -Xmx8g); Build 42 needs more
  • No Steam account needed to download (anonymous)

Local install (Windows)

Use the 64-bit launcher (StartServer64.bat), not the 32-bit one. Config files are created in C:\Users\<user>\Zomboid\Server\ (default server name: servertest). In game choose Join then 127.0.0.1.

C:\steamcmd\steamcmd.exe +force_install_dir C:\pzserver +login anonymous +app_update 380870 validate +quit
cd C:\pzserver
.\StartServer64.bat

Linux VPS install (Ubuntu/Debian)

Create a dedicated non-root user, install SteamCMD (Ubuntu: enable multiverse and i386), then install and run. Config lives in ~/Zomboid/Server/. The server name (file prefix) is chosen with -servername.

sudo adduser --disabled-password --gecos "" pz
sudo add-apt-repository multiverse && sudo dpkg --add-architecture i386 && sudo apt update
sudo apt install -y steamcmd
sudo -iu pz
/usr/games/steamcmd +force_install_dir /home/pz/server +login anonymous +app_update 380870 validate +quit
cd /home/pz/server && ./start-server.sh -servername servertest

Ports to open

DefaultPort (servertest.ini) is 16261 UDP; the next port (16262) is assigned automatically. Change DefaultPort to move the block. RCON (RCONPort, 27015 in the sample file) stays disabled until RCONPassword is set. Some guides also mention Steam UDP ports (8766-8767): not officially confirmed here, check your servertest.ini. On a home router, forward the ports (NAT); at OVH, Hetzner, Scaleway open them in the provider firewall/security group; test from another network.

  • 16261/UDP — game (DefaultPort)
  • 16262/UDP — DefaultPort + 1, assigned automatically
  • 27015/TCP — RCON (RCONPort, optional)

Linux firewall (ufw)

Allow SSH before enabling ufw.

sudo ufw allow OpenSSH
sudo ufw allow 16261:16262/udp
sudo ufw enable

Windows firewall

Administrator PowerShell:

netsh advfirewall firewall add rule name="Zomboid" dir=in action=allow protocol=UDP localport=16261-16262

systemd service (auto start)

File /etc/systemd/system/zomboid.service then sudo systemctl enable --now zomboid. On Windows, create a scheduled task “at startup” running StartServer64.bat.

[Unit]
Description=Project Zomboid Server
After=network-online.target
Wants=network-online.target

[Service]
User=pz
WorkingDirectory=/home/pz/server
ExecStart=/home/pz/server/start-server.sh -servername servertest
Restart=on-failure
RestartSec=15

[Install]
WantedBy=multi-user.target

Updates and backups

Stop the server, back up ~/Zomboid (config + world in Saves/Multiplayer), rerun app_update and restart. The game also offers automatic backups (BackupsCount, BackupsOnStart in servertest.ini).

sudo systemctl stop zomboid
tar czf ~/zomboid-backup-$(date +%F).tar.gz -C /home/pz Zomboid
sudo -u pz /usr/games/steamcmd +force_install_dir /home/pz/server +login anonymous +app_update 380870 validate +quit
sudo systemctl start zomboid
# crontab -e (root) : 0 5 * * * systemctl restart zomboid

List and find your server

Set Public=true and a PublicName to appear in the in-game list; otherwise players connect by IP:16261. Also add your server on game-rank.com/jeux/project-zomboid.

Troubleshooting

  • Cannot connect from the Internet: UDP 16261-16262 not open (firewall, provider or NAT).
  • Mods not loading: check that both WorkshopItems (numbers) and Mods (Mod IDs) are filled, with semicolons.
  • Out of memory / crash: raise -Xmx in the launch script or JSON, especially with many mods.
  • World missing or incompatible: Build 42 and Build 41 do not share worlds; stay on the same branch.
  • Cannot change the config: the files are in the user's Zomboid/Server/, not the install folder; edit while stopped.

Frequently asked questions

What is the Project Zomboid server App ID?
380870 (the game itself is 108600): steamcmd +login anonymous +app_update 380870 validate +quit.
Which ports should I open?
UDP 16261 (DefaultPort) and UDP 16262; TCP 27015 only if you enable RCON.
Where is the admin password set?
On first launch the console asks for the admin account password (access to all admin commands): store it safely.
Build 41 or Build 42?
Build 41 is the default stable branch; Build 42 is an optional beta branch and its worlds are not compatible. Check the active branch before migrating.

Tools for your Project Zomboid server

Project Zomboid
Project ZomboidOpen access
Generate servertest.ini and servertest_SandboxVars.lua for your Project Zomboid server: ports, mods, PvP, zombies, loot and survival.
ConfigurationSandboxModsOpen
Documentation
Project Zomboid
Project ZomboidOpen access
Organise the Mods, WorkshopItems and Map of your Project Zomboid server: load order, duplicates and invalid IDs detected.
ModsWorkshopOpen
Documentation