From de6543acf5f3d64bbc5c5470ea0136059fcdafe9 Mon Sep 17 00:00:00 2001 From: Joel Maxwell Date: Sun, 10 May 2026 18:40:00 -0300 Subject: [PATCH] Add README.md documenting Windrose dedicated server deployment --- README.md | 400 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 400 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..4ef46c6 --- /dev/null +++ b/README.md @@ -0,0 +1,400 @@ +Windrose Dedicated Server — TrueNAS SCALE Deployment Guide + +A fully working configuration for running the Windrose Dedicated Server (Windows build) inside a TrueNAS SCALE container using Wine + DXVK, with persistent saves, explicit world selection, and fixed hostname resolution for ICE/P2P networking. + + + +This README documents the exact setup currently running in production. + + + +Table of Contents + +Overview + + + +Directory Layout + + + +Environment Variables + + + +Hostname Resolution (ICE/P2P Fix) + + + +DXVK Behavior + + + +Server Launch Command + + + +Entrypoint Behavior Summary + + + +Networking Requirements + + + +Troubleshooting + + + +Future Enhancements + + + +Overview + +This deployment runs: + + + +Windrose Dedicated Server (Windows build) + + + +Inside a TrueNAS SCALE App container + + + +Using Wine + DXVK + + + +With persistent world saves + + + +With explicit WORLD\_ID selection + + + +With hostname resolution fixes for ICE/P2P + + + +With non‑fatal DXVK installation fallback + + + +With stable LAN/WAN connectivity + + + +This configuration is confirmed working as of: + + + +May 10, 2026 + + + +Directory Layout + +Persistent Storage + +Mounted into the container: + + + +Code + +/data/Saved + +Windrose stores all world data here: + + + +Code + +/data/Saved/SaveProfiles/Default/RocksDB/0.10.0/Worlds// + +Game Installation Directory + +Code + +/server + +/server/R5 + +This is where SteamCMD installs the Windrose server files. + + + +Environment Variables + +Set these in the TrueNAS SCALE App → Environment Variables. + + + +Required + +Variable Description + +WORLD\_ID Folder name of the world to load. Example: 352359B474804C2A4D83D84AADC7579D + + + + + +Optional + +Variable Default Description + +WINEPREFIX /data/wine/wineprefix Wine prefix location + +SAVED\_DIR /data/Saved Persistent save directory + + + + + +Hostname Resolution (ICE/P2P Fix) + +Windrose internally tries to resolve the hostname: + + + +Code + +windrose + +Your deployment requires: + + + +Code + +windrose.theminisip.ca + +Both must resolve to the LAN IP of the TrueNAS host: + + + +Code + +192.168.3.41 + +The entrypoint injects this automatically: + + + +bash + +192.168.3.41 windrose windrose.theminisip.ca + +This prevents ICE errors such as: + + + +Code + +Cannot resolve addresses for host windrose. + +Error on getting local ICE candidates + +P2pClient is broken + +DXVK Behavior + +DXVK is required even in headless mode. + + + +Your container includes: + + + +Code + +/opt/dxvk/x32/\*.dll + +/opt/dxvk/x64/\*.dll + +The entrypoint: + + + +Runs setup-dxvk.sh if present + + + +Falls back to manual DLL copy + + + +Logs exit codes + + + +Never crashes if DXVK is missing or incomplete + + + +This ensures Wine initializes correctly. + + + +Server Launch Command + +The server is launched with: + + + +bash + +wine WindroseServer-Win64-Shipping.exe \\ + + -log \\ + + -unattended \\ + + -nosteam \\ + + -savedir "Saved" \\ + + -saveprofile Default \\ + + -world "$WORLD\_ID" + +Notes: + + + +"Saved" resolves to /server/R5/Saved + + + +World data still loads from /data/Saved via RocksDB + + + +\-nosteam avoids Steam API issues + + + +\-unattended prevents UI prompts + + + +Entrypoint Behavior Summary + +The entrypoint: + + + +Initializes Wine prefix + + + +Installs DXVK (non‑fatal) + + + +Injects hostname resolution + + + +Validates WORLD\_ID + + + +Launches the server + + + +This is the exact working version currently deployed. + + + +Networking Requirements + +LAN + +Works out of the box. + + + +WAN + +Forward these ports: + + + +Port Protocol Purpose + +7777 UDP Game traffic + +15000 UDP ICE / P2P + +27015 UDP Query port + + + + + +Ensure Cloudflare DNS for: + + + +Code + +windrose.theminisip.ca + +points to your public IP. + + + +Troubleshooting + +ICE Errors + +If you see: + + + +Code + +Cannot resolve addresses for host windrose + +Check: + + + +/etc/hosts mapping + + + +DNS for windrose.theminisip.ca + + + +Correct WORLD\_ID + + + +World Not Loading + +Ensure: + + + +Code + +/data/Saved/SaveProfiles/Default/RocksDB/0.10.0/Worlds// + +exists. + + + +DXVK Errors + +Non‑fatal — server will still run. +