Configuration reference
Everything is configured through environment variables (read directly by the panel and the
supervisor) and a few build args (baked at image build time). With Docker Compose, copy
.env.example to .env and edit.
Build args (image build time)
| Arg | Default | Purpose |
|---|---|---|
GSI_URL |
https://depot.tribes2.net/legacy/tribes2gsi.exe |
The public Tribes 2 GSI installer. GameData is extracted from it at build time with REWise — the installer is never run. |
GSI_SHA256 |
(empty) | If set, the downloaded GSI installer is checksum-verified. |
REWISE_REF |
(pinned commit) | Git ref of REWise compiled in the rewise-build stage to extract the GSI. |
PATCH_URL |
the community QoL patch URL | NSIS installer .exe; its payload is 7z-extracted over GameData. |
PATCH_SHA256 |
(empty) | If set, the downloaded patch is checksum-verified. |
VCREDIST_URL |
https://aka.ms/vs/17/release/vc_redist.x86.exe |
Microsoft’s official VC++ 2022 x86 redistributable, fetched at build time and unpacked with cabextract; the runtime DLLs land in the Wine system32. |
VCREDIST_SHA256 |
(empty) | If set, the downloaded redist is checksum-verified. |
PE_SET_LAA |
1 |
Set LARGE_ADDRESS_AWARE on Tribes2.exe — a 32-bit process gets ~4 GB of user address space instead of 2 GB on a 64-bit host, so a long-running server is far less likely to die on allocation failure. 0 to skip. |
PE_CLEAR_ASLR |
1 |
Clear DYNAMIC_BASE on IFC22.dll so it loads at its preferred base every run, making the fault addresses in crash reports comparable between restarts. Relocations stay intact. 0 to skip. |
WINE_BRANCH |
stable |
WineHQ branch (stable/staging/devel). |
WINE_VERSION |
10.0.0.0 |
Pinned Wine version (Wine 11 regresses the mission-start path). Blank = latest for the branch. |
BASE_IMAGE |
tribes2-server:base |
(mod images only) the base image to derive from. |
The VC++ runtime is fetched from Microsoft at build time (so Microsoft is the distributor and no Microsoft binaries are committed to this repo). See Building & deploying → licensing.
See Building & deploying for how to pass these.
Runtime environment variables
Game launch & ruleset
| Var | Default | Purpose |
|---|---|---|
LAUNCH_PARAMS |
-online -dedicated |
Base launch parameters. -online (or -nologin) first, -dedicated last. |
SERVER_RULESET |
"" (base image) |
Selects -mod <ruleset>. Empty or base = no -mod. Mod images default this (Classic/Construction). See Rulesets & mods. |
GRACE_SECONDS |
20 |
Seconds to wait for a graceful quit(); before killing the process tree. |
RESTART_BACKOFF |
5 |
Seconds to wait before relaunching after an exit. |
RESTART_ON_CRASH |
true |
If false, the supervisor stays down after the game exits. |
GAME_CPU_AFFINITY |
(unset) | If set (e.g. 0-3), the game is launched under taskset -c. |
CONSOLE_RING |
1000 |
Lines of console history kept in memory for new SSE subscribers. |
The panel can override
LAUNCH_PARAMSand the ruleset at runtime (persisted in the DB); the env values are the defaults offered during first-time setup.
Paths (rarely changed)
| Var | Default |
|---|---|
GAME_DIR |
/opt/wineprefix/drive_c/Dynamix/Tribes2/GameData |
WINEPREFIX |
/opt/wineprefix |
WINEARCH |
win32 |
WINE_BIN |
wine |
EXE_PATH_WIN |
C:\Dynamix\Tribes2\GameData\Tribes2.exe |
WINEDEBUG |
-all |
WINEDLLOVERRIDES |
(set in the Dockerfile for the vcrun DLLs) |
Panel: ports, database, root user
| Var | Default | Purpose |
|---|---|---|
HTTP_PORT |
8080 |
Panel HTTP port (always on; also used for ACME HTTP-01). |
HTTPS_PORT |
8443 |
Panel HTTPS port (only bound if a cert is configured). |
PANEL_DB_PATH |
/data/panel.db |
SQLite/Turso-compatible database file. |
DATAPROTECTION_DIR |
<db dir>/keys |
Where ASP.NET Data Protection keys are persisted (so cookies survive restarts). |
ROOT_USERNAME |
root |
Initial root username (also accepts PANEL_ROOT_USERNAME or ROOT_USER). |
ROOT_PASSWORD |
(required on first boot) | Initial root password (also accepts PANEL_ROOT_PASSWORD or ROOT_PASS). Minimum 8 characters. Needed to seed the first root user. |
The root user is seeded once, on first boot, only if no root exists. After that,
ROOT_PASSWORDis ignored — manage users in the panel. If you setROOT_USER/ROOT_USERNAME, log in with that username; otherwise the default isroot.
TLS
See TLS for details and examples.
| Var | Default | Purpose |
|---|---|---|
SELF_SIGNED_CERT |
0 |
1 to generate/persist a self-signed cert from SELF_SIGNED_*. |
SELF_SIGNED_SUBJECT |
(empty) | e.g. CN=tribes2.example.com (overrides SELF_SIGNED_CN). |
SELF_SIGNED_CN |
tribes2-panel |
Common name if no subject given. |
SELF_SIGNED_DNS |
(empty) | Comma list of DNS SANs. |
SELF_SIGNED_IP |
(empty) | Comma list of IP SANs. |
SELF_SIGNED_DAYS |
365 |
Validity. |
SELF_SIGNED_PASSWORD |
(empty) | PFX password for the persisted cert. |
SELF_SIGNED_PATH |
/data/self-signed.pfx |
Where the cert is persisted. |
LETS_ENCRYPT_CERT |
0 |
1 to provision via ACME (LettuceEncrypt). |
LETS_ENCRYPT_EMAIL |
(empty) | ACME account email. |
LETS_ENCRYPT_DOMAINS |
(empty) | Comma list of domains. |
LETS_ENCRYPT_STAGING |
0 |
1 to use the Let’s Encrypt staging CA. |
LETS_ENCRYPT_CERT_DIR |
/data/letsencrypt |
Where ACME state/certs are persisted. |
LETS_ENCRYPT_PFX_PASSWORD |
(empty) | Password for persisted ACME PFX. |
Ports
| Port | Proto | What |
|---|---|---|
8080 |
tcp | Panel HTTP |
8443 |
tcp | Panel HTTPS (if a cert is configured) |
28000 |
udp | Tribes 2 game traffic |
Persisting data
Mount a volume at /data to persist the database, Data-Protection keys, and TLS material
across container recreation. Compose does this per service (base-data, classic-data, …).
See also
- Building & deploying · TLS · Rulesets & mods
- Back to docs index