Hosting Guides

Containerized Enshrouded Servers using Proton and Docker Compose

9 min readDebian 12Docker ComposeProton
Once your server is online, jump to the Enshrouded command and config reference.

Keen Games ships Enshrouded's dedicated server as a Windows only binary. On a Linux host the only practical deployment path is a Proton (or Wine) compatibility layer, ideally inside a container so the dependency surface stays isolated and the host stays clean. This guide uses the community maintained sknnr/enshrouded-dedicated-server image with Docker Compose on Debian 12, mounts persistent volumes for the world save, and survives container rebuilds without losing progress.

Prerequisites

  • Debian 12 with Docker Engine and the Compose plugin.
  • At least 8 GB RAM, 4 modern CPU cores, and 20 GB of SSD disk for the world.
  • UDP 15636 and UDP 15637 open at the firewall.

Step 1: Project Layout

user@host
sudo mkdir -p /opt/enshrouded/{savegame,gamefiles}
sudo chown -R 4711:4711 /opt/enshrouded
cd /opt/enshrouded

Step 2: The Compose File

docker-compose.yml
services:
enshrouded:
image: sknnr/enshrouded-dedicated-server:latest
container_name: enshrouded
restart: unless-stopped
stop_grace_period: 60s
ports:
- "15636:15636/udp"
- "15637:15637/udp"
environment:
SERVER_NAME: "Veil of the Shroud"
SERVER_PASSWORD: "REPLACE_ME"
SERVER_SLOTS: 16
SERVER_IP: "0.0.0.0"
GAME_PORT: 15636
QUERY_PORT: 15637
volumes:
- ./savegame:/home/steam/enshrouded/savegame
- ./gamefiles:/home/steam/enshrouded

Two volume mounts matter here. The gamefiles mount lets SteamCMD cache the installation between rebuilds (no 6 GB redownload on every docker compose down). The savegame mount is the durable world data, and it must live outside the image.

Step 3: First Boot

user@host
docker compose up -d
docker compose logs -f enshrouded

First boot pulls the Windows binary via SteamCMD, then launches it under Proton. Expect a long initial install. Once you see Server started on 0.0.0.0:15636, the world is live.

Step 4: Verify Persistence Survives a Rebuild

user@host
docker compose down
# Confirm the world file persists on the host
ls -lah /opt/enshrouded/savegame/
docker compose up -d
# Connect with a client and confirm the world is intact

Step 5: Scheduled Backups

/opt/enshrouded/backup.sh
#!/usr/bin/env bash
set -euo pipefail
TS=$(date +%Y%m%d-%H%M)
tar -C /opt/enshrouded -czf /opt/enshrouded/backups/world-${TS}.tar.gz savegame
find /opt/enshrouded/backups -type f -mtime +14 -delete
user@host
mkdir -p /opt/enshrouded/backups
chmod +x /opt/enshrouded/backup.sh
crontab -e
0 */4 * * * /opt/enshrouded/backup.sh

Performance and Tuning

  • Pin cpus: "4" on the service if other containers share the host, so Proton cannot starve neighbors.
  • Use SSD storage. The Enshrouded world streams chunks aggressively and stalls on rotational disks.
  • Ship the backup tarballs offsite (S3, restic) for any community of more than five players.

Conclusion

Wrapping the Windows only Enshrouded binary in a Proton container makes the deployment behave like any other Compose stack: predictable, reproducible, and persistent across rebuilds. The Proton layer is an implementation detail; the operator surface is just Docker.