Project Zomboid ยท Server setup

How to set up a Project Zomboid server from scratch

Full setup walkthrough for a Project Zomboid dedicated server (Build 41 or Build 42): deploy via SteamCMD, configure servertest.ini, edit sandbox vars in servertest_SandboxVars.lua, add map regions via servertest_spawnregions.lua, install Workshop mods and map add-ons (Raven Creek, Bedford Falls, Grapeseed, North Muldraugh), set up admin accounts and whitelist, and fix the common PZ errors.

What you need first

  • An active Project Zomboid plan on Fatality Servers. See our Project Zomboid hosting plans.
  • A Steam copy of Project Zomboid for each player.
  • Enough RAM โ€” PZ's server is Java-based and single-threaded on the critical path. 6-8 GB for 4-8 players on vanilla Knox County; 12-16 GB for 20+ players on a mod-heavy server with extended map mods.
  • A basic SFTP client (FileZilla, WinSCP). PZ uses plain .ini and Lua files.
๐Ÿ’ก

Sizing note: PZ's main server thread is single-threaded, so raw CPU clock matters more than core count. A high-clock Ryzen core handles 20+ players on vanilla comfortably; heavy map mods (Raven Creek + Bedford Falls + Grapeseed) can double RAM needs since each map region loads actively-visited chunks into memory.

Build 41 vs Build 42

Two active PZ branches:

  • Build 41 โ€” the stable branch. What 95% of servers run. Mod ecosystem is enormous and battle-tested.
  • Build 42 โ€” the unstable/experimental branch. Major engine changes: animals, basement support, new crafting system, new lighting. Breaks many Build 41 mods; a smaller but growing pool of B42-compatible mods is emerging.

Our template asks which branch you want on first deploy. Swap anytime from the panel's Beta dropdown (triggers a SteamCMD re-download). Changing branches wipes your save โ€” export backups first.

โš ๏ธ

Mods are branch-specific. A Build 41 mod will almost never load cleanly on Build 42 and vice-versa. Before subscribing, check the Workshop page's tags โ€” most authors label B41-only, B42-only, or "both". Mixed mod lists = crashes.

Deploy the server (1-click)

Our PZ template runs SteamCMD to pull the dedicated server (Steam App ID 380870), generates default servertest.* config files, and opens UDP 16261 (game) + UDP 16262 (steam) on your plan's IP.

  1. Pick the PZ template at checkout

    On the Project Zomboid hosting page, pick a plan. Starter fits 4-8 players on vanilla; Community 16-32 players with standard mods; Flagship for heavy multi-map modded runs.

  2. Pick build (41 / 42)

    Template asks. Pick one.

  3. Wait for SteamCMD

    Server binary is ~3 GB. First install takes 3-5 minutes.

  4. Confirm the server is listening

    [zomboid] loading RakNet from libRakNet64.so
    [zomboid] Server Steam ID 90123456789012345
    [zomboid] setting breakpad minidump AppID = 108600
    [zomboid] SERVER STARTED
    [zomboid] Type 'help' for list of server commands
    [zomboid] Listening to connections on port 16261

File layout & where things go

/
โ”œโ”€โ”€ ProjectZomboid64 (Linux) or StartServer64.bat (Windows)
โ”œโ”€โ”€ projectzomboid.log            โ€” main server log
โ””โ”€โ”€ ~/Zomboid/                    โ€” config + save files (NOT the server root!)
    โ”œโ”€โ”€ Server/
    โ”‚   โ”œโ”€โ”€ servertest.ini        โ€” main config
    โ”‚   โ”œโ”€โ”€ servertest_SandboxVars.lua   โ€” gameplay tuning
    โ”‚   โ”œโ”€โ”€ servertest_spawnregions.lua  โ€” map add-on regions
    โ”‚   โ””โ”€โ”€ servertest_spawnpoints.lua   โ€” spawn coord overrides
    โ”œโ”€โ”€ db/
    โ”‚   โ””โ”€โ”€ servertest.db         โ€” player database (SQLite)
    โ”œโ”€โ”€ Saves/Multiplayer/
    โ”‚   โ””โ”€โ”€ servertest/           โ€” the actual world save
    โ”‚       โ””โ”€โ”€ map_*.bin
    โ”œโ”€โ”€ Logs/                     โ€” log archive
    โ””โ”€โ”€ mods/                     โ€” manually-installed mods (rare; usually Workshop)
โš ๏ธ

Configs live in ~/Zomboid/Server/, not in the server install folder. This trips up first-time admins constantly. The default server name is servertest, so all config files are prefixed with servertest_. If you rename the server in servertest.ini, the config FILES stay named servertest_* โ€” it's the in-game display name that changes.

Core servertest.ini settings

Edit ~/Zomboid/Server/servertest.ini. Plain key=value pairs:

# --- Server identity ---
PublicName=My PZ Server [EU] - Mild Mods
PublicDescription=Low-pop community vanilla-plus. 2x XP, 3-day sleep.
MaxPlayers=32
Open=true
Public=true
PauseEmpty=true
AutoCreateUserInWhiteList=false

# --- Passwords ---
Password=
AdminPassword=change-me-strong
ServerPlayerID=

# --- Spawn / map ---
Map=Muldraugh, KY
SpawnPoint=0,0,0
SpawnItems=
StartYear=1
StartMonth=7
StartDay=9
StartTime=2

# --- PVP / safety ---
PVP=true
SafetySystem=true
ShowSafety=true
SafetyToggleTimer=2
SafetyCooldownTimer=3
AllowCoop=true
PlayerSafehouse=true
AdminSafehouse=false
SafehouseAllowTrepass=true
SafehouseAllowFire=true
SafehouseAllowLoot=true
SafehouseAllowRespawn=false
SafehouseDaySurvivedToClaim=0
SafeHouseRemovalTime=144
SafehouseAllowNonResidential=false

# --- Network ---
DefaultPort=16261
UDPPort=16262
SteamPort1=8766
SteamPort2=8767
SteamVAC=true
ServerBrowserAnnouncedIP=

# --- RCON ---
RCONPort=27015
RCONPassword=change-me-rcon
DiscordEnable=false
DiscordToken=
DiscordChannel=
DiscordChannelID=

# --- Mods (comma-separated Workshop IDs + mod folder names) ---
WorkshopItems=2659216714;2392709985;2478247379
Mods=ModManager;BuildingMenu;MoreBuild

# --- Map extension (map mods) ---
Map=Muldraugh, KY

# --- Logging / admin ---
ServerWelcomeMessage=<RGB:1,0.8,0> Welcome to My PZ Server! Rules in MOTD.
LoginQueueEnabled=false
LoginQueueConnectTimeout=60

# --- Gameplay quickies ---
AllowNonAsciiUsername=false
BanKickGlobalSound=true
ServerShutdownGraceTimer=10
AllowDestructionBySledgehammer=true
ServerSurvivorsXpMultiplier=1.0
UPnP=false
VoiceEnable=true
VoiceMinDistance=10.0
VoiceMaxDistance=100.0
Voice3D=true
GlobalChat=true

Values most people tweak:

  • PublicName โ€” server browser name. 50 chars.
  • MaxPlayers โ€” slot count. Match your plan.
  • Open=false + a Password โ€” private server.
  • Public=true โ€” list on PZ server browser. false = invite-only.
  • PauseEmpty=true โ€” pause the sim when everyone is offline. Saves massive CPU on small plans; means no zombies wander or plants die overnight.
  • PVP=false โ€” safer default for community servers; safety toggle still prevents accidental kills.
  • WorkshopItems / Mods โ€” mod configuration (see Mods section).

Sandbox vars โ€” gameplay tuning

The juicy stuff lives in ~/Zomboid/Server/servertest_SandboxVars.lua. This is a full Lua table of gameplay parameters โ€” hundreds of them. Highlights:

SandboxVars = {
    VERSION = 5,
    Zombies = 3,                   -- 1=Insane 2=HighPop 3=Normal 4=Low 5=None
    Distribution = 1,              -- 1=Urban (vanilla) 2=Roaming
    DayLength = 3,                 -- 1=15min 2=30min 3=1hr 4=2hr 5=3hr 6=4hr 7=5hr
    StartYear = 1, StartMonth = 7, StartDay = 9, StartTime = 2,
    WaterShut = 2, ElecShut = 2,   -- 1=Instant ... 6=VeryLong, shutoff timing
    WaterShutModifier = 14,
    ElecShutModifier = 14,
    FoodLoot = 2, WeaponLoot = 2, OtherLoot = 2,   -- 1=ExtremelyRare 6=Abundant

    Temperature = 3, Rain = 3,     -- weather severity
    ErosionSpeed = 3,
    ErosionDays = -1,              -- -1 = unlimited erosion
    XpMultiplier = 1.0,
    ZombieAttractionMultiplier = 1.0,
    VehicleEasyUse = false,
    Farming = 3,
    CompostTime = 2,
    StatsDecrease = 3,             -- hunger/thirst/boredom rate
    NatureAbundance = 3,

    Alarm = 4, LockedHouses = 6,
    StarterKit = false,
    Nutrition = true,
    FoodRotSpeed = 3,
    FridgeFactor = 3,

    LootRespawn = 1,               -- 1=None 2=Every Day 3=Week 4=Two Weeks 5=Month
    SeenHoursPreventLootRespawn = 0,
    TimeSinceApo = 1,              -- days since outbreak
    PlantResilience = 3,
    PlantAbundance = 3,
    EndRegen = 3,
    Helicopter = 2,                -- 1=Never 2=Sometimes 3=Often
    MetaEvent = 2, SleepingEvent = 1,
    GeneratorSpawning = 3, GeneratorFuelConsumption = 1.0,

    ZombieLore = {
        Speed = 2,                 -- 1=Fast 2=Fast Shamblers 3=Shamblers
        Strength = 2,
        Toughness = 2,
        Transmission = 1,          -- 1=Blood+Saliva 2=Saliva 3=None
        Mortality = 5,             -- time to zombify
        Reanimate = 3,
        Cognition = 3,             -- 1=Smart 2=Navigates 3=Basic
        CrawlUnderVehicle = 3,
        Memory = 3,
        Decomp = 1,
        Sight = 2, Hearing = 2, Smell = 2,
        ThumpNoChasing = 1,
        ThumpOnConstruction = true,
        ActiveOnly = 1,            -- 1=Both 2=Night 3=Day
        TriggerHouseAlarm = true,
        ZombiesDragDown = true,
        ZombiesFenceLunge = true,
    },
    ...
}

Most-tweaked values:

  • Zombies โ€” population multiplier. 3 (Normal) is vanilla; drop to 4 (Low) for community-friendly runs.
  • DayLength โ€” time scale. 1 hour per day (3) is standard; 2 hour / 3 hour common for long-session groups.
  • XpMultiplier โ€” 1.0 vanilla, 2.0-3.0 is "boosted but not silly".
  • LootRespawn โ€” 1 (none) for hardcore, 3 (weekly) for community.
  • WaterShut / ElecShut โ€” how many in-game days before utilities cut. Combine with the Modifier values for exact day counts.
  • ZombieLore.Speed โ€” 1 = full sprint (Romero would cry), 2 = fast shamblers (vanilla), 3 = classic shamblers (casual).
๐Ÿ’ก

Use in-game host to prototype, then copy out. Host a Host game from your own client, tweak sandbox vars in the GUI until it feels right, then copy the resulting SandboxVars.lua from your local save directory up to the server. Much faster than editing the Lua by hand and guessing values.

Spawn regions & map add-ons

Map mods (Raven Creek, Bedford Falls, Grapeseed, Petroville, North Muldraugh) each add new map regions, but players can only spawn in a region if it's listed in servertest_spawnregions.lua:

function SpawnRegions()
    return {
        { name = "Muldraugh, KY",      file = "media/maps/Muldraugh, KY/spawnpoints.lua" },
        { name = "West Point, KY",     file = "media/maps/West Point, KY/spawnpoints.lua" },
        { name = "Rosewood, KY",       file = "media/maps/Rosewood, KY/spawnpoints.lua" },
        { name = "Riverside, KY",      file = "media/maps/Riverside, KY/spawnpoints.lua" },
        { name = "Raven Creek",        file = "media/maps/Raven Creek/spawnpoints.lua" },
        { name = "Bedford Falls",      file = "media/maps/BedfordFalls/spawnpoints.lua" },
    }
end

Each mod's Workshop description tells you the exact entries to add here. Save, restart, map mod's regions show up on the character-creation screen.

Multi-map compositing

Multiple map mods can co-exist if their map tiles don't overlap. Compatibility is a known community spreadsheet โ€” search "PZ map merge sheet" for a current version. Popular compatible combo for 2026:

Muldraugh + West Point + Rosewood + Riverside + March Ridge    (vanilla Knox County)
  + Raven Creek                (isolated coastal city, no overlap)
  + Bedford Falls              (north of vanilla, minor overlap)
  + Grapeseed                  (south, tight integration with Muldraugh)

Installing Workshop mods

PZ mods come from the Steam Workshop. SteamCMD downloads them automatically when listed in servertest.ini.

  1. Find the Workshop ID and Mod ID

    On the Workshop page:

    • Workshop ID โ€” from the URL: ?id=2392709985.
    • Mod ID โ€” the internal folder name, shown in the Workshop page's description (usually). If not, subscribe โ†’ open ~/Zomboid/mods/ after launching once.
  2. Add both to servertest.ini

    WorkshopItems=2659216714;2392709985;2478247379
    Mods=ModManager;BuildingMenu;MoreBuild

    The lists must be in the same order and the same length. Separator is ; not ,.

  3. Add map regions (if mod is a map)

    Edit servertest_spawnregions.lua as shown above.

  4. Restart

    On boot, SteamCMD downloads any missing Workshop items. First boot with new mods takes 30-180 seconds extra.

Popular must-have mods

  • ModManager + ModManager: Server โ€” lets players see the server's required mod list
  • Simple Overhaul: Traits & Occupations (SOTO) โ€” adds dozens of new trait choices
  • Brita's Weapon Pack + Brita's Armor Pack โ€” hundreds of new guns / armor
  • Building Menu + More Build โ€” extensive base-building additions
  • Autotsar Trailers + Filibuster Rhymes' Used Cars โ€” vastly more vehicles
  • True Actions Dancing โ€” emotes + dancing
  • Raven Creek / Bedford Falls / Grapeseed โ€” map expansion

Admin accounts & whitelist

PZ has its own user database (SQLite). Admin accounts are created via the server console or RCON.

Create the initial admin

On first boot, the console prompts you for an admin username + password โ€” those become the first admin account. If you missed the prompt, run in console:

adduser <username> <password>
setaccesslevel <username> admin

Access levels: none, observer, gm, overseer, moderator, admin. Admins have full control; moderators can kick/ban but not spawn items.

Whitelist

Set Open=false in servertest.ini, then add players via console:

adduser <username> <password>

Alternatively set AutoCreateUserInWhiteList=true to let first-come players auto-register their own accounts, then turn it off once your community is seeded.

RCON & in-game admin

PZ supports standard Source RCON. Set in servertest.ini:

RCONPort=27015
RCONPassword=change-me-rcon

Connect with any RCON client (mcrcon, rcon-cli). Common commands:

players                          - List online players
kick <user>                      - Boot a player
ban <user>                       - Ban by username
banid <steamid>                  - Ban by Steam64
save                             - Force a world save
quit                             - Graceful shutdown (saves)
servermsg "text"                 - Broadcast
additem <user> "Base.Axe"        - Give an item
addxp <user> <skill> <amount>
teleport <user1> <user2>         - TP user1 to user2
thunder <on|off>                 - Force storm
changeoption SafehouseAllowFire false   - Change .ini option live

In-game, admins press Esc โ†’ Admin Panel for the GUI version of most of this.

Connect and test

  1. Launch Project Zomboid

    From main menu: Join Server.

  2. Add your server

    Bottom left: Add to Favorites. Fill in:

    Server name:  My PZ Server (display only)
    IP:           YOUR-SERVER-IP
    Port:         16261
    Account:      (your PZ account username)
    Password:     (the password you set with adduser)
  3. Or browse via Internet tab

    With Public=true, your server appears in the Internet tab 2-5 minutes after boot. Filter by name.

  4. Smoke-test as admin

    Log in โ†’ Esc โ†’ Admin Panel โ†’ try "Teleport", "Give Item", "Toggle God Mode".

Common errors and fixes

"Your mods are not compatible with the server"

Client has mods the server doesn't, or different versions. Fixes:

  • Workshop unsubscribe-resubscribe on the mismatching mod
  • Make sure the server's WorkshopItems and Mods lists match in ORDER
  • Cross-branch mods (B41 mod on B42 server) won't work โ€” branch-match strictly

Server doesn't show in browser

  • Public=false โ€” flip to true
  • Firewall blocking UDP on 16261/16262/8766/8767 โ€” check panel firewall
  • Wait 2-5 minutes โ€” PZ's master list indexing is slow
  • Try direct-connect (Favorites tab) first to rule out the server being down

"Failed to connect to server"

  • Wrong port โ€” double-check DefaultPort in servertest.ini matches what you're entering
  • SteamVAC issue โ€” server needs all four ports open (16261, 16262, 8766, 8767)
  • Server's ServerPlayerID got reset โ€” delete it from servertest.ini, restart, PZ will regenerate

Mods stuck in "downloading from Workshop"

SteamCMD is rate-limited or the Workshop item is huge.

  • Wait โ€” a 2 GB Workshop item on a cold cache takes 5-10 minutes
  • Check console for RequestWorkshopItem errors
  • Our panel has a "Clear Workshop Cache" button if a download gets stuck partway

Server crashes with "OutOfMemoryError"

  • Increase JVM heap via the panel's Memory slider โ€” default is 8 GB; many modded servers want 12+
  • Edit the startup script to pass -Xmx12g (our panel exposes this as a setting)
  • Too many map mods loaded at once โ€” PZ loads every active cell's entities into RAM; trim the mod count or map add-ons

Client save desync / can't see objects placed by others

Known PZ multiplayer issue โ€” client and server diverge on object state. Have the affected player:

  1. Log out and log back in
  2. If persists: delete local map cache (%username%/Zomboid/Multiplayer/<server-ip>_<port>/) and rejoin

World save corrupted

Rollback from the panel's backup tab. All managed PZ plans ship with 3x daily auto-snapshots of ~/Zomboid/Saves/ + 30-day retention. If the latest snapshot is also bad, open a ticket and we'll try to repair individual map cells.

Player lag in high-density zombie areas

  • Lower Zombies sandbox var from 3 to 4 (Low)
  • Set ZombieLore.ActiveOnly=3 (active at night only) to halve world-sim load
  • Raw single-thread CPU limit โ€” upgrade plan to a higher-clock tier

Heli events / meta events never trigger

  • Sandbox var Helicopter=1 (Never) or MetaEvent=1 (Never) โ€” bump to 2 or 3
  • Server uptime matters โ€” helis only spawn after X in-game days; if you wipe nightly they may never trigger

Stuck on something specific? Email support with your server IP, the last 200 lines of projectzomboid.log, and your servertest.ini โ€” we'll usually have an answer within the hour.