Project Overview

A robust, containerized Enshrouded Dedicated Server deployment using production-style DevOps practices. The container image stays stable while server binaries update at runtime through SteamCMD, eliminating drift and manual patch work.

⚡
Key idea: the container is immutable; the game server is not. Restart the container and SteamCMD pulls the latest server build automatically.

Key Features

Docker Containerization
Consistent deployments via Docker / Compose with clean separation between image and persistent state.
CI/CD Publishing
GitHub Actions builds with Buildx and publishes images to GHCR with practical tags (latest/sha/date).
Runtime SteamCMD Updates
SteamCMD runs on container start to pull the latest Enshrouded dedicated server build (AppID 2278520).
Infrastructure as Code
Configuration lives in version control and can be redeployed or moved to a new host without losing worlds.
Logs + Persistence
Saves, logs, and configuration persist via mounted volumes — rebuild images or migrate hosts safely.
Security First
Non-root execution, no privileged mode, and minimal exposed ports for a safer self-hosted deployment.

Quick Start Guide

1
Pull the Image
Get the latest container from GitHub Container Registry (GHCR)
Terminal
docker pull ghcr.io/mrguato/enshrouded-docker:latest
2
Create a Compose File
Use Docker Compose for reproducible deployments and easy restarts
docker-compose.yml
services: enshrouded: image: ghcr.io/mrguato/enshrouded-docker:latest restart: unless-stopped ports: - "15637:15637/udp" - "27015:27015/udp" environment: - UPDATE_ON_START=1 - SERVER_NAME=My Enshrouded Server - SERVER_SLOTS=16 # - SERVER_PASSWORD=ChangeMe volumes: - ./data:/home/steam/enshrouded
3
Start the Server
Launch and tail logs to confirm update + startup sequence
Run
docker compose up -d docker logs -f enshrouded
ℹ️
Your server uses UDP ports 15637 (game) and 27015 (query). Open/forward these if hosting publicly.
4
Updates (Automatic)
On every container restart, SteamCMD fetches the latest server build
Runtime Update
steamcmd +app_update 2278520 validate
To temporarily disable updates:
Environment
UPDATE_ON_START=0

Ports & Networking

Typical UDP ports for Enshrouded:

UDP Ports
15637/udp (game) 27015/udp (query / discovery)

Make sure firewall rules and port forwarding match your host setup.

Technology Stack

Docker / Compose
Reproducible deployments and clean persistence model.
GitHub Actions
Buildx builds and publishes to GHCR automatically.
SteamCMD
Runtime updates to stay current with Steam releases.
Security Posture
Non-root execution, no privileged mode, minimal port exposure.

Documentation & Resources

Use these links to dig deeper, troubleshoot, and track changes:

Full Guide
Ports, persistence, configs, and troubleshooting in one place.
Issues
Report bugs, request features, and track fixes.
Releases
Versioned updates and change history (if you publish releases).