Skip to content

indifferentbroccoli/windrose-server-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

marketing_assets_banner GitHub License GitHub Release GitHub Repo stars Discord Docker Pulls

Game server hosting · Fast RAM · High-speed internet · Eat lag for breakfast

Try our Windrose server hosting free for 2 days!

Windrose Dedicated Server Docker

A Docker container for running a Windrose dedicated server. The server binary is Windows-only and runs via Wine.

Server Requirements

2 Players 4 Players 10 Players
CPU 2 cores @ 3.2 GHz 2 cores @ 3.2 GHz 2 cores @ 3.2 GHz
RAM 8 GB 12 GB 16 GB
Storage 35 GB SSD 35 GB SSD 35 GB SSD

How to use

Copy the .env.example file to .env, fill in your values, then use either docker compose or docker run.

Docker Compose

services:
  windrose:
    image: indifferentbroccoli/windrose-server-docker
    restart: unless-stopped
    container_name: windrose
    stop_grace_period: 30s
    env_file:
      - .env
    volumes:
      - ./server-files:/home/steam/server-files
docker compose up -d

Docker Run

docker run -d \
    --restart unless-stopped \
    --name windrose \
    --stop-timeout 30 \
    --env-file .env \
    -v ./server-files:/home/steam/server-files \
    indifferentbroccoli/windrose-server-docker

Environment Variables

Variable Default Description
PUID 1000 User ID to run the server process as
PGID 1000 Group ID to run the server process as
UPDATE_ON_START true Download and validate server files on every startup. Set to false to skip
INVITE_CODE Invite code players use to connect. Min 6 characters, 0-9 a-z A-Z, case sensitive
SERVER_NAME Display name for your server
SERVER_PASSWORD Leave empty for a public server
MAX_PLAYERS 10 Maximum number of simultaneous players
P2P_PROXY_ADDRESS 127.0.0.1 IP address the P2P proxy binds to. Use 127.0.0.1 (default) in Docker — the proxy is an internal socket and does not need to be reachable from outside the container
GENERATE_SETTINGS true Set to false to skip all config generation and patching. The server will start using whatever is already in ServerDescription.json on disk or create a new one.

Server Configuration

On first start the server automatically generates two configuration files inside server-files/. The container handles this automatically — it starts the server once to generate the files, applies your settings, then starts normally.

Connecting

Players connect via invite code. The code is set by INVITE_CODE in your .env and is also visible in server-files/R5/ServerDescription.json under InviteCode. Share it with players who join via Play → Connect to Server in-game.

ServerDescription.json

Located at server-files/R5/ServerDescription.json. This file can only be edited while the server is stopped.

Field Description
InviteCode Invite code for players to find your server. Min 6 chars, 0-9 a-z A-Z, case sensitive
IsPasswordProtected true or false
Password Server password
ServerName Display name of the server
WorldIslandId ID of the world to load — must match the folder name of a WorldDescription.json
MaxPlayerCount Maximum simultaneous players
P2pProxyAddress IP for listening sockets. Use 127.0.0.1 (default) — the proxy is an internal socket
{
    "Version": 1,
    "ServerDescription_Persistent": {
        "PersistentServerId": "...",
        "InviteCode": "myfriends",
        "IsPasswordProtected": false,
        "Password": "",
        "ServerName": "My Windrose Server",
        "WorldIslandId": "...",
        "MaxPlayerCount": 10,
        "P2pProxyAddress": "127.0.0.1"
    }
}

WorldDescription.json

Located at server-files/R5/Saved/SaveProfiles/Default/RocksDB/<version>/Worlds/<world-id>/WorldDescription.json. One file per world. This file can only be edited while the server is stopped.

Field Description
WorldPresetType Difficulty preset: "Easy", "Medium", "Hard", or "Custom". If any WorldSettings values are present the server forces this to "Custom"
WorldName Name of the world
WorldSettings Custom parameters — leave all sections empty to use a preset

WorldSettings parameters

Only takes effect when WorldPresetType is "Custom". Leave WorldSettings empty to use a preset.

Bool parameters

Parameter key Default Description
WDS.Parameter.Coop.SharedQuests true When a player completes a co-op quest it auto-completes for all players who have it active
WDS.Parameter.EasyExplore false Hides map markers for points of interest, making exploration harder. Called "Immersive Exploration" in-game

Float parameters

Parameter key Default Range Description
WDS.Parameter.MobHealthMultiplier 1.0 0.2 – 5.0 Enemy health multiplier
WDS.Parameter.MobDamageMultiplier 1.0 0.2 – 5.0 Enemy damage multiplier
WDS.Parameter.ShipsHealthMultiplier 1.0 0.4 – 5.0 Enemy ship health multiplier
WDS.Parameter.ShipsDamageMultiplier 1.0 0.2 – 2.5 Enemy ship damage multiplier
WDS.Parameter.BoardingDifficultyMultiplier 1.0 0.2 – 5.0 How many enemy sailors must be defeated to win a boarding action
WDS.Parameter.Coop.StatsCorrectionModifier 1.0 0.0 – 2.0 Adjusts enemy health and posture loss based on player count
WDS.Parameter.Coop.ShipStatsCorrectionModifier 0.0 0.0 – 2.0 Adjusts enemy ship health based on player count

Tag parameters

Parameter key Default Options Description
WDS.Parameter.CombatDifficulty WDS.Parameter.CombatDifficulty.Normal Easy / Normal / Hard Boss encounter difficulty and general enemy aggression

Example WorldDescription.json:

{
    "Version": 1,
    "WorldDescription": {
        "IslandId": "...",
        "WorldName": "My World",
        "WorldPresetType": "Custom",
        "WorldSettings": {
            "BoolParameters": {
                "{\"TagName\": \"WDS.Parameter.Coop.SharedQuests\"}": true,
                "{\"TagName\": \"WDS.Parameter.EasyExplore\"}": false
            },
            "FloatParameters": {
                "{\"TagName\": \"WDS.Parameter.MobHealthMultiplier\"}": 1,
                "{\"TagName\": \"WDS.Parameter.MobDamageMultiplier\"}": 1,
                "{\"TagName\": \"WDS.Parameter.ShipsHealthMultiplier\"}": 1,
                "{\"TagName\": \"WDS.Parameter.ShipsDamageMultiplier\"}": 1,
                "{\"TagName\": \"WDS.Parameter.BoardingDifficultyMultiplier\"}": 1,
                "{\"TagName\": \"WDS.Parameter.Coop.StatsCorrectionModifier\"}": 1,
                "{\"TagName\": \"WDS.Parameter.Coop.ShipStatsCorrectionModifier\"}": 0
            },
            "TagParameters": {
                "{\"TagName\": \"WDS.Parameter.CombatDifficulty\"}": {
                    "TagName": "WDS.Parameter.CombatDifficulty.Normal"
                }
            }
        }
    }
}

Volumes

Path Description
/home/steam/server-files Server installation files, world saves, and configuration

About

This is a Dockerized Windrose dedicated server maintained by indifferent broccoli. We offer managed Windrose server hosting if you'd rather not self-host.

About

This is a Dockerized version of the Windrose dedicated server.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors