Files
windrose-servermanager/README.md
T

401 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 nonfatal 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/<WORLD\_ID>/
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 \\
&#x20; -log \\
&#x20; -unattended \\
&#x20; -nosteam \\
&#x20; -savedir "Saved" \\
&#x20; -saveprofile Default \\
&#x20; -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 (nonfatal)
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/<WORLD\_ID>/
exists.
DXVK Errors
Nonfatal — server will still run.