# RuneScape: Dragonwilds — panel-native module

Panel-native Dragonwilds dedicated server, native-Linux (no Wine), debian:12-slim base.

- **Image:** `panel-dragonwilds:latest` — built from `./Dockerfile`.
- **Game files:** downloaded by the panel's SteamCMD updater sidecar (app 4019830) into the `panel-<id>-game` named volume. Dragonwilds is a multi-depot app (Windows 4019831 + Linux 3501791) — module declares `platform: linux` so SteamCMD's auto-detect doesn't mis-fire on Docker Desktop WSL2. Linux depot is ~1.6 GB compressed, ~5.8 GB on disk.
- **Saves:** `panel-<id>-saves` at `/game-saves`. Entrypoint migrates `RSDragonwilds/Saved/` into the save volume on first discovery and symlinks back, so SteamCMD validate can't wipe worlds or config.
- **RCON:** **None.** Jagex has not documented or implemented a remote admin protocol. The Players tab will stay empty until we wire log-tail join/leave regex from observing real player traffic.

## Ports

| Port | Proto | Purpose |
|------|-------|---------|
| 7777 | UDP | Game traffic |

Additional instances on the same host should use 7778, 7779, etc.

## Required configuration

Jagex requires 4 mandatory values in `RSDragonwilds/Saved/Config/LinuxServer/DedicatedServer.ini`:

- `ServerName`
- `DefaultWorldName`
- `OwnerID` — the Steam ID (or Jagex account ID?) of the server owner
- `AdminPassword`

The entrypoint seeds `DedicatedServer.ini` on first boot from env vars (`SERVER_NAME`, `DEFAULT_WORLD_NAME`, `OWNER_ID`, `ADMIN_PASSWORD`). Operators should set `OWNER_ID` and `ADMIN_PASSWORD` before the first launch or the server will reject client logins. Hand-edit via the Files tab after the first boot is also fine — the entrypoint only seeds when the file is missing.

## Environment vars

| Var | Default | Notes |
|-----|---------|-------|
| `SERVER_NAME` | `panel Dragonwilds` | Shown in the server browser |
| `SERVER_PORT` | `7777` |  |
| `DEFAULT_WORLD_NAME` | `Gielinor` | World loaded on start |
| `OWNER_ID` | *(empty)* | Operator must set |
| `ADMIN_PASSWORD` | *(empty)* | Operator must set |

## Known gotchas

- Multi-depot SteamCMD install — without `platform: linux` in the manifest, SteamCMD exits 8 "Missing configuration" on Docker Desktop WSL2 (same class as Palworld).
- Linux launcher at `/game/RSDragonwildsServer.sh` is a shell wrapper around the real UE5 shipping binary under `RSDragonwilds/Binaries/Linux/`. The entrypoint probes for both and prefers the wrapper when available.
- No RCON → no admin/broadcast/kick from the panel. Use in-game commands via the server operator.

## Reference

- [Jagex dedicated server guide](https://dragonwilds.runescape.com/news/how-to-dedicated-servers)
- [RuneScape: Dragonwilds Wiki — Dedicated Servers / Linux](https://dragonwilds.runescape.wiki/w/Dedicated_Servers/Linux)
