Running your own DayZ server puts you in charge of the rules, the mods, the loot economy and the long-term progression of your community. You can host the DayZ dedicated server on your own hardware under Windows or Linux, or rent a DayZ server if you would rather not deal with the operating system, port forwarding and keeping the server process alive.
This guide takes you from SteamCMD through serverDZ.cfg and the DayZ server ports to Workshop mods, persistence, backups and the errors people actually run into. It covers the stable server app with SteamCMD app ID 223350.

+login anonymous does not work for installing the DayZ dedicated server. You need a Steam account that owns DayZ. If Steam Guard is active, you also have to enter the confirmation code it asks for.Last checked against the official Bohemia documentation, as of August 2026.
What you will learn
- how to install a DayZ server under Windows or Linux
- how to set the important values in
serverDZ.cfgcorrectly - which ports matter for the game connection, the Steam query and BattlEye/RCon
- how to install DayZ server mods from the Steam Workshop
- how persistence, map changes and backups relate to each other
- how to narrow down the usual startup, connection and mod problems
Quick summary
- Plan for enough RAM, fast CPU cores and SSD or NVMe storage.
- Log into SteamCMD with a Steam account that owns DayZ. Anonymous login does not work.
- Install the stable server with
app_update 223350 validate. - Start the server with
-config=serverDZ.cfgand set the game port via-port=2302. - Configure the Steam query port separately in
serverDZ.cfg, by defaultsteamQueryPort = 2305;. - For a typical single server, open the UDP range
2302–2305in your firewall and router. - Install Workshop mods through game app ID
221100, copy their.bikeyfiles into thekeys/folder and load dependencies first. - Stop the server before backups and updates, and store the mission and storage folder off the machine.
-port=2302 is a launch parameter, while steamQueryPort = 2305; belongs in serverDZ.cfg. When those values do not match your firewall rules, you get connection problems that are hard to trace.Table of contents
- Requirements and hardware
- Installing the DayZ server
- On Windows
- On Linux
- Configuring the server (serverDZ.cfg)
- Changing the map (Chernarus/Livonia)
- Ports and firewall
- Connecting to the server
- Installing mods (Workshop)
- Admin access and moderation
- Persistence and backups
- Updating the DayZ server
- Troubleshooting
- Frequently asked questions
- Related articles
- Summary
Requirements and hardware
For a self-hosted DayZ server you mainly need enough memory, fast CPU cores, SSD or NVMe storage and a network connection that players can actually reach from outside.
Your Steam account matters more than usual here: server app 223350 cannot be pulled anonymously through SteamCMD. The account you use has to own DayZ. With Steam Guard enabled, a confirmation code is required on top of that.
Planning the hardware
The values below are planning and experience figures, not official hardware requirements from Bohemia:
| Scenario | RAM (planning) | CPU |
|---|---|---|
| Vanilla, up to roughly 20 players | 4–6 GB | 2–4 fast cores |
| Vanilla, a full 60 players | 6–8 GB | 4+ cores, high clock speed |
| Lightly modded with 5–10 mods | 8–12 GB | 4–6 cores, high clock speed |
| Heavily modded with Expansion or a custom map | 12–16 GB | 6–8+ cores, high clock speed |
DayZ benefits far more from a high single-core clock speed than from a large number of slow cores. Plan on SSD or NVMe storage for the server files, mods and persistence.
Network and a public IPv4
If players are meant to reach your server from the internet, you need a connection that accepts incoming traffic. Classic port forwarding depends on a public IPv4 address.
With DS-Lite or CGNAT, your router usually has no publicly reachable IPv4 for incoming IPv4 connections. A correctly configured local firewall alone will not fix that. In that case, first find out whether your line can provide a public IPv4 at all.
Installing the DayZ server
For the stable version of the DayZ dedicated server you use SteamCMD app ID 223350. The experimental version has app ID 1042420.
+login anonymous for the server installation. Log in with a Steam account that owns DayZ. Steam Guard may ask for an additional confirmation code.On Windows
Install SteamCMD first, then run steamcmd.exe and log in with your Steam account.
login YOUR_STEAM_USERNAME
SteamCMD will ask for your password and the Steam Guard code as needed. Then set your installation directory and install the stable server app:
force_install_dir C:\PATH\TO\DAYZSERVER
app_update 223350 validate
quit
app_update 223350 validate installs the DayZ dedicated server and verifies the server files while doing so. The server executable on Windows is:
DayZServer_x64.exe
To launch it, create a batch file in the server root directory:
@echo off
DayZServer_x64.exe -config=serverDZ.cfg -port=2302 -profiles=profiles -BEpath=battleye -cpuCount=4 -dologs -adminlog -netlog -freezecheck
pause
Here is what those parameters do:
| Launch parameter | Purpose |
|---|---|
-config=serverDZ.cfg | path to the server configuration |
-port=2302 | game port the server listens on |
-profiles=profiles | folder for logs, .rpt files and BattlEye profiles |
-BEpath=battleye | path to the BattlEye directory |
-mod=@Mod1;@Mod2 | client-side mods, separated by semicolons and wrapped in quotes |
-serverMod=@AdminTool | server-only mods that the client does not load |
-cpuCount=4 | number of logical cores for the server |
-dologs -adminlog -netlog | enable the respective logs |
-freezecheck | detects frozen server processes |
When you use mods, extend the line like this:
DayZServer_x64.exe -config=serverDZ.cfg -port=2302 -profiles=profiles -BEpath=battleye -mod="@CF;@Mod2" -cpuCount=4 -dologs -adminlog -netlog -freezecheck
Dependencies have to come before the mods that require them in the load order.
On Linux
A native Linux server build exists and is installed through the same app ID. Bohemia does list it with limited support, though — if you need maximum compatibility with mods and tooling, Windows tends to be the smoother ride in practice.
Start SteamCMD and log in with a Steam account that owns DayZ:
./steamcmd.sh
Then:
login YOUR_STEAM_USERNAME
force_install_dir /PATH/TO/DAYZSERVER
app_update 223350 validate
quit
The Linux binary is:
DayZServer
A simple start script can look like this:
#!/bin/bash
cd /PATH/TO/DAYZSERVER
exec ./DayZServer -config=serverDZ.cfg -port=2302 -profiles=profiles -BEpath=battleye -cpuCount=4 -dologs -adminlog -netlog -freezecheck
Make the script executable:
chmod +x /PATH/TO/DAYZSERVER/start-dayz.sh
For autostart and an automatic restart after a crash, create a systemd unit with your own paths and server user:
[Unit]
Description=DayZ Dedicated Server
After=network.target
[Service]
Type=simple
User=YOUR_USER
WorkingDirectory=/PATH/TO/DAYZSERVER
ExecStart=/PATH/TO/DAYZSERVER/start-dayz.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
Enable the unit after saving it:
systemctl daemon-reload
systemctl enable --now dayz-server
After changes to the start script or the configuration, restart the service:
systemctl restart dayz-server
Configuring the server (serverDZ.cfg)
The central server configuration lives in serverDZ.cfg. Edit it while the server is stopped.
The syntax is strict:
parameter = value;
Every line ends with a semicolon. Strings go in double quotes. A missing semicolon can stop the server from starting at all.
serverDZ.cfg, check the lines you edited last for missing semicolons and misplaced quotes first.Important serverDZ.cfg settings
| Parameter | Default | Meaning |
|---|---|---|
hostname | – | server name in the server list |
password | empty | join password, empty means public |
passwordAdmin | empty | admin password for remote access |
maxPlayers | 60 | maximum number of players |
maxPing | 200 | kick above this ping in ms |
steamQueryPort | 2305 | Steam query port; without the correct value the server does not appear in the browser |
instanceId | 1 | separates the persistence folders of multiple servers on one machine |
verifySignatures | 2 | verifies .pbo against .bisign; only the value 2 is supported |
forceSameBuild | 0 | 1 allows only clients with an identical build revision |
disableVoN | 0 | 1 disables voice chat |
vonCodecQuality | 30 | voice quality from 0–30 |
disable3rdPerson | 0 | 1 turns the server into first-person only |
disableCrosshair | 0 | 1 disables the crosshair |
serverTime | "SystemTime" | start time; alternatively in the format "2026/8/7/17/23" |
serverTimeAcceleration | 12 | time multiplier from 0–24 |
serverNightTimeAcceleration | 12 | additional night multiplier from 0.1–64, multiplied with the time acceleration |
serverTimePersistent | 0 | 1 keeps the time of day across restarts |
respawnTime | 5 | wait time in seconds before a new character |
storageAutoFix | 1 | replaces corrupted persistence files with empty ones |
timeStampFormat | "Short" | timestamps in the .rpt log, Full or Short |
template in class Missions | "dayzOffline.chernarusplus" | loaded mission, following the <MissionName>.<TerrainName> scheme |
An example using the defaults above together with your own credentials:
hostname = "My DayZ Server";
password = "";
passwordAdmin = "ADMIN_PASSWORD";
maxPlayers = 60;
maxPing = 200;
steamQueryPort = 2305;
instanceId = 1;
verifySignatures = 2;
forceSameBuild = 0;
disableVoN = 0;
vonCodecQuality = 30;
disable3rdPerson = 0;
disableCrosshair = 0;
serverTime = "SystemTime";
serverTimeAcceleration = 12;
serverNightTimeAcceleration = 12;
serverTimePersistent = 0;
respawnTime = 5;
storageAutoFix = 1;
timeStampFormat = "Short";
The mission entry inside class Missions uses this for Chernarus:
template = "dayzOffline.chernarusplus";
Changing the map (Chernarus/Livonia)
Chernarus uses this by default:
template = "dayzOffline.chernarusplus";
For a DayZ Livonia server, set the template entry inside class Missions to:
template = "dayzOffline.enoch";
The matching mission folder has to exist under mpmissions/.
After a map change, the persistence of the previous map is no longer active. The maps use separate save data. If you plan to switch back later, make sure you have not accidentally deleted the old mission and storage data.
Ports and firewall
On a DayZ server the game port and the Steam query port are configured separately. The game port is set at launch, the query port in serverDZ.cfg.
| Port or range | Protocol | Used for |
|---|---|---|
2302 | UDP | game port, set via -port=2302 by default |
2305 | UDP | Steam query port according to the vanilla serverDZ.cfg |
2302–2305 | UDP | common range to open, since the engine also uses neighbouring ports |
RConPort from BEServer_x64.cfg | according to your own configuration | BattlEye RCon port |
Many hosts use something like 27016 as the query port instead of 2305. Both are valid. What matters is that the value of steamQueryPort and the matching firewall rule line up exactly.
serverDZ.cfg is not reachable.Windows firewall
For the common 2302–2305/UDP range you can create an inbound rule on Windows:
New-NetFirewallRule -DisplayName "DayZ UDP 2302-2305" -Direction Inbound -Protocol UDP -LocalPort 2302-2305 -Action Allow
If you use a different steamQueryPort, that UDP port needs a firewall rule as well.
Linux with ufw
With ufw, the usual UDP range is opened like this:
ufw allow 2302:2305/udp
If you use a different query port, open that one to match steamQueryPort.
Port forwarding on the router
When self-hosting behind a router, the required UDP ports also have to be forwarded to the machine running the DayZ server. A local firewall rule alone does not make the server reachable from the internet.
With DS-Lite or CGNAT, classic IPv4 port forwarding can fail despite a correct router and firewall configuration, because there is no directly reachable public IPv4.
Multiple DayZ instances on one machine
If several DayZ servers run on the same machine, each instance needs its own ports and its own instanceId.
For every instance:
- set a unique game port via
-port - set a unique query port via
steamQueryPort - open both ports accordingly in the firewall and router
- use a different
instanceIdper instance
That also keeps the persistence folders of the individual servers separate.
Connecting to the server
Once the server is running, you find it through the DayZ launcher or the server browser. To add the server directly, use the IP address together with the game port.
With the default game port the scheme is:
IP-ADDRESS:2302
If a password is set in serverDZ.cfg, players have to enter it when connecting.
If the direct connection works but the server does not appear in the public list, check the Steam query port first. It has to be set correctly in steamQueryPort and reachable as a UDP port.
Installing mods (Workshop)
DayZ server mods come from the Steam Workshop. There is one crucial difference to the server installation: the server app runs under 223350, but Workshop mods are downloaded through the DayZ game app ID 221100.
workshop_download_item 221100 <WorkshopID> for Workshop mods. Mod downloads do not go through server app ID 223350.1. Download the Workshop mod via SteamCMD
Start SteamCMD and log in with a Steam account that owns DayZ.
login YOUR_STEAM_USERNAME
workshop_download_item 221100 <WorkshopID>
quit
Replace <WorkshopID> with the ID of the mod you want.
After the download, the mod sits in:
steamapps/workshop/content/221100/<WorkshopID>/
2. Copy the mod into the server root directory
Copy the downloaded mod folder into the root directory of your DayZ server and give it a leading @, for example:
@CF
Further mods go next to it as their own @ folders.
3. Copy the signature keys into the keys folder
This step is what makes or breaks most mod setups. Copy the .bikey files from the mod directory:
@Mod/keys/
into the central key folder of the DayZ server:
keys/
With verifySignatures = 2 the server verifies the mod files. If the matching .bikey files are missing from the keys/ folder, players are rejected when they try to connect.
.bikey files are one of the most common reasons why every player suddenly gets kicked after a mod installation. Check the keys/ folder first when you hit this.4. Load mods with -mod
Client-side mods are passed at launch with -mod. Separate multiple mods with semicolons and wrap the whole list in quotes:
-mod="@CF;@Mod2"
In a Windows launch line that looks like this:
DayZServer_x64.exe -config=serverDZ.cfg -port=2302 -profiles=profiles -BEpath=battleye -mod="@CF;@Mod2" -cpuCount=4 -dologs -adminlog -netlog -freezecheck
For a server-only mod, use -serverMod instead:
-serverMod=@AdminTool
A mod loaded via -serverMod is not loaded by the client.
5. Mind the load order and dependencies
The order inside -mod matters as soon as mods have dependencies. A required base mod has to load before the mod built on top of it.
If a mod requires CF, for example, @CF comes first:
-mod="@CF;@Mod2"
So when the server fails to start, do not just check whether all mod folders exist — check whether their dependencies load in the right order.
6. Clients need the same mods
Players need exactly the same mods in the DayZ client, through Workshop subscriptions or the DayZ launcher.
The mods loaded on the server and on the client have to match. A single missing or differing mod can be enough to stop the client from connecting.
Updating mods after DayZ updates
After a DayZ update you should update the server and the mods together. The server itself is updated again with:
app_update 223350 validate
You pull the Workshop mods via their Workshop ID and game app ID 221100:
workshop_download_item 221100 <WorkshopID>
Outdated mods are one of the most common causes of failed starts after a DayZ update. When something breaks, check whether both the server files and every mod in use are on the matching version.
Admin access and moderation
The admin password is set in serverDZ.cfg via passwordAdmin:
passwordAdmin = "ADMIN_PASSWORD";
For logging, start the server with -adminlog. Together with -profiles=profiles, logs, .rpt files and BattlEye profiles end up in the profiles folder you specified.
A launch with several logging options looks like this:
-dologs -adminlog -netlog
BattlEye RCon is configured separately through the BattlEye directory. The RCon port is whichever port you set via RConPort in battleye/BEServer_x64.cfg. Use exactly the value you configured there and match any firewall rule to it.
If you run multiple instances, make sure RCon access is clearly assigned to the right server instance as well.
Persistence and backups
The persistent save data of a DayZ server lives in:
mpmissions/<mission>/storage_<instanceId>/
The instanceId from serverDZ.cfg therefore also decides which storage folder is used.
A clean DayZ server backup
For a consistent backup, work in this order:
- Stop the DayZ server.
- Back up the mission and storage folder.
- Store the backup off the machine.
- Start the server again.
storageAutoFix as a substitute for a backup.storageAutoFix = 1 can replace corrupted persistence files by emptying them. That is emergency repair, not a backup. It does not bring back the data it discards.
Persistence wipe
A full persistence wipe means deleting the storage folder in use. Stop the server first and back up the existing data if you might want it later.
A map change creates and uses its own persistence. If you switch from Chernarus to Livonia, the previous Chernarus save is no longer the active storage of the running mission.
Updating the DayZ server
Before an update, back up the persistence and stop the server.
Then update the stable server files through SteamCMD:
login YOUR_STEAM_USERNAME
app_update 223350 validate
quit
If you use Workshop mods, those need updating too:
workshop_download_item 221100 <WorkshopID>
After the update, make sure the server and the clients are on the same matching version. With forceSameBuild = 1; set, the server only accepts clients with an identical build revision.
Troubleshooting
| Problem | Likely cause | What to check |
|---|---|---|
| Server does not appear in the browser | Steam query port unreachable or set incorrectly | match the value of steamQueryPort with the firewall and router rule |
| Direct connection works, the browser list does not | game port reachable, query port blocked | open the query port as UDP and use exactly the same value in serverDZ.cfg |
| Connection fails | game port unreachable | check -port=2302, the UDP rule and the router forwarding |
Bad version or Server rejected connection | version or mod mismatch | update server and client, compare the mod list and mind forceSameBuild |
| Players get kicked after a mod installation | .bikey missing from the server keys/ folder | copy the keys from @Mod/keys/ into keys/ and check verifySignatures = 2 |
| Server does not start after a cfg change | syntax error in serverDZ.cfg | check semicolons and double quotes |
| SteamCMD login fails | anonymous login used, or Steam Guard is waiting for confirmation | log in with a Steam account that owns DayZ and enter the Steam Guard code |
| Save data appears to be gone | a different map or a different instanceId is active | compare the mission, the map template and storage_<instanceId> |
| Performance drops under load | CPU clock too low or too many mods | prioritise high single-core performance and review the number of mods |
| Server unreachable from outside despite port forwarding | DS-Lite or CGNAT | check whether a public IPv4 is available at all |
| Connecting via the public IP only fails from your own network | NAT loopback | test the connection from an external network as well |
| Server no longer starts cleanly after a DayZ update | mods not updated together with the server | update the server files and every Workshop mod |
| Multiple instances interfere with each other | duplicate ports or instanceId | give each instance its own game and query ports and its own instanceId |
Not in the list, but reachable by IP
This pattern points at the Steam query port more often than anything else. The server listens for the game on, for example:
-port=2302
The browser, on the other hand, uses the value from:
steamQueryPort = 2305;
The two are independent. A working direct connection is therefore no proof that the query port is reachable.
The server does not start after a change
Check serverDZ.cfg first. Every configuration line has to end with a semicolon:
maxPlayers = 60;
String values require double quotes:
hostname = "My DayZ Server";
If a semicolon is missing, the server start can fail.
Every player gets kicked after a mod change
Check the signature keys first. The .bikey files of the mods have to be copied from:
@Mod/keys/
into:
keys/
With verifySignatures = 2, mod files that are not correctly signed — or that cannot be verified with the keys present — are rejected.
Frequently asked questions
Do I need to own DayZ on Steam to run a server?
Yes, installing through SteamCMD requires a Steam account that owns DayZ. +login anonymous does not work for the DayZ dedicated server, and with Steam Guard active a confirmation code may be required as well.
How much RAM does a DayZ server need?
Plan for roughly 4 to 16 GB of RAM depending on player count and mod scope. As planning and experience figures, 4–6 GB is often enough for vanilla up to about 20 players, while heavily modded setups with Expansion or a custom map should budget closer to 12–16 GB.
Which ports does a DayZ server need?
By default the game port runs on 2302/UDP, while the vanilla query port in serverDZ.cfg is 2305/UDP. In practice the range 2302–2305/UDP is commonly opened; a different query port such as 27016 also works as long as steamQueryPort and the firewall rule use the same value.
Why is my DayZ server not showing in the server list?
Usually the Steam query port is unreachable or does not match the value in steamQueryPort. That is why the direct connection over the game port can work while the server stays invisible in the in-game browser.
How do I install mods on a DayZ server?
Download Workshop mods with workshop_download_item 221100 <WorkshopID>, copy them as @Mod into the server root directory and move their .bikey files into the server's keys/ folder. Then load them via -mod, with dependencies listed first, and make sure clients run the same mods.
How do I switch from Chernarus to Livonia?
Set the mission entry in class Missions to template = "dayzOffline.enoch";. The matching mission folder has to exist under mpmissions/, and the Chernarus persistence is not the active Livonia persistence after the map change.
How do I back up my DayZ server?
Stop the server and copy the mission and storage folder from mpmissions/<mission>/storage_<instanceId>/ to an external location. storageAutoFix = 1 is not a backup, because corrupted persistence files can be replaced with empty ones.
Related articles
If you want to run other survival or sandbox servers alongside DayZ, these guides cover the ground:
- How to create a Project Zomboid server
- How to create a Rust server
- How to create an ARK: Survival Ascended server
- How to create a 7 Days to Die server
- How to create an Enshrouded server
Summary
Creating your own DayZ server comes down to four areas: installing the server files correctly through SteamCMD, configuring serverDZ.cfg cleanly, opening the game and query ports properly, and keeping mods and their signature keys current.
The single most important installation detail is the SteamCMD login: server app 223350 does not allow anonymous login. Workshop mods, on the other hand, go through game app ID 221100. On the network side, keep the split between -port for the game port and steamQueryPort in serverDZ.cfg in mind.
Stable persistence needs regular backups. Stop the server before backing up and keep the mission and storage folder off the machine. If you would rather not manage the operating system, SteamCMD, port forwarding and autostart yourself, you can rent a DayZ server instead.