Project Zomboid Field guide

Transfer Singleplayer Project Zomboid World to Dedicated Server: Saves & Loot

How to migrate a singleplayer or local co-op Project Zomboid world to a dedicated Linux server: map_p.bin world files, player safehouses, and SQLite players.db conversion.

Transfer Singleplayer Project Zomboid World to Dedicated Server: Saves & Loot

Many player groups in Project Zomboid initially begin their survival journey through local in-game host co-op or solo play. As survivor compounds expand, fortifications multiply, and supply stockpiles grow, migrating the save to an always-on Linux dedicated server becomes essential. However, simply copying the world directory directly often results in stripped host inventories, missing safehouses, or database parsing errors due to differences in how singleplayer and multiplayer engines handle player accounts.

This guide walks through the exact workflow for migrating a local Project Zomboid world to a dedicated Linux server: dissecting map_p.bin state files, safeguarding survivor inventory in world containers, and translating sandbox rules into SandboxVars.lua.

Save Folder Architecture: Singleplayer vs Dedicated Server#

Project Zomboid maintains distinct storage paths and database conventions between singleplayer and multiplayer environments:

  1. Singleplayer (Client):
    • Windows: %USERPROFILE%\Zomboid\Saves\Sandbox\<SaveName>\ (or Survival)
    • Linux: ~/Zomboid/Saves/Sandbox/<SaveName>/
  2. Dedicated Server (Linux):
    • World state directory: ~/Zomboid/Saves/Multiplayer/<ServerName>/
    • Server operational ini: ~/Zomboid/Server/<ServerName>.ini
    • Sandbox gameplay variables: ~/Zomboid/Server/<ServerName>_SandboxVars.lua
    • User account database: ~/Zomboid/db/<ServerName>.db (SQLite)

In singleplayer, character inventory and status are serialized into local world files. On a dedicated server, user accounts, authentication tokens, and player inventories are managed inside a dedicated SQLite relational database.

Preparing the World: Inventory Safekeeping and Backup#

The most common migration trap is losing the host survivor's equipped gear. Because the server requires creating an account upon first connection, the newly created server character will spawn with default starting items.

Perform this in-game preparation routine before exporting:

  1. Launch the singleplayer save locally.
  2. Navigate to your primary safehouse compound.
  3. Transfer all items from your survivor's backpack, clothing, and primary slots into containers (crates, metal lockers, or vehicle trunks).
  4. Save and exit back to the main menu.

Create an isolated archive of your local save folder:

bash
cd "$HOME/Zomboid/Saves/Sandbox"
tar -czf singleplayer_save_backup.tar.gz MyWorld

Transferring map_p.bin and Chunk Files to Linux#

Stop the remote game daemon before transferring files:

bash
sudo systemctl stop zomboid

Establish the target directory matching your server profile name (default is servertest):

bash
SERVER_SAVE_DIR="$HOME/Zomboid/Saves/Multiplayer/servertest"
mkdir -p "$SERVER_SAVE_DIR"

Transfer the world files from your local save into the server directory. The critical files to copy include:

  • map_p.bin — player fortifications, walls, barricades, and world modifications;
  • map_t.bin — global timeline, calendar, and weather simulation;
  • map_meta.bin — meta zones and event trackers;
  • map_zone.bin — safehouse zones;
  • All chunkdata_*.bin and zombies_*.bin files — modified block voxels and zombie distributions.
bash
scp -r MyWorld/* user@server_ip:~/Zomboid/Saves/Multiplayer/servertest/

Verify that map_p.bin is situated correctly in the destination folder:

bash
ls -lh ~/Zomboid/Saves/Multiplayer/servertest/map_p.bin

On a managed server management panel, world uploads and archive extractions are automated via web interfaces without risk of Linux permission desynchronization.

Synchronizing SandboxVars.lua with Server Configurations#

In singleplayer, game rules are saved as a binary map_sand.bin file. A dedicated server reads sandbox variables exclusively from a plaintext Lua file: ~/Zomboid/Server/<ServerName>_SandboxVars.lua

If this file is omitted, the server reverts to default sandbox rules (resetting water and power shutoff dates, infection speed, and zombie density).

Ensure your server sandbox parameters are aligned:

bash
cat << 'EOF' > ~/Zomboid/Server/servertest_SandboxVars.lua
SandboxVars = {
    Speed = 3,
    Zombies = 3,
    Distribution = 1,
    DayLength = 3,
    StartYear = 1,
    StartMonth = 7,
    StartDay = 9,
    StartTime = 2,
    WaterShut = 2,
    ElecShut = 2,
    WaterShutModifier = 14,
    ElecShutModifier = 14,
    FoodLoot = 2,
    CannedFoodLoot = 2,
    WeaponLoot = 2,
    SurvivalGearsLoot = 2,
    MechanicsLoot = 2,
    LiteratureLoot = 2,
    MedicalLoot = 2,
}
EOF

Verify in ~/Zomboid/Server/servertest.ini that Map= includes the active map entries (such as Map=Muldraugh, KY).

Setting Permissions and Starting the Dedicated Server#

Set recursive ownership to the dedicated system service account:

bash
sudo chown -R zomboid:zomboid "$HOME/Zomboid"
sudo chmod -R u=rwX,go=rX "$HOME/Zomboid"

Start the systemd unit and verify server startup:

bash
sudo systemctl start zomboid
sudo journalctl -u zomboid -f --no-pager

Wait until the journal registers: *** SERVER STARTED ****Connect to the server with your client, complete character creation, return to your fortified compound, and retrieve your stored gear from the crates. Your world, player constructions, and survivor progression are fully active on the dedicated host.

Sources#