Workload · Hosting a DayZ world

Your own DayZ dedicated server, set up on a whole Linux machine

To host DayZ yourself, you download Bohemia's free server (Steam app 223350) with SteamCMD while signed in to a Steam account, then start the Linux DayZServer program from a normal user account with a config file you write. This guide walks through each step, from the first download to mods, automatic restarts and backups of your players' world.

The short version
  1. Free server files, but SteamCMD needs a Steam sign-in
  2. Linux server on the stable branch since update 1.24
  3. Your own config file, kept private at mode 600
  4. Mods come from the Workshop together with their keys
  5. Stop the server before you copy the world

What you are setting up

A DayZ server is a separate download from the game. Bohemia lists the stable server as app 223350 and the experimental one as app 1042420 on its community wiki, and its Linux hosting guide installs both with SteamCMD, Valve's command-line downloader. Sign-in matters here: every download command in that guide signs in with a Steam account name rather than anonymously.

You can run it on Linux with Bohemia's blessing. When stable update 1.24 shipped in February 2024, Bohemia's own release post counted an official Linux version of the server, slated for stable, among its changes. The Linux program is called DayZServer, and the wiki asks you not to run it as root, so that anyone who breaks into the game server has a harder time reaching the rest of the machine.

Will one machine keep up with your survivors?

It will if you pick it by its fastest core, and the Bohemia pages this guide follows give you no memory or processor minimum to check against, so here is what they do give you. The server spreads some work across a job system: in dayzsettings.xml, the wiki's example sets maxcores to 4 and reservedcores to 1, and the number of worker threads is the first minus the second. Two start options help too: -cpuCount= limits how many logical cores the server uses for parallel work, and -limitFPS= caps its frame rate (200 at most, per the wiki) so a quiet server burns less processor.

In practice, and this is our advice rather than Bohemia's, the main game loop still depends on one quick core, while extra cores feed the job system or a second server. Give memory and disk room to grow as you add mods and the world fills up, and look at real use after the first week.

Have these ready before you begin

  • A Steam account for the server. Valve suggests a new account kept only for your dedicated servers, and points out that one account can be signed in in only one place at a time.
  • A mission. The config's template line names a mission folder, such as dayzOffline.chernarusplus. You will find Bohemia's mission folders, including dayzOffline.enoch, dayzOffline.sakhal, dayzOffline.nasdara and holiday event versions, on GitHub in the DayZ-Central-Economy repo.
  • Your port numbers. The wiki's own examples use 2302 for -port=, 2304 for clientPort and 2305 for steamQueryPort. This guide opens UDP 2302 to 2305 as one range to cover all three; that range is our own decision, and Bohemia publishes no such list.

Up and running in an evening

These steps assume Ubuntu 24.04 and that you are signed in as a user who can use sudo. The first block makes a dz user, installs SteamCMD the way Valve's guide does it by hand, and switches on the firewall before the game ever listens:

sudo apt update && sudo apt install -y lib32gcc-s1 curl ufw
sudo useradd -m -s /bin/bash dz
sudo -u dz bash -c 'mkdir -p /home/dz/steamcmd /home/dz/world && cd /home/dz/steamcmd && curl -sqL "https://client-update.steamstatic.com/installer/steamcmd_linux.tar.gz" | tar zxf -'

# firewall order: IPv6 setting, SSH, enable, game ports
sudo sed -i 's/^IPV6=.*/IPV6=yes/' /etc/default/ufw
sudo ufw default deny incoming
sudo ufw allow OpenSSH
sudo ufw --force enable
sudo ufw allow 2302:2305/udp
sudo ufw status verbose

Now download the server, typing each line by itself and waiting for the prompt to return. Never put the password after the user name on one line: anyone on the machine could see it in the process list, and it would stay in your shell history.

  1. Become the game user with sudo -iu dz and start /home/dz/steamcmd/steamcmd.sh. After updating itself, it shows a Steam> prompt.
  2. Type force_install_dir /home/dz/dayz. Valve recommends choosing the folder before you sign in.
  3. Type login followed by the Steam user name. Enter the password when asked, then the Steam Guard code if one arrives by email. According to Valve, you need the code only on the first sign-in, unless the saved login files are deleted.
  4. Type app_update 223350 validate. When it reports success, type quit.

Writing your server's settings

Your server needs a config file, and you choose its name. The wiki explains that -config= decides which file is read and that without it the server won't start at all. Make your own copy of the example Bohemia ships rather than editing the original, because Valve notes that validate puts changed install files back to their defaults while ignoring files that were never part of the install. As the dz user, run cd /home/dz/dayz && [ ! -e myserver.cfg ] && install -m 600 /dev/null myserver.cfg && cat serverDZ.cfg > myserver.cfg && echo copied. Open it in an editor only once you see copied.

Then change these lines:

  1. Give it a hostname players will recognise, and a description of up to 255 characters for the server browser.
  2. Set passwordAdmin, plus password if you want a private server. Both are stored as plain text, so the file stays readable only by dz.
  3. Leave verifySignatures = 2: the wiki says that is the only supported value.
  4. Add steamQueryPort = 2305. According to the wiki, this should fix a server that doesn't show up in the browser.
  5. Keep instanceId = 1 and storageAutoFix = 1, which checks persistence files for damage and swaps broken ones for empty ones, one more reason to keep backups.
  6. Check that the template inside class Missions names the mission you want.

Anti-cheat has its own small file. BattlEye takes its settings from the folder -BEpath= points to. The wiki calls the file BEServer_x64.cfg and places it beside BEServer_x64.dll on Windows. On a Linux box, use the same upper and lower case as the file already in that folder. Put RConPassword there if you use a remote admin tool, add RestrictRCon 1 to limit what it can do, and lock the file down to mode 600. Bohemia's pages don't name the port remote admin listens on, so choose a long, random password rather than relying on the firewall.

Keeping it running by itself

With a systemd service, Linux starts the server at boot, updates it first, and starts it again if it stops. Bohemia's wiki has an example; ours below is based on it with some changes, saved as /etc/systemd/system/dayz.service. Swap STEAMUSER for the account you signed in with:

[Unit]
Description=DayZ server
Wants=network-online.target
After=network-online.target

[Service]
User=dz
WorkingDirectory=/home/dz/dayz
ExecStartPre=-/home/dz/steamcmd/steamcmd.sh +force_install_dir /home/dz/dayz +login STEAMUSER +app_update 223350 +quit
ExecStart=/home/dz/dayz/DayZServer -config=myserver.cfg -port=2302 -storage=/home/dz/world -BEpath=battleye -profiles=profiles -dologs -adminlog -netlog -freezecheck
ExecStop=/bin/kill -s INT $MAINPID
LimitNOFILE=100000
TimeoutStartSec=1800
TimeoutStopSec=300
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

What we changed from the wiki's version, all of it: the update command moved from its update.sh script straight into ExecStartPre=, with a - in front so a failed update doesn't stop the server starting; TimeoutStartSec=1800 allows a big update to finish, since the - only helps when the update returns an error code, not when it hangs; After= lists only network-online.target; we removed Group=users and the ExecReload= line; the config name and -port=2302 (the wiki's Linux example uses 2301) are ours, and -storage= is new; we dropped the wiki's -mod= list (the mods section shows how to add yours), and the steps in its update.sh that re-link mod folders and keys before every start are gone too; Description= is shorter; TimeoutStopSec=300 gives the server longer to save when you stop it; and we use Restart=always rather than on-failure, since Bohemia doesn't document the exit code left behind by a -freezecheck shutdown.

Use sudo systemctl daemon-reload first and sudo systemctl enable --now dayz after it, and watch it with journalctl -u dayz -f. Logs collect in /home/dz/dayz/profiles. The automatic update relies on SteamCMD's saved login. If that runs out, the update step fails but the game launches with the files already on disk, and you sign in again by hand.

Adding mods your players will download

  1. In SteamCMD, after force_install_dir and login as before, type workshop_download_item 221100 followed by the mod's Workshop number.
  2. Link the mod into the server folder: ln -s /home/dz/dayz/steamapps/workshop/content/221100/NUM /home/dz/dayz/NUM, with the Workshop number in place of NUM.
  3. Link its signing keys: ln -s /home/dz/dayz/steamapps/workshop/content/221100/NUM/keys/* /home/dz/dayz/keys/. Every key there is a mod author your server trusts, so only add mods from people you trust.
  4. Add the mods to ExecStart= in quotes, the way the wiki writes it: "-mod=NUM1;NUM2;". Mods meant only for the server go in -serverMod= instead, and are not sent to players.
  5. To update mods along with the game, for every mod, put +workshop_download_item 221100 NUM into the update command in the service file, just ahead of +quit. If a new version brings a key with a different file name, link that key again.

Saving your world

Your players' characters and bases live in the persistence folder, here /home/dz/world. The wiki recommends a graceful shutdown to avoid harm to characters and saved storage, so stop the server, copy, and start it again. This keeps the storage folder plus everything in the server folder except steamapps, which can be downloaded again, and tests the archive:

sudo install -d -m 700 /root/dayz-backups
sudo systemctl stop dayz
f=/root/dayz-backups/world-$(date +%F-%H%M).tar.gz
sudo bash -o pipefail -c "tar -C /home/dz --exclude=dayz/steamapps -czf $f world dayz && tar -tzf $f >/dev/null" && echo archive ok
sudo systemctl start dayz

Keep copies on another computer too, using plain rsync -a (leave out --delete, so an empty folder here can never wipe your copies there). Bringing a backup back:

  1. Stop the server with sudo systemctl stop dayz, then make sure the backup reads cleanly: sudo tar -tzf ARCHIVE > /dev/null && echo good. Go on only if it prints good.
  2. Move today's world and settings out of the way with [ ! -e /home/dz/world.old ] && [ ! -e /home/dz/dayz/myserver.cfg.old ] && sudo mv /home/dz/world /home/dz/world.old && sudo cp -p /home/dz/dayz/myserver.cfg /home/dz/dayz/myserver.cfg.old && echo moved. Carry on only if it prints moved; if a .old copy is left from last time, move or delete it first.
  3. Unpack with sudo tar -C /home/dz -xzf ARCHIVE world dayz/myserver.cfg, then sudo chown -R dz:dz /home/dz/world /home/dz/dayz/myserver.cfg.
  4. Start the server and join it. When all looks well, delete world.old and myserver.cfg.old. Changed your mind? Stop the server, put the restored world folder somewhere else, rename world.old back to world, and copy the settings back with sudo cp -p /home/dz/dayz/myserver.cfg.old /home/dz/dayz/myserver.cfg.

The server that fits

Our game servers are whole machines ranked by PassMark's single-thread score, so you can see the speed of the core your world runs on before you order. Each one comes with root access, one IPv4 address and IPv6, and an unmetered port that no other customer shares at the access switch. Choose Bucharest, Amsterdam, New York, Miami or San Francisco, and time the round trip from your own browser on the data centers page first. Ubuntu 24.04 is one of the systems you can pick at checkout; the Linux servers page has the rest.

A machine that is already racked is handed to you about 30 minutes after we approve the order, and machines built to your own spec need 4 to 24 hours when we hold the parts, and longer if we need to order a part. Billing is monthly with no contract. If you get stuck, our AI chat replies in seconds and a person takes over when you ask. Running Bohemia's military sim too? See the Arma 3 guide.

You manage the server; we keep the hardware and the network running. That means no game panel, no mod installs and no game updates done for you, so keep your own backups somewhere other than the server.

Questions people ask

Do I need to sign in to Steam to download the server?
Yes, in Bohemia's guide. Its SteamCMD commands use +login with an account name for both app 223350 and the experimental app 1042420. Valve recommends a separate account just for your servers.
Is Linux a supported choice for DayZ?
Yes. Bohemia named an official Linux server in its notes for stable update 1.24, and the wiki carries a complete Linux guide. Run the DayZServer program from its own user account, not root.
My server isn't showing in the browser. What should I check?
Set steamQueryPort in your config file, which the wiki says should fix it, and make sure your firewall lets that port through over UDP. On this page that means 2305, inside the range the firewall step above opens.
Where are my players' characters and bases saved?
In the persistence storage. The -storage= option chooses its root folder, which this guide sets to /home/dz/world, and instanceId keeps one server's files apart from another's on the same machine. Back that folder up with the server stopped.
Can I add mods from the Steam Workshop?
Yes. Download them with SteamCMD from Workshop app 221100, link each mod folder and its keys into the server folder, and list them in -mod=. Keep verifySignatures = 2 so only mods signed with a key you added can be used.

Start your DayZ world

Choose a machine by its fastest core and a city your players can reach quickly, then follow this guide on the day it is handed over.

Find your game server

Read next