Help us shape the future of Go! Take the 2026 Go Developer Survey

dayz-server-operator

module
v0.0.0-...-15a6738 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2026 License: AGPL-3.0

README

dzo logo

dzo

Run DayZ dedicated servers on Debian with rootless podman.

CI Codecov Go Reference REUSE status DeepWiki


dzo installs, configures, updates and watches one or more DayZ dedicated servers on a single Debian machine. It is one static binary: no Node.js, no shell-script fleet, no external RCon tool. Every server runs in a rootless podman container, started by systemd, and everything about your servers lives in a git repository you own.

Built with Debian Go Podman Claude

What you get

  • Servers as configuration. One instance.yaml per server (map, ports, mods, restart schedule) in a git "site" repository. dzo renders the mission and serverDZ.cfg from it, so a server can be rebuilt from git at any time, and changes to the Central Economy files are applied in place without wiping your live mission.
  • Server builds and workshop mods that never change under a running server. Steam downloads go into immutable, shared "generations". A server switches to a new one only when it restarts, and old ones are cleaned up automatically. Server builds are updated by hand, never behind your back.
  • Restarts players notice. Scheduled or manual restarts announce themselves in game, lock the server, kick the rest and start again with the new build or mods. A brake stops a server that fails to start from restarting in a loop.
  • Snapshots and restores. On btrfs, dzo snapshots an instance before upgrades, mod updates and wipes, prunes old ones by a retention policy, and restores the whole instance or a single path.
  • Monitoring and notifications. Prometheus /metrics, an Icinga/Nagios check, and Discord notifications for restarts, failed renders and failed downloads.
  • An admin API, a web interface and a live map. See who is online, send a message, teleport a player, give an item, repair or delete a vehicle, and watch players and vehicles on the map. The in-game part is the dzo-admin servermod, which only connects out to dzo.
  • A built-in BattlEye RCon client. Used for the graceful restart, dzo rcon and the player events.

The full documentation, including the quick start, the configuration reference and the operations guide, is at https://bzed.github.io/dayz-server-operator/. For the first setup there is also a two-page cheat sheet (PDF).

Install

From the apt repository (Debian 13 "trixie", amd64; signed, rebuilt from main):

dzo depends on steamcmd:i386, which is non-free and i386 only, so enable both first (see the installation guide for the details and the license prompt):

$ sudo dpkg --add-architecture i386
$ sudo sed -i /etc/apt/sources.list.d/debian.sources -e 's/^Components: main$/Components: main contrib non-free/'
$ sudo install -d -m 0755 /etc/apt/keyrings
$ sudo curl -fsSLo /etc/apt/keyrings/dzo-archive-keyring.asc https://bzed.github.io/dayz-server-operator/apt/dzo-archive-keyring.asc
$ sudo tee /etc/apt/sources.list.d/dzo.sources <<'EOF'
Types: deb
URIs: https://bzed.github.io/dayz-server-operator/apt
Suites: trixie
Components: main
Architectures: amd64
Signed-By: /etc/apt/keyrings/dzo-archive-keyring.asc
EOF
$ sudo apt update && sudo apt install dzo

The key's fingerprint is 184C DDC4 96A9 C739 D10F 67B0 FE4E E034 4431 4050.

Other ways: a .deb or a static binary from the CI artifacts, or build it yourself (a recent Go toolchain, see go.mod):

$ git clone https://github.com/bzed/dayz-server-operator.git && cd dayz-server-operator
$ make build && ./bin/dzo version                  # a static binary in ./bin
$ sudo apt install debhelper build-essential       # or the Debian package:
$ dpkg-buildpackage -us -uc -b && sudo apt install ../dzo_*.deb

Quick start

Run these as the service user (sudo -iu dayz). The quick start has every step with its explanation.

$ dzo setup                                      # directories, container images, the site checkout
$ dzo steam login --user <steam account>         # password and Steam Guard, once
$ dzo product install dayz-stable                # the server build, about 3 GB
$ # write instances/chernarus/instance.yaml in your site repository, push it, then:
$ dzo site pull && dzo site validate
$ dzo instance create chernarus                  # data volume and first mission
$ dzo instance apply chernarus                   # container units and timers
$ dzo start chernarus
$ dzo mod add 1559212036 --instance chernarus    # a workshop mod (Community Framework)
$ dzo restart chernarus --minutes 5              # announce, lock, kick, restart

Everyday commands

$ dzo status                                     # every instance: state, players, health, restarts
$ dzo logs chernarus -f                          # the server console
$ dzo mod update chernarus                       # new mod versions, applied at the next restart
$ dzo backup create chernarus && dzo backup list chernarus
$ dzo restore chernarus <snapshot>               # or one path of it

$ dzo token create web --role operator --delegate > /var/lib/dzo/secrets/web.token
$ dzo instance apply chernarus                   # starts dzo-serve (API, dzo-admin endpoint) and dzo-web:
                                                 # http://127.0.0.1:8081 (to try them by hand: dzo serve, dzo web)
$ dzo player list chernarus
$ dzo player msg chernarus all "restart in 5 minutes"
$ dzo rcon exec --instance chernarus players

$ dzo servercfg diff old/serverDZ.cfg new/serverDZ.cfg
$ dzo mod cfgpatches mods/@MyMod/addons/*.pbo    # CfgPatches and requiredAddons of a mod

dzo --help and dzo <command> --help list every flag.

Status

dzo runs real servers today, but it is young. The sections below say plainly what has been run against the real thing, what is not built, and what has not been checked yet.

Run for real

On a Debian 13 development host (rootless podman 5.4.2, a user systemd, btrfs) with a real Steam account, and on a workstation with the DayZ client:

  • Servers. DayZ 1.29 (stable) and 1.30 (experimental) run in the runtime image from the generated quadlets, side by side, with workshop mods (CF-Test on experimental) and dzo-admin; builds and mods come from steamcmd by dzo. @<workshop id> directories work as mod folders, the Steam login and the workshop path layout match what the code expects, and the process name the health check looks for is enfMain.
  • BattlEye player events from a real client with BattlEye (a signed test mod sends chat lines): connect, GUID, chat, kick and disconnect, on 1.29.
  • dzo-admin with a real client, on both 1.29 and 1.30 (scripts/test-client.sh, a headless DayZ client against a local server and dzo serve): the player list, messages in all three styles, teleport (and its refusal in a vehicle), spawning an item into the inventory, the hands and the ground, an unknown class, the crew of a vehicle, class watch rules on items, vehicle repair and delete.
  • The web interface and the map against a live server with a player, using Debian's own libjs-htmx 2.0.4 and libjs-leaflet 1.7.1 (trixie).
  • The Central Economy mission is fetched from Bohemia's repository by branch or by bare commit id, rendered, applied in place, and booted by dzo test boot (also with CF-Test on the experimental server).
  • Reading mod configs. dzo mod cfgpatches reads the CfgPatches of about 4,900 PBOs of real workshop mods (rapified config.bin, LZSS-compressed entries, per-folder configs, plain config.cpp) and agrees with armake2 on a random sample. Running it is what found and fixed the decoder bugs.
  • Backups on btrfs, as the unprivileged user, on kernel 7.x and Debian 13's 6.12.
  • Monitoring: the exporter runs on the development host against real systemd and podman, Prometheus metrics and /status included.
  • Container images and setup: both images build on podman 5.4.2 and 5.8, the game server runs in them, and dzo setup ran on the development host.

Not built yet

  • Web users with passwords and TOTP (the web interface expects an authenticating reverse proxy today).
  • The player and ban database, and the database backup that goes with it.
  • One-off restart timers and scheduled broadcasts.
  • A web page for backups.
  • Downloading map tiles from the client depot automatically (you point dzo at the client's world PBO).
  • Golden-master tests for maps whose mission is not Bohemia's (three branches were compared as data by hand; see MILESTONES.md).
  • A size-plausibility check of downloaded workshop items, and a check of real workshop PBOs for their prefix.
  • The compat.yaml boot-test gate for the servermods (make servermods writes the file; server_build stays empty until the boot test fills it).

Limits worth knowing

  • PlayerIdentity has no IP address, so dzo-admin cannot report one; IPs come from RCon.
  • The restart counter in the metrics is systemd's and has no reasons.
  • A few workshop mods ship an unreadable config.cpp (obfuscated, or built from macros): dzo mod cfgpatches reports an error for 10 of the ~4,900 PBOs. It is only a diagnostic and does not decide the load order, which is the order of the mods list.
  • The package depends on Debian's libjs-htmx and libjs-leaflet. On trixie that is htmx 2.0.4, which the pages were written for; the htmx 4 beta of forky and sid has not been tried.
  • The world sizes of sakhal and of unknown maps without tiles are guesses.

Needs live verification

Things that could not be checked yet, roughly in the order they would bite:

  • BattlEye's Verified GUID line. The other player events (connect, GUID, chat, kick, disconnect) were captured from a real client with BattlEye and the patterns fixed; the verified-GUID line needs a BattlEye master that answers, which it did not from the development host or the workstation (Ban check timed out). See the FAQ.
  • steamcmd's failure paths. A real login, server install, workshop download and forced refresh have worked. The wording of the other prompts (wrong password, Steam Guard by mail or by mobile confirmation, rate limiting) and of failed jobs is from community reports.
  • The weekly image refresh. Its command rebuilds both images on podman 5.4.2, but the timer has not fired by itself yet, and the unit on the development host predates a fix: the generated unit lacked --images-dir and --config, which broke it on any host with a non-default layout.
  • dzo test boot in some modes: --container, cfggameplay.json (the server only reads it with enableCfgGameplayFile = 1) and Windows. It has passed on 1.29 and 1.30, on a good instance, and fails on a mission script error, an XML file that does not parse and a missing <ce folder>.
  • The web interface's buttons in a browser. The pages, the map and the API actions behind the buttons work; the htmx forms were not clicked.
  • Other podman versions than 5.4.2 and 5.8 for the quadlet keys (HealthStartup*, HealthOnFailure=kill, Notify=healthy, StopTimeout, Volume=…:O), which spike S6 confirmed on 5.4.2.

Developing

$ make lint      # gofmt, go vet, golangci-lint
$ make reuse     # SPDX/REUSE licence header check
$ make test      # unit tests
$ make cover     # tests + the 85% coverage gate (D20)
$ make licenses  # dependency licence allow-list check (D15)

.github/workflows/ci.yml runs all of the above on every push, plus cross-compiled binary and .deb builds, and uploads coverage and JUnit test results to Codecov. Tests that need a real DayZ server and client (make test-findfile, make test-client) run on a development machine only; see the development guide and the testing strategy. The full design, with decisions, legacy analysis and the phased roadmap, is in IMPLEMENTATION_PLAN.md.

The packages
Package What it does
cmd/dzo The CLI that wires everything together
internal/config Loads and validates /etc/dzo/config.yaml (data paths, products, notification targets)
internal/site The site repository's schema types (site.yaml, instance.yaml, overlays) and its git plumbing
internal/resolve Combines config.yaml, the site checkout and the cache into one resolved instance, including its quadlet spec (dzo instance show)
internal/instance One instance's lifecycle: the failed-render gate, quadlet and timer materialization, systemd start/stop/restart, the BattlEye lock/kick graceful restart
internal/quadlet Renders podman quadlet .container units (health checks, networking, mounts, the start-rate limit)
internal/mission The mission render/apply pipeline: pristine fetch, staging, apply plan, atomic writes with a file history
internal/ce JSON and XML merge primitives for mission, mod and overlay data, and <ce folder> registration
internal/servercfg Parses and writes serverDZ.cfg and diffs two versions
internal/runfiles The keys, serverDZ.cfg and BattlEye config an instance needs besides its mission
internal/cache The immutable, generation-based download cache with atomic activation and safe garbage collection
internal/steam The steamcmd login state machine (pty-driven) and a non-interactive mode for scheduled jobs
internal/product Update scheduling, the Steam Web API freshness client, the steamcmd job runner and the install flow for server builds, workshop mods and local servermods
internal/moddeps Reads CfgPatches and requiredAddons from a PBO or a config.cpp (diagnostics)
internal/battleye The native BattlEye RCon client: login, commands, multi-packet answers, the event stream
internal/a2s The Valve A2S server-query client
internal/health dzo health startup and live: process, A2S and optional RCon probes
internal/hooks Runs the extension-point scripts (pre_start, post_stop, …) with a DZO_* environment
internal/notify Discord notifications, per-event templates and event coalescing
internal/monitor, internal/exporter Prometheus /metrics, JSON /status, Icinga/Nagios checks, served over HTTP or TLS with mutual TLS, a bearer token or an IP allow-list
internal/btrfs, internal/backup Snapshots by ioctl as the unprivileged user; the snapshot index, retention policy and full or partial restore
internal/admin, internal/api, internal/apiclient, internal/serve The operator side of dzo-admin (protocol, hub, audit log, spawn limits), the /api/v1 JSON API with scoped tokens, its Go client, and dzo serve
internal/web, internal/maptiles The web interface (server-rendered pages, htmx, a Leaflet map) and the map tiles built from the game's world PBOs
internal/servermods make servermods: packs servermods/*/src/* into reproducible PBOs with WoozyMasta/pbo (MIT) and writes compat.yaml
internal/boottest dzo test boot: boots a real DayZServer from a disposable tree and checks the logs
internal/setup dzo setup: data directories, the two container images (images/), the Steam login hand-off, the site clone and the weekly image refresh timer
servermods/dzo-admin The Enforce Script servermod (a submodule): state push, admin actions, marker API

Licence

AGPL-3.0-or-later. This repository follows the REUSE specification — every file carries an SPDX header, and licence texts live under LICENSES/. See LICENSE and debian/copyright for details.

Directories

Path Synopsis
cmd
dzo command
Command dzo is the dayz-server-operator CLI.
Command dzo is the dayz-server-operator CLI.
internal
a2s
Package a2s implements Valve's Server Query Protocol ("A2S"), enough to send an A2S_INFO request and parse its reply.
Package a2s implements Valve's Server Query Protocol ("A2S"), enough to send an A2S_INFO request and parse its reply.
admin
Package admin is the operator side of the dzo-admin servermod (§C16): the versioned protocol the mod speaks, one Hub per instance (world state for the map, a command queue with timeouts and idempotent ids), the endpoint the mod calls, an audit log, and the limits on what admins may do.
Package admin is the operator side of the dzo-admin servermod (§C16): the versioned protocol the mod speaks, one Hub per instance (world state for the map, a command queue with timeouts and idempotent ids), the endpoint the mod calls, an audit log, and the limits on what admins may do.
api
Package api is the JSON API /api/v1 of one dzo installation (§C12).
Package api is the JSON API /api/v1 of one dzo installation (§C12).
apiclient
Package apiclient is the Go client of /api/v1 (internal/api).
Package apiclient is the Go client of /api/v1 (internal/api).
auth
Package auth holds the primitives of web logins: password hashing, TOTP, random secrets and recovery codes, Steam OpenID verification, the address of a client behind proxies, and the delay after failed logins.
Package auth holds the primitives of web logins: password hashing, TOTP, random secrets and recovery codes, Steam OpenID verification, the address of a client behind proxies, and the delay after failed logins.
backup
Package backup is §C20: backups are read-only btrfs snapshots of an instance's subvolume, kept at <snapshots>/<instance>/<id>, recorded in an index, pruned by a retention policy and restorable.
Package backup is §C20: backups are read-only btrfs snapshots of an instance's subvolume, kept at <snapshots>/<instance>/<id>, recorded in an index, pruned by a retention policy and restorable.
battleye
Package battleye implements the BattlEye RCon protocol natively (D30): no external tools (bercon-cli, dayz_restart) and no external RCon library.
Package battleye implements the BattlEye RCon protocol natively (D30): no external tools (bercon-cli, dayz_restart) and no external RCon library.
boottest
Package boottest is `dzo test boot` (§C22): it boots a real DayZServer, from a disposable tree, on what a render produced, and says whether the game accepted it.
Package boottest is `dzo test boot` (§C22): it boots a real DayZServer, from a disposable tree, on what a render produced, and says whether the game accepted it.
broadcast
Package broadcast sends the server messages of an instance (the welcome and the messages: of instance.yaml) to the players while dzo serve runs.
Package broadcast sends the server messages of an instance (the welcome and the messages: of instance.yaml) to the players while dzo serve runs.
btrfs
Package btrfs is the few btrfs operations dzo needs for per-instance subvolumes and their snapshots (§C20), done with the kernel's ioctls as the unprivileged service user: no root, no helper, no btrfs-progs.
Package btrfs is the few btrfs operations dzo needs for per-instance subvolumes and their snapshots (§C20), done with the kernel's ioctls as the unprivileged service user: no root, no helper, no btrfs-progs.
cache
Package cache manages dzo's immutable download generations (§C2, §C7): product builds and workshop mods are downloaded once into "<root>/<generation-id>/" directories that are never modified again, with a "current" symlink selecting the active one and never-running servers touched by garbage collection.
Package cache manages dzo's immutable download generations (§C2, §C7): product builds and workshop mods are downloaded once into "<root>/<generation-id>/" directories that are never modified again, with a "current" symlink selecting the active one and never-running servers touched by garbage collection.
ce
Package ce implements the merge strategies the render pipeline needs to combine mission, mod and overlay data (FR-09/FR-09a): JSON deep merge with "mod wins" semantics and append-instead-of-replace for selected list keys (cfggameplay.json, cfgundergroundtriggers.json, cfgeffectarea.json), plus generic XML child merge/registration for the economy config (cfgeconomycore.xml <ce folder> entries).
Package ce implements the merge strategies the render pipeline needs to combine mission, mod and overlay data (FR-09/FR-09a): JSON deep merge with "mod wins" semantics and append-instead-of-replace for selected list keys (cfggameplay.json, cfgundergroundtriggers.json, cfgeffectarea.json), plus generic XML child merge/registration for the economy config (cfgeconomycore.xml <ce folder> entries).
config
Package config loads and validates dzo's operator configuration (/etc/dzo/config.yaml, §C2 of the implementation plan): data paths, the site config repo remote, server products and default notification targets.
Package config loads and validates dzo's operator configuration (/etc/dzo/config.yaml, §C2 of the implementation plan): data paths, the site config repo remote, server products and default notification targets.
exporter
Package exporter is `dzo exporter` (§C9): the collector that fills internal/monitor's Snapshot from systemd, podman, the Steam query, the instance's state files and the snapshot index, and the HTTP server that serves it with optional TLS (reloaded without a restart), a bearer token and an IP allow-list.
Package exporter is `dzo exporter` (§C9): the collector that fills internal/monitor's Snapshot from systemd, podman, the Steam query, the instance's state files and the snapshot index, and the HTTP server that serves it with optional TLS (reloaded without a restart), a bearer token and an IP allow-list.
geoip
Package geoip looks up where an IP address is: the country (for the flag next to a player), and with MaxMind's GeoLite2 databases also the city, the location and the autonomous system.
Package geoip looks up where an IP address is: the country (for the flag next to a player), and with MaxMind's GeoLite2 databases also the city, the location and the autonomous system.
geoip/geoiptest
Package geoiptest builds small GeoIP databases for tests of the packages that use internal/geoip.
Package geoiptest builds small GeoIP databases for tests of the packages that use internal/geoip.
health
Package health implements dzo's in-container health probes (§C9): HealthStartupCmd waits for the server to come up, HealthCmd checks it is still alive.
Package health implements dzo's in-container health probes (§C9): HealthStartupCmd waits for the server to come up, HealthCmd checks it is still alive.
hooks
Package hooks runs the operator's extension points (§C11): post_backup, post_download(mod), post_merge(mod), post_render, pre_start, post_stop, pre_update, post_update.
Package hooks runs the operator's extension points (§C11): post_backup, post_download(mod), post_merge(mod), post_render, pre_start, post_stop, pre_update, post_update.
instance
Package instance ties the previously built packages together into one instance's lifecycle: materializing its systemd quadlet + timer units (internal/quadlet), the render-failure gate and restart-storm protection that make up F3 (§C5), starting/stopping/restarting it via systemd, and the graceful-restart announce/lock/kick sequence (§C8, port of the legacy dayz_restart) over internal/battleye.
Package instance ties the previously built packages together into one instance's lifecycle: materializing its systemd quadlet + timer units (internal/quadlet), the render-failure gate and restart-storm protection that make up F3 (§C5), starting/stopping/restarting it via systemd, and the graceful-restart announce/lock/kick sequence (§C8, port of the legacy dayz_restart) over internal/battleye.
integrate
Package integrate turns an instance's mod integrations and overlays (§C6 steps 2 to 4) into the contributions the render merges into its staging tree: it reads the files from the site repository, from a URL (cached, optionally pinned by hash) or from the installed mod, and wires the post_merge hooks.
Package integrate turns an instance's mod integrations and overlays (§C6 steps 2 to 4) into the contributions the render merges into its staging tree: it reads the files from the site repository, from a URL (cached, optionally pinned by hash) or from the installed mod, and wires the post_merge hooks.
killfeed
Package killfeed posts the kills of the event feed (internal/admin) to Discord: a filter, a delay queue for PvP servers that must not give away a fight as it happens, and batches that stay under Discord's message limit.
Package killfeed posts the kills of the event feed (internal/admin) to Discord: a filter, a delay queue for PvP servers that must not give away a fight as it happens, and batches that stay under Discord's message limit.
legacy
Package legacy converts the git repositories of the legacy dayzdockerserver (one branch per server) into an example site configuration (§C21).
Package legacy converts the git repositories of the legacy dayzdockerserver (one branch per server) into an example site configuration (§C21).
logs
Package logs rotates the log files in an instance's profiles directory into an archive outside the instance, and writes the crash summary after an unclean exit (FR-20).
Package logs rotates the log files in an instance's profiles directory into an archive outside the instance, and writes the crash summary after an unclean exit (FR-20).
lookups
Package lookups keeps the cached answers of BattlEye's master server and of Steam about the players in the player history fresh, gently: a few requests a minute, one packet a second at most, and a long pause when a source stops answering.
Package lookups keeps the cached answers of BattlEye's master server and of Steam about the players in the player history fresh, gently: a few requests a minute, one packet a second at most, and a long pause when a source stops answering.
maptiles
Package maptiles builds an XYZ tile pyramid of a DayZ map's satellite imagery from the map's data PBO (the client's worlds_<map>_data.pbo, or a modded map's data.pbo).
Package maptiles builds an XYZ tile pyramid of a DayZ map's satellite imagery from the map's data PBO (the client's worlds_<map>_data.pbo, or a modded map's data.pbo).
mission
Package mission implements the live mission render/apply pipeline (§C6): the live mission directory is persistent game data (D13) that is never wiped or recreated.
Package mission implements the live mission render/apply pipeline (§C6): the live mission directory is persistent game data (D13) that is never wiped or recreated.
moddeps
Package moddeps validates mod load-order dependencies from CfgPatches requiredAddons (§C7, FR-06a): DayZ does not give the -mod= list a reliable ordering meaning, so what actually decides whether a mod's scripts/configs load is each addon's CfgPatches requiredAddons entries, which every active mod (and the product build itself) must collectively satisfy.
Package moddeps validates mod load-order dependencies from CfgPatches requiredAddons (§C7, FR-06a): DayZ does not give the -mod= list a reliable ordering meaning, so what actually decides whether a mod's scripts/configs load is each addon's CfgPatches requiredAddons entries, which every active mod (and the product build itself) must collectively satisfy.
moderation
Package moderation keeps bans, ban evidence and player sightings in a SQLite database, renders BattlEye's bans.txt from them, and enforces bans on running servers through RCon (docs/superpowers/specs/2026-10-16-player-bans-design.md).
Package moderation keeps bans, ban evidence and player sightings in a SQLite database, renders BattlEye's bans.txt from them, and enforces bans on running servers through RCon (docs/superpowers/specs/2026-10-16-player-bans-design.md).
monitor
Package monitor implements dzo-exporter's /metrics and /status endpoints and the Icinga (Monitoring Plugins API) check commands (§C9, FR-18a, D22): Icinga runs remotely, so everything here is reachable over the network rather than executed as a local plugin.
Package monitor implements dzo-exporter's /metrics and /status endpoints and the Icinga (Monitoring Plugins API) check commands (§C9, FR-18a, D22): Icinga runs remotely, so everything here is reachable over the network rather than executed as a local plugin.
notify
Package notify implements dzo's Notifier interface and a Discord webhook implementation (§C9, FR-18b, Q14): mod update detected/downloaded/ applied, server build available, restart scheduled/started/finished, health unhealthy/recovered, crash loop, render/validation failed, drift detected, Steam login required, job failed.
Package notify implements dzo's Notifier interface and a Discord webhook implementation (§C9, FR-18b, Q14): mod update detected/downloaded/ applied, server build available, restart scheduled/started/finished, health unhealthy/recovered, crash loop, render/validation failed, drift detected, Steam login required, job failed.
presence
Package presence turns the live player list of each instance into the player history: who joined and left which instance and when.
Package presence turns the live player list of each instance into the player history: who joined and left which instance and when.
product
Package product implements the parts of the update engine (§C7) that are fully specifiable and testable without a live Steam account or a real DayZ install:
Package product implements the parts of the update engine (§C7) that are fully specifiable and testable without a live Steam account or a real DayZ install:
quadlet
Package quadlet renders podman quadlet unit files (§C4/§C5): dzo generates these itself rather than relying on `podman generate systemd` (deprecated, A8#12) or the `podman quadlet` management CLI (newer than the podman 5.4.2 baseline, §C0).
Package quadlet renders podman quadlet unit files (§C4/§C5): dzo generates these itself rather than relying on `podman generate systemd` (deprecated, A8#12) or the `podman quadlet` management CLI (newer than the podman 5.4.2 baseline, §C0).
resolve
Package resolve turns the operator config (internal/config), the site checkout (internal/site) and the download cache (internal/cache) into one already-resolved Instance: the single value the mission, product, quadlet and instance packages take their input from (§C3, §C6, §C7).
Package resolve turns the operator config (internal/config), the site checkout (internal/site) and the download cache (internal/cache) into one already-resolved Instance: the single value the mission, product, quadlet and instance packages take their input from (§C3, §C6, §C7).
runfiles
Package runfiles renders the files an instance needs to start besides its mission: the signature keys, serverDZ.cfg with what dzo owns enforced, and the BattlEye seed config with the RCon port and password (§C6 steps 2, 6 and 7).
Package runfiles renders the files an instance needs to start besides its mission: the signature keys, serverDZ.cfg with what dzo owns enforced, and the BattlEye seed config with the RCon port and password (§C6 steps 2, 6 and 7).
serve
Package serve runs `dzo serve`: the /api/v1 listener and the endpoint the dzo-admin mods call, over hubs built from the site config.
Package serve runs `dzo serve`: the /api/v1 listener and the endpoint the dzo-admin mods call, over hubs built from the site config.
servercfg
Package servercfg parses and writes DayZ's serverDZ.cfg format: a flat list of "key = value;" and "key[] = {v1, v2, ...};" statements, where values are either double-quoted strings or bare tokens (numbers).
Package servercfg parses and writes DayZ's serverDZ.cfg format: a flat list of "key = value;" and "key[] = {v1, v2, ...};" statements, where values are either double-quoted strings or bare tokens (numbers).
servermods
Package servermods packs dzo's own servermods (D39) from their source trees into PBOs: `make servermods`.
Package servermods packs dzo's own servermods (D39) from their source trees into PBOs: `make servermods`.
setup
Package setup is `dzo setup`: the first-time steps after installing the package, run as the service user.
Package setup is `dzo setup`: the first-time steps after installing the package, run as the service user.
site
Package site models the site config repo (§C3): shared mod integrations and overlays plus per-instance configuration, checked out from a configurable git remote (D16).
Package site models the site config repo (§C3): shared mod integrations and overlays plus per-instance configuration, checked out from a configurable git remote (D16).
steam
Package steam drives an interactive steamcmd login over a pseudo-terminal (§C7 "Steam authentication"): steamcmd needs a human for the password and a Steam Guard factor (e-mail code, mobile-authenticator code, or an in-app confirmation), and its cached session can expire at any time, so dzo treats login as a recurring interactive operator task rather than a one-time setup.
Package steam drives an interactive steamcmd login over a pseudo-terminal (§C7 "Steam authentication"): steamcmd needs a human for the password and a Steam Guard factor (e-mail code, mobile-authenticator code, or an in-app confirmation), and its cached session can expire at any time, so dzo treats login as a recurring interactive operator task rather than a one-time setup.
steamweb
Package steamweb reads what Steam says about a player: the community profile page (no key) and, with a Web API key, the ban counts, account details, DayZ playtime, level and friends.
Package steamweb reads what Steam says about a player: the community profile page (no key) and, with a Web API key, the ban counts, account details, DayZ playtime, level and friends.
tlsfiles
Package tlsfiles serves TLS certificates and CA pools from files and picks up changes to those files without a restart, so a renewed certificate (by certbot or any other tool) takes effect on its own.
Package tlsfiles serves TLS certificates and CA pools from files and picks up changes to those files without a restart, so a renewed certificate (by certbot or any other tool) takes effect on its own.
units
Package units is `dzo units sync` (§C5): it writes the systemd units dzo generates, the quadlet of every instance and the timers and services that run restarts, backups, update checks and the exporter, and removes the ones that no longer apply.
Package units is `dzo units sync` (§C5): it writes the systemd units dzo generates, the quadlet of every instance and the timers and services that run restarts, backups, update checks and the exporter, and removes the ones that no longer apply.
updates
Package updates is the update engine (§C7): `dzo update check [--apply]`, run hourly by a timer.
Package updates is the update engine (§C7): `dzo update check [--apply]`, run hourly by a timer.
version
Package version holds build-time version information stamped via -ldflags.
Package version holds build-time version information stamped via -ldflags.
web
Package web is the dzo web interface (§C12): server-rendered pages with htmx and a Leaflet map.
Package web is the dzo web interface (§C12): server-rendered pages with htmx and a Leaflet map.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL