server setup
Windrose Server Beyond Invite Codes: Direct IP and the Official Linux Docker Image
Windrose sold a million copies in six days, and its dedicated server works unlike most survival servers: players find it with an invite code over a peer-to-peer relay, not with an IP and a port. That default is why the official guide still calls the server Windows only. It is no longer the whole story. Since April there is a Direct IP mode, and since June an official Docker image runs the server on Linux, on the condition that you give up invite codes. Here is how each mode behaves, from the documentation bundled with the current build.
By default Windrose players join with the invite code in R5/ServerDescription.json, over NAT punch-through and relays, with no port forwarding. Set UseDirectConnection to true and they join by IP and port instead (TCP and UDP 7777 by default), and invite codes stop working. The Steam server app (4129620, anonymous login, about 3 GB) has no Linux files, but patch 0.10.0.7 added an official Docker image, windroseserver/windroseserver, which requires Direct IP. Official sizing: 8 GB RAM for 2 players, 12 GB for 4, 16 GB for 10, on 2 fast cores and a 35 GB SSD.
Windrose server at a glance
Windrose is a PvE pirate survival game from Kraken Express, published together with Pocketpair Publishing, the publishing arm of Palworld studio Pocketpair. It entered Early Access on Steam on 14 April 2026 at $29.99, sold 500,000 copies in its first 48 hours and two million by mid May, according to the studio's own posts. A free dedicated server tool was out within the first week; the studio's 16 April hotfix note already refers to its bundled documentation. The numbers below come from the documentation that ships inside the current server build (DedicatedServer.md and SaveWorkflow.md), the developer's patch notes and Steam's app data.
| Item | As of October 2026 | Source |
|---|---|---|
| Steam app (server) | 4129620, anonymous SteamCMD login | Official guide, Steam app info |
| Current server build | 24913903, updated 25 August 2026 (patch 0.10.0.9) | Steam app info, patch notes |
| Server download | About 3 GB (Windows depot) | Steam app info |
| Platforms | Windows; Linux only through the official Docker image | Official guide, patch 0.10.0.7 |
| Join method (default) | Invite code, P2P via ICE and relays, no port forwarding | DedicatedServer.md |
| Join method (optional) | Direct IP, TCP and UDP on port 7777 by default | DedicatedServer.md |
| Default MaxPlayerCount | 4 in the shipped example | DedicatedServer.md |
| Connection regions | SEA, CIS, EU (EU also covers North America), or automatic | DedicatedServer.md |
| Automatic backups | Every 10 minutes of play and on exit | Patch 0.10.0.5 |
Invite codes, relays and Direct IP
The default mode is the reason Windrose servers are easy to stand up at home. With UseDirectConnection set to false, the server registers with the game's connectivity service and players reach it through NAT punch-through, using the invite code. Ports are assigned dynamically and a router that supports UPnP helps. There is nothing to forward.
Launch week showed the weak point: some ISPs blocked parts of the connectivity service. The studio's 19 April patch responded in two ways. It added manual connectivity server selection (all players must share at least one reachable server, and dedicated servers can pin a region with UserSelectedRegion), and it added Direct IP. Version 0.10.0.4, on 30 April, then added a client option, Force Relay Connection, that sends traffic through relays when direct peer-to-peer is blocked along the route, at the cost of ping.
Direct IP is the classic model: set UseDirectConnection to true, open DirectConnectionServerPort (7777 by default) for both TCP and UDP, and players connect to your public IP and port. Three things to know before you switch:
- With Direct IP, invite codes do not work at all. It is one or the other.
- Over the internet, the host needs a real public IP on the router and a forward of both TCP and UDP. On a LAN, players use the local IP and no forwarding.
- Known issue from the patch notes: with Direct IP, a wrong password or a version mismatch returns the player to the main menu with no error. If someone bounces silently, check versions first.
The documented troubleshooting list is short and practical: confirm the IP with ipconfig, try a higher port such as 17777 or 27890, allow TCP and UDP through Windows Firewall, and make sure the server has fully started before anyone connects.
Linux: the official Docker image
The official online guide, last updated in May, says the server is "currently Windows-only, unfortunately", and Steam agrees: the server app's Linux depot is empty. But patch 0.10.0.7, released on 25 June, added "Docker images with Linux server support", and the documentation bundled with the server now includes the recipe:
docker pull windroseserver/windroseserver:latest
docker run --user ue_user --name WindroseServer \
-p 7777:7777/tcp -p 7777:7777/udp -d \
-v /srv/windrose/Saved:/home/ue_user/app/R5/Saved \
-v /srv/windrose/ServerDescription.json:/home/ue_user/app/R5/ServerDescription.json \
windroseserver/windroseserver:latest
The catch is in the config: the Docker setup requires "UseDirectConnection": true and "DirectConnectionServerPort": 7777. So on Linux you get the classic IP:port model, with ports to open and no invite codes. For a rented Linux box that is usually what you want anyway. Mount Saved from the host, as above, or your world lives and dies with the container. If you have wrestled with unofficial Wine setups for other games, as in our Ground Branch Linux guide, an image from the developer is a welcome change.
ServerDescription.json, key by key
There is one ServerDescription.json per server and one WorldDescription.json per world. The documentation's rule: edit ServerDescription.json only while the server is shut down, and expect the server to rewrite fields itself if something goes wrong.
| Key | What it does |
|---|---|
PersistentServerId | Unique server ID. Do not edit. |
InviteCode | The code players use to find you. 0 to 9, a to z, A to Z, at least 6 characters, case sensitive. |
IsPasswordProtected / Password | Keep them consistent: true with a password, false with an empty one, or behaviour gets unpredictable. |
ServerName | Display name, useful when codes look alike. |
WorldIslandId | Which world loads. Must match the IslandId in one world's WorldDescription.json. |
MaxPlayerCount | Simultaneous players. The shipped example uses 4. |
UserSelectedRegion | Connection service region: SEA, CIS or EU (EU covers North America too). Empty means automatic by latency. |
P2pProxyAddress | IP address for the listening sockets. |
UseDirectConnection | false uses ICE peer-to-peer; true opens sockets for direct connections. |
DirectConnectionServerPort | Direct IP port, 7777 by default, TCP and UDP. |
DirectConnectionServerAddress | Reserved for future use; not used yet. |
DirectConnectionProxyAddress | Which network interface to bind for Direct IP, 0.0.0.0 by default. |
AutoLoadLatestBackupIfHasBroken | Try to restore a broken save from backups on launch. Leave it on. |
CanLaunchMultipleServerInstances | false by default, as a guard against two servers writing to one database. |
An April hotfix note mentioned removing an 8-character minimum and allowing invite codes of 1 to 32 characters; the documentation shipped with today's build says at least 6. Use 6 or more and you satisfy both.
World difficulty lives in WorldDescription.json, under R5/Saved/SaveProfiles/Default/RocksDB_v2/<game version>/Worlds/<world id>/. Presets are Easy, Medium and Hard; any custom value flips the world to Custom on next launch. Custom knobs include enemy health and damage multipliers (0.2 to 5.0), enemy ship health (0.4 to 5.0) and enemy ship damage (0.2 to 2.5), boarding difficulty, co-op stat correction and combat difficulty. Editing the file is not enough: stop the server, edit, then run the bundled updater against the file before restarting:
R5WorldDescriptionUpdater.exe R5\Saved\SaveProfiles\Default\RocksDB_v2\0.10.0\Worlds\<world id>\WorldDescription.json
The documentation's own tip is the sensible one: set up a custom preset in the game, then copy the values across.
Official requirements by player count
Kraken Express publishes a short, unusually specific table. It is the same in the online guide and in the copy bundled with the server:
| Players | CPU | RAM | Storage |
|---|---|---|---|
| 2 | Intel Xeon Scalable (Sapphire Rapids), 2 cores, 3.2 GHz | 8 GB | 35 GB SSD |
| 4 | Intel Xeon Scalable (Sapphire Rapids), 2 cores, 3.2 GHz | 12 GB | 35 GB SSD |
| 10 | Intel Xeon Scalable (Sapphire Rapids), 2 cores, 3.2 GHz | 16 GB | 35 GB SSD |
Read it the right way round. The CPU line does not change with players, which tells you the server cares about a couple of fast cores, not a big core count, while memory climbs with the crew. The online guide adds one more number for people who host from their gaming PC: running the client and the server on the same machine wants at least 24 GB of RAM, and an SSD is strongly recommended.
On player counts, the studio has been careful. Before launch it said it would try to raise the co-op limit from 4 to 8 players, while also saying that difficulty scaling feels best between 1 and 4. The server's MaxPlayerCount is yours to set, and the requirements table goes up to 10, but the game is tuned for a small crew, and a world built for four will feel different at ten.
Install and first boot on Windows
The server is a free Steam tool. With SteamCMD:
force_install_dir "C:\Game_Servers\Windrose_Server"
login anonymous
app_update 4129620 validate
quit
Owners of the game can also install "Windrose Dedicated Server" from the Tools section of their Steam library, or copy the R5\Builds\WindowsServer folder from the game install.
Start it with StartServerForeground.bat, which opens a console window. You can also run WindroseServer.exe directly, but then it runs as a background process you have to stop through Task Manager, which is a poor habit on a machine that holds a save database. On first start the server generates a default ServerDescription.json and a first world with its own WorldDescription.json, so the documented workflow is: start once, stop, then edit.
When it finishes loading, the console prints an invite code that looks like f1014dc1. If it scrolls away, the same code is in R5\ServerDescription.json. Players paste it under Play, Connect to Server.
Saves, backups and the RocksDB layout
Windrose stores saves in RocksDB databases, and the save system was rebuilt in the first weeks after launch. The bundled SaveWorkflow.md describes the current layout under R5/Saved/SaveProfiles/Default/ on a dedicated server:
RocksDB_v2holds the live state for versions after 0.10.0.5. It is overwritten constantly during play; do not copy it from a running server.RocksDB_v2_Backupsholds zipped backups per database, made periodically and on every exit. The newest carries a_Latestsuffix, and a missing_Latestis treated as a critical error.RocksDBis the old pre-0.10.0.5 format. Once everything has migrated, it can be deleted.
On start, the server loads each database from its _Latest backup. If that archive is missing or damaged, it looks for the newest healthy backup, and damaged ones get a Broken- prefix. If nothing healthy exists, that world or character is gone. The 0.10.0.5 notes put these backups at every 10 minutes of play and on exit.
The practical rule: back up the RocksDB_v2_Backups folder off the machine on a schedule, and keep CanLaunchMultipleServerInstances at false so two processes never share a database.
Self-host or rent
Windrose is friendlier to home hosting than most survival games, because the default invite-code mode needs no port forwarding and the requirements are modest for a small crew. A spare Windows PC with 16 GB of RAM covers a full ten-player world on paper. The arguments for a rented server are the usual ones: uptime while the host sleeps, a datacenter network instead of a residential upload, and somebody else updating the server every time the game patches, which matters here because a version mismatch locks everyone out.
If you go the Linux route, budget for the Docker workflow and Direct IP. For the wider hardware question, our self-host or rent guide covers what a home box needs. The developer's official dedicated server guide is the place to check for changes, but the copy of DedicatedServer.md inside your server folder is the one that matches your build.
FAQ
- How do players join a Windrose dedicated server?
- By default, with an invite code. Start the server, read the code from the console or from InviteCode in R5/ServerDescription.json, and players paste it under Play, Connect to Server. If you enable UseDirectConnection, players join by IP and port instead and invite codes stop working.
- How much RAM does a Windrose dedicated server need?
- The requirements bundled with the server list 8 GB for 2 players, 12 GB for 4 and 16 GB for 10, each with 2 cores at 3.2 GHz and a 35 GB SSD. Running the game and the server on the same PC is recommended at 24 GB or more.
- Does Windrose have a Linux dedicated server?
- Not a native one. The Steam server app has no Linux files, and the official guide calls the server Windows only. Patch 0.10.0.7 added an official Docker image with Linux server support, which runs with Direct IP on TCP and UDP port 7777.
- What ports does a Windrose server need?
- None for the default invite-code mode, which uses NAT punch-through and relays, so a router with UPnP helps. With Direct IP enabled, the port in DirectConnectionServerPort (7777 by default) must be open for both TCP and UDP.
- Why can't my friends join my Windrose server after an update?
- The client and server versions must match. Update the server through SteamCMD after every game patch. Since an April hotfix the client checks the server version and shows an error, but with Direct IP a version mismatch or wrong password can still drop players back to the menu without a message.