You can find the official lengthy guide here: playwindrose.com/dedicated-server-guide.
Is this free?
Yes.
On Steam, the Windrose Dedicated Server tool has it’s own entry (under the Tools tab), and does not require the main game to be installed. On Epic, the server is already inside your game install, but you still copy it out instead of running it from the live game folder.
Where do the server files come from?
You can use either the standalone Steam tool or the files already included with your Windrose install.
Steam
- In the Steam client, open your Library.
- Use the library filter drop-down and enable Tools.
- Search for Windrose Dedicated Server and install it.
- After install, right-click it → Manage → Browse local files to open the install folder.
Epic Games Store & Stove
- Open your normal Windrose installation directory.
- Go to
R5\Builds. - Copy the entire
WindroseServerorWindowsServerfolder to a different folder (i.e. your desktop, second drive, orC:\GameServers\Windrose).
Do not leave the only copy inside the game’s install folder if you intend to run it as a standalone dedicated host while also playing from that same machine. The client and that bundled server tree are not meant to run side by side from the same location; copying the folder elsewhere avoids the client trying to manage or shut down the wrong process and reduces the risk of save conflicts.
Install or update with SteamCMD
SteamCMD doesn’t require a full game install or even Steam/Epic/Stove to be installed. This is the best for headless installs like a VPS.
- Download SteamCMD for Windows from Valve’s CDN (direct zip).
- Unzip it into a folder you control (for example
C:\SteamCMD). - Create
windrose-update.batnext tosteamcmd.exeand put your real install path inforce_install_dir:
| |
(Edit force_install_dir to your folder of choice, like “C:\Windrose_Server” or leave it as is).
- Run the batch file and wait until SteamCMD exits cleanly.
Updating later: run the same script again; validate refreshes changed files.
Version match: after every Windrose patch, update the dedicated server build before players join. Mismatched client and server builds are a common source of failed connections or odd bugs.
If app_update fails with “no subscription”: Log in with +login your_steam_username (Steam Guard will apply) using an account that owns Windrose, then run the same app_update 4129620 line again.
First launch and quick start
Windrose expects default JSON the first time the process starts, so boot it once before heavy editing.
Two ways to start the process:
StartServerForeground.bat- opens a console window with live logging. Closing the window stops the host. This is the easiest option while learning.WindroseServer.exe- runs without a dedicated console. Stop in Task Manager.
After startup, note the invite code printed in the console. If it scrolls away, open R5\ServerDescription.json in a text editor; the same code is stored there.
In the Windrose game client: Play → Connect to server → paste the invite code. Share that code with your friends. Codes are case-sensitive and must meet the minimum length the JSON file enforces (six or more characters from the allowed set once you customize it).
Config files (advanced)
Shut the server down completely before editing JSON. Crashes or later saves can edit and overwrite your changes.
R5\ServerDescription.json (global host settings)
Fields to change if you want:
InviteCode- public handle friends type into the client; keep it unique and treat it like a password-lite secret.IsPasswordProtected/Password- optional extra gate on top of the invite code.ServerName- human-readable label so people know they landed on the right world.WorldIslandId- must match theIslandId(and folder name) of the world you want online.MaxPlayerCount- hard cap for simultaneous clients. The official guidance stresses that four or fewer players is the smoothest experience; higher counts can stress late-game scenarios.P2pProxyAddress- listen/bind address for networking; leave default unless you know you need a specific adapter.PersistentServerId- generated for you; do not hand-edit.
Direct connection (optional, fixed port)
If you prefer a known TCP/UDP port (defaults to 7777) instead of relying only on NAT punch-through, set these inside the existing ServerDescription_Persistent object in R5\ServerDescription.json:
UseDirectConnection-trueto advertise a fixed address/port to clients.DirectConnectionServerPort- game port players forward to; 7777 is the usual value (change the firewall and router rules to match if you pick something else).DirectConnectionServerAddress- how clients reach you, including port, for examplewindrose.domain.com:7777, your publicx.x.x.x:7777, or a LAN host192.168.1.10:7777.DirectConnectionProxyAddress- often left as0.0.0.0unless you are following a specific hosting layout from Windrose docs.
Example fragment (adapt host/port to your setup):
| |
Keep UseDirectConnection on false if you are not using this path.
Per-world WorldDescription.json
Each world lives under a path similar to:
R5\Saved\SaveProfiles\Default\RocksDB\<game version>\Worlds\<world id>\WorldDescription.json
The server creates the first world automatically. WorldPresetType accepts the built-in difficulty bands (Easy, Medium, Hard); other combinations roll up as Custom next boot. Fine tuning lives under nested bool/float/tag blocks-treat those like advanced knobs and change one group at a time so you can roll back mistakes.
Prefer official documentation or patch notes for any extra networking keys, because names can change between versions.
Saves, migrations, and swapping worlds
Default locations
- Client-hosted sessions keep personal saves under
%LocalAppData%\R5\Saved\SaveProfiles\...(exact profile folder name depends on the platform ID). - Standalone dedicated keeps everything under the copied server directory’s
R5\Saved\...tree.
Always back up before moving folders.
Copying a world from the game into the dedicated server
- Exit both the client and the dedicated executable.
- Copy the entire world folder from your profile’s
RocksDB\<version>\Worlds\<WorldID>directory. - Paste it into
Windrose Dedicated Server\R5\Saved\SaveProfiles\Default\RocksDB\<same version>\Worlds\. - Edit
ServerDescription.jsonsoWorldIslandIdequals that folder’s name (the GUID-style directory). - Start the server and verify the world loads.
To go the other direction, reverse the copy and pick the local save when the client asks.
Switching between worlds you already have
Edit WorldIslandId only-never rename the world folders on disk, because the database ties to those IDs.
Networking, firewalls, and routers
You can mix NAT / UPnP (default-style hosting) with optional direct connection on a fixed port. Use whichever matches how you want to expose the machine.
Method 1: NAT / UPnP and executable rules (default)
Windrose can lean on NAT traversal and dynamic ports, so there is not always one fixed “game port” to forward. For that style:
- Enable UPnP on the router when it is safe for your threat model, or ensure NAT-PMP / related helpers are on if the hardware supports them.
- Avoid running the host through a VPN or HTTP proxy while testing; they often break punch-through.
- On Windows Defender Firewall, allow the server executables inbound and outbound (for example
R5\Binaries\Win64\WindroseServer-Win64-Shipping.exe) so dynamic ports are not silently blocked.
If you are using Windows Firewall, run PowerShell as Administrator after adjusting the -Program path so it points at your real WindroseServer-Win64-Shipping.exe:
| |
To remove those rules later: Remove-NetFirewallRule -DisplayName "Windrose Dedicated Server".
Method 2: Direct connection (TCP and UDP on your game port)
If you set UseDirectConnection in ServerDescription.json, open the same port in the OS firewall and on your router for both TCP and UDP. The usual default is 7777; if you changed DirectConnectionServerPort, use that value everywhere below.
Router: create a port-forward (or equivalent) from the internet to this PC for TCP and UDP on that port.
Windows Firewall: run PowerShell as Administrator and set $port to match your config (7777 or custom):
| |
To remove those port rules:
| |
You can keep Method 1 executable rules alongside Method 2 port rules if you want punch-through to still work when direct connection is not in use.
If remote friends still drop after the Windows rules are in place, verify integrity inside Steam, update GPU chipset drivers, install pending Windows updates, and reboot both the PC and the router once to clear stale NAT mappings.
Hardware expectations (dedicated only)
Treat these as planning numbers from the official table, not guarantees:
| Players | CPU (example class) | RAM | Storage |
|---|---|---|---|
| 2 | 2c / ~3.2 GHz Xeon | 8 GB | ~35 GB SSD |
| 4 | same | 12 GB | ~35 GB SSD |
| 10 | same | 16 GB | ~35 GB SSD |
Running client + server on one PC needs more headroom-plan on roughly 24 GB RAM total if you want both comfortably, and keep the world on an SSD.
Security hygiene
Windrose staff will not ask for your Steam, Epic, or Stove password in Discord DMs or random emails. If someone does, it is a scam-use the support channel listed on playwindrose.com instead.
The official website also has Discord and email listed: support @ playwindrose.com.
Troubleshooting checklist
- Files: In Steam, Properties → Installed files → Verify integrity on Windrose Dedicated Server. Running the SteamCMD updater with
validateshould accomplish the same. - Versions: Confirm the server build string matches what players have after a patch.
- Path: Confirm you are launching the copy outside the live game directory when you also play on the same machine.
- Firewall / AV: Explicitly allow the server binaries inbound and outbound.
- Power cycle: Restart the host PC and router after major network changes.