Configuration
All server config is driven by environment variables in .env. The entrypoint patches data/R5/ServerDescription.json from those variables on every container start, so you never edit JSON by hand for normal use.
Apply config changes
nano .env
./windrose update
update recreates the container, which re-applies the env to the JSON.
Variable reference
Server identity
| Variable | Default | Description |
|---|---|---|
SERVER_NAME |
MrGuato Windrose Server |
Display name shown to players |
SERVER_NOTE |
empty | Optional description or MOTD |
SERVER_PASSWORD |
empty | Set to require a password to join |
MAX_PLAYERS |
4 |
Maximum concurrent players |
INVITE_CODE |
empty | Override the auto-generated code |
When SERVER_PASSWORD is empty the server is open. When set, password protection is enabled automatically.
Network
| Variable | Default | Description |
|---|---|---|
PORT |
7777 |
Game port (UDP) |
QUERYPORT |
7778 |
Query port (UDP) |
MULTIHOME |
0.0.0.0 |
Bind address inside the container |
P2P_PROXY_ADDRESS |
127.0.0.1 |
P2P proxy address used by Windrose |
SteamCMD
| Variable | Default | Description |
|---|---|---|
STEAM_LOGIN |
anonymous |
SteamCMD account; anonymous works for this AppID |
STEAM_PASS |
empty | Only set if STEAM_LOGIN is not anonymous |
WINDROSE_APP_ID |
4129620 |
Steam AppID for the Windrose dedicated server |
UPDATE_ON_START |
true |
Run SteamCMD validate on every container start |
Image and runtime
| Variable | Default | Description |
|---|---|---|
IMAGE_REPOSITORY |
ghcr.io/mrguato/windrose-dedicated-server |
Image source |
IMAGE_TAG |
latest |
Image tag (use vX.Y.Z for production) |
CONTAINER_NAME |
windrose |
Docker container name |
HOSTNAME_OVERRIDE |
windrose |
Container hostname |
PUID |
1000 |
UID inside container; match host directory ownership |
PGID |
1000 |
GID inside container |
GENERATE_SETTINGS |
true |
Auto-generate and patch ServerDescription.json |
Wine
| Variable | Default | Description |
|---|---|---|
WINEARCH |
win64 |
Wine architecture |
WINEPREFIX |
/home/steam/.wine |
Wine prefix path inside container |
Manual JSON editing
If you need a field the env-based patcher does not expose, stop the container first or your edits will be overwritten:
./windrose stop
nano data/R5/ServerDescription.json
./windrose start
To prevent the entrypoint from patching the file at all, set GENERATE_SETTINGS=false in .env.
Volumes
| Host path | Container path | Contents |
|---|---|---|
./data |
/data |
Server files, saves, ServerDescription.json |
./steam-home |
/home/steam |
Wine prefix, SteamCMD cache |
Both must be owned by 1000:1000 on the host. ./windrose setup does this automatically.
Pinning to a specific image version
For production, pin a specific tag in .env:
IMAGE_TAG=v1.0.0
Then ./windrose update only pulls that exact version. List available tags at the Container image page.