Installation

Step-by-step setup on a fresh Ubuntu 22.04 or 24.04 host.

1. Install Docker

sudo apt update
sudo apt install -y ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
    sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo usermod -aG docker "$USER"
newgrp docker
docker run --rm hello-world

2. Clone the repo

git clone https://github.com/MrGuato/windrose-dedicated-server.git
cd windrose-dedicated-server
chmod +x windrose

3. Run setup

./windrose setup

The setup wizard prompts for server name, password, max players, and ports. It writes .env and creates the bind-mount directories with the correct ownership.

To skip the wizard and edit the env file by hand:

cp .env.example .env
nano .env
mkdir -p data steam-home backups logs
sudo chown -R 1000:1000 data steam-home

4. Start the server

./windrose start

That pulls the prebuilt image from GHCR (or uses your local build), starts the container, and tails logs. First boot pulls roughly 3 GB of game files via SteamCMD.

When you see this in the logs the server is up:

[windrose] Starting Windrose dedicated server

5. Get the invite code

./windrose invite

Share that code with players. They use it in the game’s Join via Code menu.

Optional: build the image locally

If you’d rather build from source than pull from GHCR:

./windrose build
IMAGE_REPOSITORY=windrose-dedicated-server IMAGE_TAG=dev ./windrose start

The build takes about 10-15 minutes on a first run because of the apt install of Wine and i386 libraries. Subsequent builds use Docker’s layer cache.

Optional: scheduled backups

crontab -e

Add:

0 4 * * * cd /opt/windrose-dedicated-server && ./windrose backup >> logs/backup.log 2>&1