Short answer: to host a DayZ server, install SteamCMD, log in with a Steam account that owns DayZ (anonymous login does not work), download app 223350, set the name and passwords in serverDZ.cfg, open UDP 2302 and your Steam query port, and start the server with -config=serverDZ.cfg. Bohemia ships the server for Windows and for Linux.
This guide sets it up on a Linux VPS under systemd, with mods, BattlEye RCon, a restart every four hours and a backup at each restart, then shows the Windows variant. It is written from Bohemia’s community wiki, its server files and its DayZ Central Economy repository, read in October 2026; the mod rename loop and the backup script were checked on Debian 12 against mock folders.
| Item | Value |
|---|---|
| SteamCMD app ID | 223350; experimental branch 1042420 |
| Steam login | An account that owns DayZ; not anonymous |
| Program | DayZServer_x64.exe on Windows, DayZServer on Linux |
| Game port | UDP 2302, set with -port= |
| Steam query port | steamQueryPort in serverDZ.cfg (27016 in this guide) |
| Mods | Workshop app 221100, loaded with -mod=, keys in keys |
| Persistence | mpmissions/<mission>/storage_<instanceId> |
| Bohemia minimum | Dual-core 2.4 GHz, 6 GB RAM, 2.5 GB disk, SSD recommended |
Should a DayZ server run on Windows or Linux?
Both are official. Bohemia’s server requirements list Windows Server or Windows 10 and later, or Linux, and the same SteamCMD app delivers the Linux build when you run SteamCMD on Linux. The difference is in the details:
| Linux VPS | Windows VPS | |
|---|---|---|
| Overhead | Small, more RAM left for the game | Windows takes a few GB of its own |
| Mods | File and folder names inside mods must be lowercase | Mods work as packed |
| Admin tools | RCon tools from your PC work the same | Some community tools expect Windows |
| After a game update | Fewer servers run it, so bugs surface later; test before players join | The build most servers run |
| Licence | None | Windows licence needed |
Bohemia’s modding documentation asks mod authors to keep addon and key names lowercase so mods work with the Linux server, and not every mod does. For vanilla or a handful of mods, Linux is the lighter choice. If your list of mods is long or your admin tooling is Windows-only, take the Windows route.
How much RAM and CPU does a DayZ server need?
Bohemia’s wiki gives a minimum of a dual-core CPU at 2.4 GHz, 6 GB of RAM and 2.5 GB of disk, with an SSD recommended for the installation and logs. That is a floor, not a target. As estimates rather than Bohemia figures:
- Per-core speed sets the server’s frame rate. Zombies, animals, loot and vehicles are simulated on few threads, so fast cores matter more than many. The
-cpuCount=parameter tells the server how many cores it may use. - Memory grows with players, map and mods. A vanilla Chernarus server for a group fits in 8 GB; a full 60 slots, a larger map or a big mod list wants 12 to 16 GB. On Windows, add what the OS takes.
- Disk grows with logs. With
-dologs -adminlog -netlogtheprofilesfolder fills over weeks; clear old logs now and then.
How do I install a DayZ server on Linux?
The server gets its own unprivileged account with /opt/dayz as its home. Valve advises against running SteamCMD as root.
- 1Install the libraries and create the user
SteamCMD needs
lib32gcc-s1; Bohemia’s Linux hosting page listslibcap-devand libcurl for the server itself:Debian · Ubuntu sudo apt update sudo apt install -y curl ca-certificates lib32gcc-s1 libcap-dev libcurl4-openssl-dev sudo useradd --system --create-home --home-dir /opt/dayz --shell /usr/sbin/nologin dayz - 2Install SteamCMD
Debian · Ubuntu sudo -u dayz -H mkdir -p /opt/dayz/steamcmd sudo -u dayz -H sh -c 'curl -fsSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | tar -xz -C /opt/dayz/steamcmd' - 3Log in once with the account that owns DayZ
The server app does not download for an anonymous session or for an account without the game. Log in interactively once, so SteamCMD asks for the password and the Steam Guard code and caches the login for later runs:
Debian · Ubuntu sudo -u dayz -H /opt/dayz/steamcmd/steamcmd.sh +login YOUR_STEAM_NAME +quitThe cached login lives on the server, so the machine now holds access to that Steam account. Keep SSH locked down, and if the cache expires, the update step below fails until you repeat this login.
- 4Download the server
Debian · Ubuntu sudo -u dayz -H /opt/dayz/steamcmd/steamcmd.sh \ +force_install_dir /opt/dayz/server \ +login YOUR_STEAM_NAME +app_update 223350 validate +quit - 5Start it once in the foreground
first start sudo -u dayz -H sh -c 'cd /opt/dayz/server && ./DayZServer -config=serverDZ.cfg \ -port=2302 -profiles=profiles -BEpath=battleye -dologs -adminlog -netlog -freezecheck' # wait until the log settles, join once to test, then press Ctrl+C
What goes in serverDZ.cfg?
The file sits in the server folder and ships with comments on every line. These are the lines to set before anyone joins; the values are examples:
hostname = "Northern Woods | Vanilla | EU";
password = ""; // empty = public
passwordAdmin = "long-random-admin-password";
maxPlayers = 40;
verifySignatures = 2; // only 2 is supported
forceSameBuild = 1;
disable3rdPerson = 0;
serverTime = "SystemTime";
serverTimeAcceleration = 4;
serverTimePersistent = 0;
instanceId = 1; // persistence goes to storage_1
storageAutoFix = 1;
steamQueryPort = 27016; // the Steam query port; open it in the firewall
class Missions
{
class DayZ
{
template = "dayzOffline.chernarusplus"; // dayzOffline.enoch = Livonia, dayzOffline.sakhal = Sakhal
};
};| Setting | What it does |
|---|---|
passwordAdmin | Lets you log in as admin in game with #login |
verifySignatures | Checks mod files against their signatures; Bohemia's file says only 2 is supported |
forceSameBuild | Only clients with the same build as the server may join |
instanceId | Names the storage folder; give each server on one machine its own |
storageAutoFix | Replaces corrupted persistence files with empty ones at start |
serverTimeAcceleration | Game time multiplier, 0 to 24 |
steamQueryPort | The UDP port the server browser queries; any free port, 27016 is a common choice |
Which ports does a DayZ server need?
UDP 2302 for the game, plus the steamQueryPort you set, which the server browser queries. Most hosting guides also open the next three UDP ports after the game port. Open them, then look at what the process really holds and close what it does not use:
sudo ufw allow 22/tcp # your SSH port, first
sudo ufw allow 2302:2305/udp comment 'DayZ game'
sudo ufw allow 27016/udp comment 'DayZ Steam query'
sudo ufw enable
sudo ss -ulpn | grep -i dayz # the UDP ports the server actually bindsThe BattlEye RCon port from the next section stays closed to everyone but you. The UFW guide covers rules for one source address.
How do I set up BattlEye and RCon?
BattlEye ships with the server and is loaded from the folder -BEpath= names. To use RCon tools, create BEServer_x64.cfg in that folder:
RConPassword long-random-rcon-password
RConPort 2310
RestrictRCon 0While the server runs, BattlEye renames the file to BEServer_x64_active_<random>.cfg, which shows it was read; if no such file appears, check that the file sits in the folder -BEpath= points to. RCon speaks UDP, so allow it only from your own address: sudo ufw allow from 203.0.113.7 to any port 2310 proto udp. Through RCon you can message players, kick and ban, and send #shutdown for a clean stop.
How do I add mods to a DayZ server?
Mods come from the DayZ Workshop (app 221100) with the same Steam login. The example installs one mod and links it into the server under a short lowercase name:
sudo -u dayz -H /opt/dayz/steamcmd/steamcmd.sh +login YOUR_STEAM_NAME \
+workshop_download_item 221100 1559212036 +quit
# SteamCMD prints the folder it used: Success. Downloaded item 1559212036 to "..."
sudo -u dayz ln -s /opt/dayz/steamcmd/steamapps/workshop/content/221100/1559212036 /opt/dayz/server/@cfUse the path SteamCMD printed if it differs. On Linux, the names inside the mod must be lowercase. This loop renames every file and folder below the mod, deepest first, and skips names that already exist; it was checked on Debian 12 with GNU findutils 4.9.0 and coreutils 9.1. Run it again after every mod update, because an update brings the original names back:
# the trailing slash makes find follow the @cf link into the Workshop folder
sudo -u dayz find /opt/dayz/server/@cf/ -depth -mindepth 1 -name '*[[:upper:]]*' -execdir sh -c \
'for f; do mv -n -- "$f" "$(printf %s "$f" | tr "[:upper:]" "[:lower:]")"; done' sh {} +Then copy the mod’s signing key to the server and load the mod:
sudo -u dayz cp -n /opt/dayz/server/@cf/keys/*.bikey /opt/dayz/server/keys/
# several mods: separate them with ; and quote the whole argument
./DayZServer -config=serverDZ.cfg -port=2302 "-mod=@cf;@another" ...Every player needs the same mods, which DayZ’s launcher fetches when they join a modded server. Mods that only the server runs go in -serverMod= instead, and players do not need those. Order matters when one mod depends on another: list the dependency first.
How do I run it as a service with automatic restarts?
DayZ servers are usually restarted every few hours. The clean way is to let the server end itself with a countdown, and let systemd start it again. First the service, which updates the server before each start and takes a backup after each stop (the systemd service guide explains each line):
[Unit]
Description=DayZ server
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=dayz
Group=dayz
WorkingDirectory=/opt/dayz/server
# update before every start; "-" lets a failed update fall through
ExecStartPre=-/opt/dayz/steamcmd/steamcmd.sh +force_install_dir /opt/dayz/server +login YOUR_STEAM_NAME +app_update 223350 +quit
ExecStart=/opt/dayz/server/DayZServer -config=serverDZ.cfg -port=2302 -profiles=profiles -BEpath=battleye "-mod=@cf" -dologs -adminlog -netlog -freezecheck
ExecStopPost=/opt/dayz/backup.sh
Restart=always
RestartSec=15
TimeoutStartSec=900
TimeoutStopSec=300
[Install]
WantedBy=multi-user.targetRestart=always matters here: a countdown shutdown ends the process normally, and on-failure would leave it down. Then the countdown itself, in mpmissions/dayzOffline.chernarusplus/db/messages.xml. Bohemia’s sample file uses deadline in minutes; 240 means a restart four hours after each start, and #tmin shows the minutes left:
<messages>
<message>
<deadline>240</deadline>
<shutdown>1</shutdown>
<text>#name restarts in #tmin minutes. Find a safe spot.</text>
</message>
</messages>sudo systemctl daemon-reload
sudo systemctl enable --now dayz
sudo journalctl -u dayz -fHow do I back up a DayZ server?
Bases, tents, vehicles and characters live in mpmissions/dayzOffline.chernarusplus/storage_1 (the number is your instanceId). A copy taken while the server writes may be inconsistent, so the script runs from ExecStopPost, between stop and restart, when the files are at rest:
sudo tee /opt/dayz/backup.sh >/dev/null <<'EOF'
#!/bin/sh
DEST=/opt/dayz/backups
MISSION=/opt/dayz/server/mpmissions/dayzOffline.chernarusplus
mkdir -p "$DEST"
tar -czf "$DEST/dayz-$(date +%F-%H%M%S).tar.gz" -C "$MISSION" storage_1
# keep the newest 42 archives, a week at six restarts a day
ls -1t "$DEST"/dayz-*.tar.gz | tail -n +43 | xargs -r rm --
EOF
sudo chown dayz:dayz /opt/dayz/backup.sh
sudo chmod 750 /opt/dayz/backup.shTo roll back, stop the service, move storage_1 aside, unpack an archive into the mission folder as the dayz user, and start again. Copy archives off the machine with rsync now and then; before a big game update, a backup of the whole VPS from your provider’s panel is the quicker way back, at VMHeaven the Backups tab of the server.
How do I run a DayZ server on Windows?
The steps match, with DayZServer_x64.exe and no lowercase step for mods. In PowerShell as Administrator, after installing SteamCMD to C:\steamcmd:
C:\steamcmd\steamcmd.exe +force_install_dir C:\dayz +login YOUR_STEAM_NAME +app_update 223350 validate +quit
New-NetFirewallRule -DisplayName 'DayZ game (UDP 2302-2305)' -Direction Inbound -Protocol UDP -LocalPort 2302-2305 -Action Allow
New-NetFirewallRule -DisplayName 'DayZ Steam query (UDP 27016)' -Direction Inbound -Protocol UDP -LocalPort 27016 -Action AllowA batch file with a loop plays the role of systemd: it updates, runs the server until the countdown ends it, archives the storage folder and starts over.
@echo off
cd /d C:\dayz
if not exist C:\dayz-backups mkdir C:\dayz-backups
:loop
C:\steamcmd\steamcmd.exe +force_install_dir C:\dayz +login YOUR_STEAM_NAME +app_update 223350 +quit
start "DayZ" /wait DayZServer_x64.exe -config=serverDZ.cfg -port=2302 -profiles=profiles -BEpath=battleye "-mod=@cf" -dologs -adminlog -netlog -freezecheck
powershell -NoProfile -Command "Compress-Archive -Path 'C:\dayz\mpmissions\dayzOffline.chernarusplus\storage_1' -DestinationPath ('C:\dayz-backups\dayz-' + (Get-Date -Format 'yyyy-MM-dd_HHmmss') + '.zip'); Start-Sleep 15"
goto loop$action = New-ScheduledTaskAction -Execute 'C:\dayz\start-dayz.bat'
$trigger = New-ScheduledTaskTrigger -AtStartup
# no time limit: by default Task Scheduler stops a task after three days
$settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit ([TimeSpan]::Zero)
Register-ScheduledTask -TaskName 'DayZ server' -Action $action -Trigger $trigger -Settings $settings -User 'SYSTEM' -RunLevel HighestFirewall rules, profiles and tests are covered in more depth in the Windows Firewall port guide. On our Windows VPS, Windows Server starts on a time-limited evaluation licence; activate your own key before it ends, or Windows begins to shut itself down at intervals.
Why can’t players find or join my DayZ server?
| Symptom | Likely cause | Fix |
|---|---|---|
| SteamCMD: no subscription, or the download fails | Anonymous login, or an account without DayZ | Log in with an account that owns DayZ |
| Server not in the browser | steamQueryPort missing or blocked | Set it in serverDZ.cfg and open that UDP port |
| Players kicked for signatures | A mod's .bikey is missing from keys | Copy every mod's key into the server's keys folder |
| Mod works on Windows, fails on Linux | Upper-case file names inside the mod | Run the lowercase loop after each mod update |
| Version mismatch after a patch | Server not updated, or the update step lost its login | Restart the service; repeat the interactive SteamCMD login |
| Server stays down after the countdown | Restart=on-failure in the unit | Use Restart=always |
Which VPS plan fits a DayZ server?
Start from memory, then pick the line by what you need more of. Our Hi-CPU KVM line (AMD EPYC 7443, ECC memory) spends each price step on fewer vCores, for a server whose frame rate leans on one or two threads; Standard KVM (Intel, DDR4 ECC) puts at least twice the RAM on each price step, which a big mod list will want. These are estimates for Linux; add 2 to 4 GB on Windows:
| Server | Hi-CPU KVM | Standard KVM | Notes |
|---|---|---|---|
| Vanilla, up to about 20 players | HI-CPU 4: 4 vCores, 8 GB | STANDARD KVM 2: 4 vCores, 8 GB | Above Bohemia's 6 GB minimum |
| Vanilla 60 slots, or a few mods | HI-CPU 5: 6 vCores, 12 GB | STANDARD KVM 3: 6 vCores, 12 GB | Room for persistence and logs |
| Large map, long mod list | HI-CPU 6: 8 vCores, 16 GB | STANDARD KVM 4: 8 vCores, 16 GB | Watch server FPS before adding more |
vCores on both lines are shared, not reserved. A public DayZ server draws attacks from players who lost a fight, and every plan sits behind always-on DDoS mitigation at no extra cost. Linux or Windows Server 2022 and 2019 can be picked at checkout, and the gaming VPS page sizes other survival games on both lines. Running Rust as well? The Rust server guide follows the same SteamCMD and systemd pattern.
Frequently asked
Can I download the DayZ server with an anonymous SteamCMD login?
No. The DayZ server, app 223350, only downloads for a Steam account that owns DayZ, and the same goes for Workshop mods. Log in once interactively with +login and your account name, so SteamCMD can cache the login after the password and the Steam Guard code; later updates then run without prompting.
Does DayZ have a Linux dedicated server?
Yes. Bohemia lists Linux next to Windows in its server requirements, documents Linux hosting on its community wiki, and SteamCMD delivers the Linux build of app 223350 when it runs on Linux. Fewer servers run it than the Windows build, and mods need lowercase file and folder names on Linux, so test after each game update and check each mod before relying on it.
Which ports does a DayZ server use?
UDP 2302 by default for the game, set with -port=, plus the steamQueryPort from serverDZ.cfg, such as 27016, which the server browser queries. Most hosting guides also open UDP 2303 to 2305. The BattlEye RCon port you choose should only be open to your own IP.
How do I restart a DayZ server automatically?
Add a message with a deadline in minutes and shutdown set to 1 to db/messages.xml in the mission folder, for example 240 for every four hours; #tmin in the text shows the minutes left. The server then ends itself, and systemd with Restart=always, or a loop in a batch file on Windows, starts it again.