This repository uses a GitHub Actions CI pipeline that automatically builds and pushes an Arma Reforger dedicated server Docker image to the GitHub Container Registry (ghcr.io/gruppe-adler/ars-image) whenever a git tag is pushed. No manual workflow triggering is needed — just push a tag in the right format.
Tags must follow this four-part format, matching the Arma Reforger version number exactly:
<major>.<minor>.<patch>.<build>.<branch>
| Segment | Description | Example |
|---|---|---|
major |
Major version | 1 |
minor |
Minor version | 6 |
patch |
Patch number | 0 |
build |
Build number | 119 |
branch |
Release channel | stable or experimental |
| Git Tag | Tags produced | Steam branch |
|---|---|---|
1.6.0.119.stable |
ars-image:stable, ars-image:1.6.0.119 |
Stable (App ID 1874900) |
1.7.0.24.experimental |
ars-image:experimental, ars-image:1.7.0.24 |
Experimental (App ID 1890870) |
Tip: Match the tag to the official Arma Reforger version number shown in-game or on the Arma Reforger news page so it's clear which game build the image contains.
- The pipeline splits the tag on the last
.to extract:- VERSION — everything before the last dot (e.g.
1.6.0.119) - BRANCH_NAME — the last segment (
stableorexperimental)
- VERSION — everything before the last dot (e.g.
- If
BRANCH_NAMEisexperimental, Steam downloads from App ID1890870(the experimental branch); otherwise it uses1874900(stable). - Two tags are pushed to the GitHub Container Registry:
ghcr.io/gruppe-adler/ars-image:<branch>— floating tag, always points to the latest build on that channelghcr.io/gruppe-adler/ars-image:<version>— pinned tag for this exact game version
The server runs as the unprivileged user ubuntu (1000:1000) with HOME=/home/ubuntu. The installation in /ars stays owned by root and is only read and executed; the server writes to the -profile and -addonDownloadDir directories and /tmp.
arsa-backend also runs as 1000:1000 and owns the mounted config, profile and mod directories. It starts the server containers with that user explicitly (ARSA_ARS_USER), with all capabilities dropped and no-new-privileges, so older tags of this image that default to root run unprivileged as well.
When running the image by hand, the mounted directories must be writable for 1000:1000.
- Write access to this repository
- Git installed locally
# Pull latest changes first
git checkout main
git pull
# Tag with the current stable Arma Reforger version
git tag 1.6.0.119.stable
git push --tagsgit tag 1.7.0.24.experimental
git push --tagsThe CI pipeline starts automatically. Monitor progress under the Actions tab in GitHub.
If you need to retag or redo a build:
# Delete locally
git tag -d 1.6.0.119.stable
# Delete on remote
git push -f --tagsThen recreate and push the tag as normal.
| Branch name | Purpose | Steam App ID |
|---|---|---|
stable (or anything else) |
Stable production server builds | 1874900 |
experimental |
Experimental / beta server builds | 1890870 |
Any branch name other than experimental is treated as a stable release.