mirror of
https://github.com/nickyeoman/docker-compose-cookbooks.git
synced 2026-10-22 20:16:22 +00:00
runescape-dragonwilds: add dedicated server stack
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,81 @@
|
|||||||
|
# runescape-dragonwilds
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Dedicated server for RuneScape: DragonWilds, run via SteamCMD. Server files are downloaded/updated on start and saves persist to a host volume.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [indifferentbroccoli/runescape-dragonwilds-server-docker](https://github.com/indifferentbroccoli/runescape-dragonwilds-server-docker)
|
||||||
|
- **Container Image:** [Docker Hub](https://hub.docker.com/r/indifferentbroccoli/runescape-dragonwilds-server-docker)
|
||||||
|
- **Compose Example:** [Compose](https://github.com/indifferentbroccoli/runescape-dragonwilds-server-docker#docker-compose)
|
||||||
|
- **Reverse Proxy Port:** none — game traffic is UDP `7777` (game) and `8888` (beacon), not proxied through NPM
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
1. Copy `sample.env` to `.env` and set `RSDW_OWNER_ID` (your Player ID, found in the game's Settings) and `RSDW_ADMIN_PASSWORD`
|
||||||
|
2. Forward UDP `7777` and `8888` on your router/firewall to the Docker host
|
||||||
|
3. Start the container: `docker compose up -d`
|
||||||
|
4. Watch the first start (it downloads the server files): `docker compose logs -f`
|
||||||
|
5. In game, find the server by `RSDW_SERVER_NAME` and use `RSDW_ADMIN_PASSWORD` for Server Management
|
||||||
|
|
||||||
|
## Environment Variable Notes
|
||||||
|
|
||||||
|
RSDW_OWNER_ID – REQUIRED. Your RuneScape: DragonWilds Player ID (in-game Settings)
|
||||||
|
RSDW_ADMIN_PASSWORD – REQUIRED. Server Management password, default: ChangeThisPassword
|
||||||
|
RSDW_WORLD_PASSWORD – optional join password; empty = public
|
||||||
|
RSDW_SERVER_NAME – server display name, default: DragonWildsServer
|
||||||
|
RSDW_WORLD_NAME – world created on first start, default: MyWorld
|
||||||
|
RSDW_MAX_PLAYERS – default: 6
|
||||||
|
RSDW_PORT – game UDP port, default: 7777 (also sets DEFAULT_PORT in the container)
|
||||||
|
RSDW_BEACON_PORT – world settings beacon UDP port, default: 8888 (also sets BEACON_PORT)
|
||||||
|
RSDW_UPDATE_ON_START – set false to skip SteamCMD download/validation on start
|
||||||
|
RSDW_PUID / RSDW_PGID – owner of the server files, default: 1000
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/home/steam/server-files – host path /data/runescape-dragonwilds/server-files (server binaries, saves, config)
|
||||||
|
|
||||||
|
Back up the saves inside this directory; the server binaries can be re-downloaded.
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network (declared for convention only — players connect directly over UDP, not through NPM).
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name runescape-dragonwilds \
|
||||||
|
--restart unless-stopped \
|
||||||
|
--stop-timeout 30 \
|
||||||
|
-p 7777:7777/udp \
|
||||||
|
-p 8888:8888/udp \
|
||||||
|
-e OWNER_ID=YourPlayerId \
|
||||||
|
-e ADMIN_PASSWORD=ChangeThisPassword \
|
||||||
|
-v /data/runescape-dragonwilds/server-files:/home/steam/server-files \
|
||||||
|
indifferentbroccoli/runescape-dragonwilds-server-docker:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
See compose.yaml for the full set of environment variables.
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
- Host and container ports **must match** — mismatched ports cause join failures. The compose file uses the same var for both sides; don't remap one without the other.
|
||||||
|
- The beacon port (8888) is required for creating/editing worlds.
|
||||||
|
- The server won't show up without working port forwarding and a valid `OWNER_ID`/`ADMIN_PASSWORD`.
|
||||||
|
- RAM: about 2 GB + 1 GB per player (8 GB for a full 6-player server).
|
||||||
|
- `stop_grace_period: 30s` gives the server time to save on shutdown.
|
||||||
|
- Crossplay (PC, PS5, Xbox Series X|S, Switch 2) is supported since 1.0. The image doesn't set `PlatformPolicy` in `DedicatedServer.ini`, so the game default (`Crossplay`) applies. It rewrites that file on every start, so a manual `PlatformPolicy=` edit to lock the server to one platform won't survive a restart.
|
||||||
|
- Clients must be on the same game version as the server — keep `RSDW_UPDATE_ON_START=true` and restart after game patches. There is no cross-save: character progress doesn't carry between platforms.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: runescape-dragonwilds
|
||||||
|
Compose file path: runescape-dragonwilds/compose.yaml
|
||||||
|
Additional env file (optional): runescape-dragonwilds/sample.env
|
||||||
|
|
||||||
|
Then "Load" runescape-dragonwilds/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
runescape-dragonwilds:
|
||||||
|
image: ${RSDW_IMAGE:-indifferentbroccoli/runescape-dragonwilds-server-docker:latest}
|
||||||
|
restart: ${RSDW_RESTART:-unless-stopped}
|
||||||
|
stop_grace_period: 30s
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/runescape-dragonwilds/server-files:/home/steam/server-files
|
||||||
|
environment:
|
||||||
|
- PUID=${RSDW_PUID:-1000}
|
||||||
|
- PGID=${RSDW_PGID:-1000}
|
||||||
|
- UPDATE_ON_START=${RSDW_UPDATE_ON_START:-true}
|
||||||
|
- OWNER_ID=${RSDW_OWNER_ID:-}
|
||||||
|
- SERVER_NAME=${RSDW_SERVER_NAME:-DragonWildsServer}
|
||||||
|
- DEFAULT_WORLD_NAME=${RSDW_WORLD_NAME:-MyWorld}
|
||||||
|
- ADMIN_PASSWORD=${RSDW_ADMIN_PASSWORD:-ChangeThisPassword}
|
||||||
|
- WORLD_PASSWORD=${RSDW_WORLD_PASSWORD:-}
|
||||||
|
- DEFAULT_PORT=${RSDW_PORT:-7777}
|
||||||
|
- BEACON_PORT=${RSDW_BEACON_PORT:-8888}
|
||||||
|
- MAX_PLAYERS=${RSDW_MAX_PLAYERS:-6}
|
||||||
|
ports: # host and container ports must match
|
||||||
|
- "${RSDW_PORT:-7777}:${RSDW_PORT:-7777}/udp"
|
||||||
|
- "${RSDW_BEACON_PORT:-8888}:${RSDW_BEACON_PORT:-8888}/udp"
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Compose
|
||||||
|
VOL_PATH=/data
|
||||||
|
RSDW_IMAGE=indifferentbroccoli/runescape-dragonwilds-server-docker:latest
|
||||||
|
RSDW_RESTART=unless-stopped
|
||||||
|
RSDW_PORT=7777
|
||||||
|
RSDW_BEACON_PORT=8888
|
||||||
|
|
||||||
|
# Server
|
||||||
|
RSDW_PUID=1000
|
||||||
|
RSDW_PGID=1000
|
||||||
|
RSDW_UPDATE_ON_START=true
|
||||||
|
RSDW_OWNER_ID=
|
||||||
|
RSDW_SERVER_NAME=DragonWildsServer
|
||||||
|
RSDW_WORLD_NAME=MyWorld
|
||||||
|
RSDW_ADMIN_PASSWORD=ChangeThisPassword
|
||||||
|
RSDW_WORLD_PASSWORD=
|
||||||
|
RSDW_MAX_PLAYERS=6
|
||||||
Reference in New Issue
Block a user