Sign inSign up

lancommander/zandronum

By lancommander

Updated 8 months ago

A Docker container to host a Zandronum game server

Image
0

241

lancommander/zandronum repository overview

Zandronum Dedicated Server (Docker)

This repository provides a Dockerized Zandronum dedicated server suitable for running multiplayer Doom servers in a clean, reproducible way.
The image is designed for headless operation, supports bind-mounted WADs and configuration, and handles legacy runtime dependencies required by Zandronum.


Features

  • Runs the Zandronum dedicated server (zandronum-server)
  • Automatically creates a minimal server.ini if none exists
  • Optionally downloads and extracts WAD/PK3 archives from URLs at startup
  • Non-root runtime using gosu
  • Automated build & push via GitHub Actions

Docker Compose Example

services:
  zandronum:
    image: lancommander/zandronum:3.2.1
    container_name: zandronum-server

    # Zandronum uses UDP
    ports:
      - "10666:10666/udp"

    # Bind mounts so files appear on the host
    volumes:
      - ./config:/config

    environment:
      # Optional: download mods/maps at startup
      # EXTRA_WAD_URLS: >
      #   https://example.com/maps.zip,
      #   https://example.com/gameplay.pk3

      # Optional overrides
      # SERVER_PORT: 10666
      # SERVER_CONFIG: /config/server.ini
      # SERVER_ARGS: '+map map01 +sv_hostname "My Zandronum Server"'

    # Ensure container restarts if the server crashes or host reboots
    restart: unless-stopped

Directory Layout (Host)

.
├── config/
│   └── server.ini
    ├── doom2.wad
    ├── gameplay.pk3
    └── maps.zip

Both directories must be writable by Docker.


Configuration

If /config/server.ini does not exist, the container will generate a minimal default on first startup.

An autoexec.cfg file can also be created for adjusting server settings. Example:

set sv_hostname "My Zandronum Server"
set sv_maxclients 16
set sv_maxplayers 16
set sv_broadcast 1

set sv_coop 1
set sv_deathmatch 0
set sv_teamplay 0

All gameplay rules, cvars, maps, and RCON settings should live here.

Supported Content Types

All matching files in /config are automatically loaded at startup and passed to Zandronum using -file arguments.

Supported file types:

  • .wad
  • .pk3
  • .pk7
  • .pke
  • .zip

Archives provided via EXTRA_WAD_URLS are extracted into /config before startup.


Environment Variables

VariableDescriptionDefault
SERVER_PORTUDP port the server listens on10666
SERVER_CONFIGPath to the server configuration file/config/server.ini
EXTRA_WAD_URLSURLs to download and extract into /config at startup(empty)
SERVER_ARGSAdditional Zandronum command-line arguments (advanced)(empty)
EXTRA_WAD_URLS

A list of URLs separated by commas, spaces, or newlines.

Examples:

EXTRA_WAD_URLS="https://example.com/maps.zip,https://example.com/mod.pk3"

Archives are extracted into /wads. Single files are copied as-is.


Running the Server

mkdir -p config wads
chmod -R 777 config wads

docker run --rm -it \
  -p 10666:10666/udp \
  -v "$(pwd)/config:/config" \
  lancommander/zandronum:3.2.1
With automatic WAD downloads

docker run --rm -it
-p 10666:10666/udp
-v "$(pwd)/config:/config"
-e EXTRA_WAD_URLS="https://example.com/modpack.zip"
lancommander/zandronum:3.2.1

Ports

  • UDP 10666 – default Zandronum server port (Additional ports may be used if auto-incrementing)

License

Zandronum is distributed under its own license. This repository contains only Docker build logic and helper scripts licensed under MIT.

Tag summary

Content type

Image

Digest

sha256:298324ec0

Size

162.8 MB

Last updated

8 months ago

docker pull lancommander/zandronum:3.2.1