Project Zomboid

PlatformSupportNotes
Linux✅ NativeFull support with Java
Windows✅ NativeFull support

Project Zomboid

Project Zomboid is a sandbox zombie survival game with cooperative multiplayer. This guide covers complete server setup, configuration, mod support, and administration on Linux.

  • RAM: 4GB minimum, 6GB+ recommended
  • vCPU: 2+ cores (scales with player count and mods)
  • Disk Space: 10GB+ (game ~2GB, saves and mods vary)
  • Network: Stable connection, ~4-8 Mbps for 16 players

RAM usage scales significantly with player count and active mods. Start with 6GB for 8-16 players, add 1-2GB per 8 additional players.

02

Prerequisites

  • Linux server (Ubuntu 20.04+ recommended)
  • SSH access
  • Steam account (free)
  • Linux command-line experience
03

Step 1: Install System Dependencies

bash
sudo apt update
sudo apt upgrade -y
sudo apt install -y lib32gcc-s1 lib32stdc++6 curl wget unzip default-jre-headless

Java Runtime Environment is optional but helpful for some admin tools.

04

Step 2: Create Game User

bash
sudo useradd -m -s /bin/bash pzserver
sudo passwd pzserver

Switch to the new user:

bash
su - pzserver
05

Step 3: Install SteamCMD

bash
mkdir -p ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz
./steamcmd.sh +quit
06

Step 4: Install Project Zomboid Server

Use SteamCMD to download the server (AppID 380870):

bash
cd ~/steamcmd
./steamcmd.sh +force_install_dir ~/pz-server +login anonymous \
  +app_update 380870 validate +quit

Installation takes 10-20 minutes depending on disk speed.

Verify:

bash
ls -la ~/pz-server/

You should see ProjectZomboid64.sh and supporting files.

07

Step 5: Generate Initial Configuration

Run the server once to generate config directories:

bash
cd ~/pz-server
./ProjectZomboid64.sh

Wait 30-60 seconds, then press Ctrl+C to stop. This creates:

  • ~/.cache/ProjectZomboid/ (config directory)
  • Server properties and world folders
08

Step 6: Configure Server Properties

Locate and edit the server configuration:

bash
cd ~/.cache/ProjectZomboid/Zomboid/Server
ls -la

Create servertest.ini

This is the main server configuration file:

bash
cat > ~/.cache/ProjectZomboid/Zomboid/Server/servertest.ini << 'EOF'
[TCPIP]
host=0.0.0.0
port=16261

[Server]
PauseEmpty=true
PauseEmptyOnStart=true
Public=true
PublicName=My Project Zomboid Server
PublicDescription=Survival server
Password=
MaxPlayers=16
Mods=
WorkshopItems=
DoLuaChecksum=true
LogFile=../Logs/console.log
SaveWorldEveryMinutes=60
AutorebootTime=0
GoogleAnalytics=false
PingFrequency=10.0
ItemRemovalTime=8
NpcRemovalTime=72
PlayerSafehouse=true
AdminSafehouse=false
ConstructionPreventionRadius=0
SafeHouse2=true
FactionDamageSelf=true
FactionDamageOtherGang=true
FactionDamageNPC=true
Difficulty=4
ZombieAttractionMultiplier=1.0
PlayerBonusXpMultiplier=1.0
ZombieSkill=1
ZombieMemory=2
ZombieLore=0
ZombiePopulation=0.8
ZombieMaxCount=500
ZombieSpawnerType=0
ZombieRespawn=0
ZombieRespawnHours=72
AllowNonAdminPVP=true
AllowNonAdminMiscItem=true
AllowNonAdminDeleteObject=true
AllowNonAdminWaterShut=true
AllowNonAdminElecShut=true
AllowNonAdminFillWater=true
AllowNonAdminActivateSafehouse=true
AllowNonAdminMechanics=true
AntiCheatProtectionType=1
AnticheatKickFPS=false
BanKnownCheatsAccount=false
BanKnownCheatsCD=false
UserOnlyListenServer=false
EnableMapModsequivalence=true
RestrictRollingCodewords=true
SafetyGlobeUpperLimit=0
MaxItemOnGround=500
ChatStreams=general default faction safehouse admin
ChatStreamFilter=false
DiscordEnable=false
DiscordToken=
DiscordChannelId=
DiscordChannelName=
WorldVersion=2
DeleteUnusedStorage=true
LogItemSpawn=false
LogAnimalSpawn=false
LogVehicleSpawn=false
LogChunkSpawn=false
LogFps=false
LogMemory=false
LogObjectStatisticsFile=false
LogNetworkTraffic=false
LogInput=false
LogGPU=false
LogPreloadedItems=false
LogLagometer=false
RconPort=27015
RconPassword=
RconFilePath=
RconBindIp=0.0.0.0
RconThreads=4
RconSleepMS=10
BlockJoinUntilLoaded=false
SetupPassword=
SpawnMode=0
SpawnPoint=0,0
SafetySeason=0
SafetyYear=1
GenerateMultipleSpawns=true
StartMonth=7
StartDay=9
StartYear=1
StartHour=8
KnownCauseOfDeathFmodBlacklist=
NoFire=false
NoClaimMicromanagement=true
NoBaseDefense=false
NoSafehousesAllowed=false
AllowExtraSenses=true
AllowTradeUI=true
AllowRadio=true
AllowHelicopters=true
AllowSearchMode=true
AllowLootBags=true
AllowVehicles=true
AllowSign=true
AllowFire=true
AllowBoarding=true
AllowLongModNames=false
AllowFactionPVP=true
AllowFactionVehicle=true
AllowMultipleSpawns=true
AllowMovingStash=true
AllowWaterShutOff=true
AllowElecShutOff=true
AllowFillWater=true
AllowActivateSafehouse=true
AllowMechanics=true
AllowResetLua=true
AllowDebugMode=false
AllowInjuryEmote=false
AllowPlayerSafeHouse=true
AllowMapModifications=true
AllowDestructionBySneaking=true
AllowDestructionByOtherPlayers=true
AllowDestructionByFaction=true
AllowPlaceMultipleItemsPerInventorySlot=true
AllowPoliceStationLoot=true
AllowRadioStations=true
AllowRadioChannels=true
AllowSearchModeTag=true
Faction=true
NoFire=false
NoPvp=false
NoClaimMicromanagement=true
NoBaseDefense=false
NoSafehousesAllowed=false
NoWorldAge=false
NoFog=false
NoAnimals=false
OnlyKnownRecipes=false
OnlyKnownSeeds=false
OnlyKnownCompost=false
StartWithSomeMP=true
OneManSlateOfGod=false
SleepAllowed=true
SleepNeeded=true
AllowPlayerVoice=true
AllowTableTalk=true
AllowGlobalModFallback=true
AllowCopVoice=true
AllowRestrainedAttack=true
AllowFactionAttackNonMembers=false
AllowFactionAttackMembers=false
AdminEnableDebugMode=false
AdminTeleport=true
AdminGodMode=true
AdminInvisible=true
AllowAdminPVP=true
AllowAdminWaterShut=true
AllowAdminElecShut=true
AllowAdminFillWater=true
AllowAdminActivateSafehouse=true
AllowAdminMechanics=true
AllowAdminDebugMode=true
AllowAdminResetLua=true
AllowAdminInjuryEmote=false
RestrictDroppingItems=false
RestrictUsingVehicles=false
RestrictRepairing=false
RestrictGatheringSeeds=false
RestrictComposting=false
RestrictFishing=false
RestrictAxes=false
RestrictShovels=false
RestrictChopTrees=false
RestrictDigGraves=false
RestrictRemovingFloor=false
RestrictRemovingWalls=false
RestrictRemovingDoors=false
RestrictRemovingFences=false
RestrictRemovingBars=false
RestrictRemovingWallsOrFloors=false
RestrictStartFires=false
RestrictLightingFires=false
RestrictPuttingOutFires=false
RestrictFirewoodChoppy=false
RestrictPBags=false
RestrictTrapping=false
RestrictMechanics=false
RestrictUsingItems=false
RestrictLootPiles=false
PVPServer=false
VoiceEnable=true
VoiceBufferSize=2000
VoiceMaxDistance=100
VoiceMaxDistanceMult=0.1
VoiceMaxDistanceChat=10
VoiceChatDistance=10
CustomSpawns=false
ErosionDays=0
StartingItems=Base.Axe;Base.WoodenPlank;Base.ModernClothes
AlwaysShowDamagePlayer=false
AlwaysShowDamageNPC=false
AlwaysShowDamageObject=false
AlwaysShowDamageVehicle=false
AuthorizedReadWriteChars=;.,_-+='?!()[]{}*&%^$

[Map]
Map=Muldraugh, KY

[Discord]
DiscordEnable=false
DiscordToken=
DiscordChannelId=
DiscordChannelName=
EOF

Key Configuration Options

  • PublicName: Server name visible in browser
  • Public: Set to true for public listing, false for private
  • Password: Leave empty for public, set password for private
  • MaxPlayers: Number of player slots (8-32 typical)
  • Mods: Comma-separated mod names (format: ModName;ModName2)
  • Map: Starting map location
  • Difficulty: 1-4 (higher = harder)
  • PVPServer: Enable/disable PvP
  • Password: Server password (blank = open)
  • RconPort: Remote console port (27015 recommended)
  • RconPassword: Admin password for RCON
09

Step 7: Create Systemd Service

Exit to root and create service:

bash
exit  # Exit pzserver user
sudo tee /etc/systemd/system/pzserver.service > /dev/null << 'EOF'
[Unit]
Description=Project Zomboid Dedicated Server
After=network.target
Wants=network-online.target

[Service]
Type=simple
User=pzserver
WorkingDirectory=/home/pzserver/pz-server
ExecStart=/home/pzserver/pz-server/ProjectZomboid64.sh -server
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
Environment="HOME=/home/pzserver"

# Resource limits
MemoryLimit=8G
CPUQuota=300%

[Install]
WantedBy=multi-user.target
EOF

Enable and start:

bash
sudo systemctl daemon-reload
sudo systemctl enable pzserver
sudo systemctl start pzserver

Check status:

bash
sudo systemctl status pzserver
sudo journalctl -u pzserver -f  # Follow logs
10

Step 8: Open Firewall Ports

Project Zomboid uses two UDP ports:

bash
sudo ufw allow 16261/udp comment "Project Zomboid Game"
sudo ufw allow 16262/udp comment "Project Zomboid Secondary"
sudo ufw allow 27015/tcp comment "Project Zomboid RCON"

Or with iptables:

bash
sudo iptables -A INPUT -p udp --dport 16261 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 16262 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 27015 -j ACCEPT
11

Step 9: Add and Configure Mods

Steam Workshop Integration

Enable Workshop mods by adding to servertest.ini:

ini
WorkshopItems=123456789;987654321

Replace with actual Workshop item IDs. Find IDs on steamcommunity.com.

Manual Mod Installation

Download mods (.zip files) and place in mods directory:

bash
mkdir -p ~/.cache/ProjectZomboid/Zomboid/mods
cd ~/.cache/ProjectZomboid/Zomboid/mods
unzip /path/to/mod.zip

Verify structure (should have mod.info file):

bash
ls -la ~/.cache/ProjectZomboid/Zomboid/mods/YourModName/

Add Mod to Server Config

Edit servertest.ini:

ini
Mods=YourModName;AnotherMod;WorkshopMod

Popular Mods

Server and client mods must match exactly. Ensure all connected players have identical mods installed. Test mods on a test server before production deployment.

Disable mods by removing them from the Mods= line and restarting.

  • ORGM (Over-Engineered Roleplay Game Mode) - Advanced RP features
  • Faction Tools - Improved faction management
  • Better Sorting - Inventory improvements
  • Map Extensions - Additional map areas
  • Expanded Helicopters - More helicopter types
12

Step 10: Server Administration

Admin Password Setup

Edit servertest.ini:

ini
SetupPassword=your_setup_password
RconPassword=your_rcon_password

Create Admin Account (In-Game)

Admin Commands

Use in-game console (press `):

/help # List all commands /ban [player_name] # Ban player /unban [player_name] # Unban player /kick [player_name] [reason] # Kick player /mute [player_name] # Mute player chat /teleportto [player_name] # Teleport to player /teleport [x] [y] [z] # Teleport to coordinates /serverinfo # Show server info /setadmin [player_name] # Make player admin /removeadmin [player_name] # Remove admin from player /adduser [username] # Add whitelisted user /removeuser [username] # Remove from whitelist /save # Force save world /startrain # Start rain /stoprain # Stop rain /settime [hour] # Set server time /zone [x] [y] [z] # Safe zone management /factions create [name] # Create faction /factions invite [player] # Invite player to faction

Remote Console (RCON)

Use RCON client or telnet:

bash
telnet tuodominio.com 27015
# Enter RconPassword when prompted
  • Join the server as a new player
  • Open console: ` key
  • Type: /setadmin [username]
  • Player becomes admin with full permissions
13

Step 11: Backup Server Data

Create Backup Script

bash
cat > ~/backup-pz.sh << 'EOF'
#!/bin/bash

BACKUP_DIR=/home/pzserver/backups
WORLD_DIR=/home/pzserver/.cache/ProjectZomboid/Zomboid

mkdir -p $BACKUP_DIR
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

# Stop server gracefully
echo "Saving server state..."
sleep 5

# Backup world
tar -czf $BACKUP_DIR/pz-world-$TIMESTAMP.tar.gz $WORLD_DIR/Saves/

# Keep last 14 backups
find $BACKUP_DIR -name "pz-world-*.tar.gz" -mtime +14 -delete

echo "Backup completed: pz-world-$TIMESTAMP.tar.gz"
EOF

chmod +x ~/backup-pz.sh

Schedule Automated Backups

bash
sudo crontab -e
# Add: 0 3 * * * /home/pzserver/backup-pz.sh

Daily 3 AM backup.

14

Step 12: Monitor and Manage Server

Check Server Status

bash
sudo systemctl status pzserver
ps aux | grep ProjectZomboid

View Logs

bash
sudo journalctl -u pzserver -f
cat ~/.cache/ProjectZomboid/Zomboid/Server/console.log | tail -100

Monitor Resource Usage

bash
watch -n 2 'ps aux | grep ProjectZomboid64'
free -h

Update Server

bash
sudo systemctl stop pzserver
cd ~/steamcmd
./steamcmd.sh +force_install_dir ~/pz-server +login anonymous \
  +app_update 380870 validate +quit
sudo systemctl start pzserver

Always backup world saves before updating. Test updates on a test server if possible. Player count may drop temporarily during major updates.

15

Step 13: Performance Tuning

RAM Scaling

Monitor with:

bash
htop -p $(pgrep ProjectZomboid64)

Reduce Server Load

  • 4 players: 4GB minimum
  • 8 players: 6GB recommended
  • 16+ players: 8GB+ recommended
  • Add 1GB per 4 active mods
  • Limit MaxPlayers based on available RAM
  • Disable unused mods
  • Increase SaveWorldEveryMinutes to reduce disk I/O (300 seconds recommended)
  • Monitor CustomSpawns load
16

Troubleshooting

Server won't start

bash
cd ~/pz-server
./ProjectZomboid64.sh -server

Check for errors in output. Common issues:

High memory usage

Players can't connect

Verify firewall:

bash
sudo netstat -tuln | grep 1626

Ensure Public=true in config and ports are open.

Mod conflicts

Start with core mods only, add mods one at a time, and test between each addition. Check mod compatibility with server version.

  • Config file syntax error (check .ini for special characters)
  • Port already in use
  • Missing mods listed in config
  • Reduce MaxPlayers
  • Disable problematic mods one by one
  • Increase swap space temporarily
  • Monitor with top or htop
17

Windows Server Setup

Step 1: Download Server on Windows

powershell
steamcmd +force_install_dir "C:\PZ-Server" +login anonymous +app_update 380870 validate +quit

Step 2: Generate Initial Config

Run the server once to create config files:

batch
cd C:\PZ-Server
ProjectZomboid64.exe -server

Wait 30 seconds, then close. Config files appear in %APPDATA%\Zomboid\Zomboid\Server\.

Step 3: Edit servertest.ini

Edit %APPDATA%\Zomboid\Zomboid\Server\servertest.ini (same settings as Linux guide in Step 6).

Step 4: Create Startup Batch

Create C:\PZ-Server\start-server.bat:

batch
@echo off
cd /d C:\PZ-Server
ProjectZomboid64.exe -server
pause

Step 5: Run as Service (Optional)

powershell
# Install NSSM
nssm install PZServer "C:\PZ-Server\ProjectZomboid64.exe" "-server"
nssm start PZServer
18

Tips & Tweaks

JVM Memory Allocation

Increase heap memory for better performance:

bash
# Linux: Set JVM_OPTS before running
export JVM_OPTS="-Xmx8G -Xms6G"
./ProjectZomboid64.sh -server

# Windows: Create ProjectZomboid64.bat wrapper
@echo off
set JVM_OPTS=-Xmx8G -Xms6G
ProjectZomboid64.exe -server

Guidelines:

Admin Commands Reference

CommandPurpose
/ban [username]Permanent ban
/unban [username]Unban
/kick [username] [reason]Remove player
/mute [username]Mute chat
/setadmin [username]Grant admin privileges
/removeadmin [username]Revoke admin privileges
/teleportto [username]Teleport to player
/teleport [x] [y] [z]Teleport to coordinates
/serverinfoShow server configuration
/saveForce save world
/startrain / /stoprainControl weather
/settime [hour]Set server time

Mod Load Order and Compatibility

Mods load in order specified in servertest.ini:

ini
Mods=ModName1;ModName2;ModName3;

Best Practices:

Sandbox Settings for Difficulty Tuning

Adjust zombie behavior and progression in servertest.ini:

SettingImpactRecommended
Difficulty1-4 (higher = harder)2-3 for balanced gameplay
ZombiePopulation0.5-1.00.8 for moderate challenge
ZombieSkill0-32 for medium AI difficulty
ZombieMemory0-3 (higher = smarter)2 for realistic behavior
ZombieRespawnHours0-16872 for 3-day respawn cycle
AllowNonAdminPVPtrue/falsefalse for PvE, true for PvP
  • 4 players: -Xmx4G -Xms2G
  • 8 players: -Xmx6G -Xms4G
  • 16+ players: -Xmx8G -Xms6G
  • Core mods first (dependencies like ORGM)
  • Gameplay mods next
  • Content/decoration mods last
  • Test each mod addition individually
  • Keep client mods identical to server
19

Next Steps

  • Set up automated Discord notifications for player joins/quits
  • Configure backup rotation with offsite storage
  • Install additional server management tools
  • Plan regular server restarts (weekly recommended)
  • Monitor player base growth and adjust hardware accordingly
  • Create community rules document and post on Discord

DeluxHost, opgericht in 2023, biedt hoogwaardige hostingoplossingen voor diverse digitale behoeften. Wij bieden gedeelde hosting, VPS en dedicated servers met geavanceerde beveiliging en wereldwijde datacenters.

© DeluxHost, Alle rechten voorbehouden. | BTW-nummer: IT17734661006
Alle systemen operationeel