Enshrouded Dedicated Server
Deploy an Enshrouded dedicated server using Docker for easy management, updates, and portability. This guide uses Docker Compose for simple configuration.
Create a directory for your Enshrouded server files:
mkdir -p ~/enshrouded-server/{server,config,logs}
cd ~/enshrouded-serverCreate a docker-compose.yml file:
version: "3.8"
services:
enshrouded:
image: sknnr/enshrouded-dedicated-server:latest
container_name: enshrouded-server
restart: unless-stopped
ports:
- "15636:15636/udp"
- "15637:15637/udp"
environment:
- SERVER_NAME=My Enshrouded Server
- SERVER_PASSWORD=
- GAME_PORT=15636
- QUERY_PORT=15637
- SERVER_SLOTS=16
- SERVER_IP=0.0.0.0
volumes:
- ./server:/home/steam/enshrouded
- ./config:/home/steam/enshrouded/savegame
cap_add:
- SYS_NICENote: The sknnr/enshrouded-dedicated-server is a community-maintained image. Check Docker Hub for the latest version and alternative images.
For full control over game settings, create a custom enshrouded_server.json file in the config directory. Use our Config Builder to generate this file.
{
"name": "My Docker Enshrouded Server",
"password": "",
"saveDirectory": "./savegame",
"logDirectory": "./logs",
"ip": "0.0.0.0",
"gamePort": 15636,
"queryPort": 15637,
"slotCount": 16,
"gameSettings": {
"playerHealthFactor": 1,
"playerManaFactor": 1,
"playerStaminaFactor": 1,
"enableDurability": true,
"enableStarvingDebuff": false,
"foodBuffDurationFactor": 1,
"fromHungerToStarving": 600000000000,
"shroudTimeFactor": 1,
"randomSpawnerAmount": "Normal"
}
}When using a custom config, mount it to the container and remove the environment variables from docker-compose.yml.
Start your Enshrouded server with Docker Compose:
# Start the server (first run will download the image and game files)
docker compose up -d
# View logs
docker compose logs -f
# Stop the server
docker compose down
# Restart the server
docker compose restartFirst Start: The initial startup will take several minutes as Docker downloads the game files (~8GB). Monitor progress with docker compose logs -f
Ensure your firewall allows the required ports:
sudo ufw allow 15636/udp
sudo ufw allow 15637/udpsudo firewall-cmd --permanent --add-port=15636/udp
sudo firewall-cmd --permanent --add-port=15637/udp
sudo firewall-cmd --reloadIf hosting at home, also configure port forwarding on your router for these ports.
To update your server when a new game version is released:
# Pull the latest image
docker compose pull
# Restart with the new image
docker compose up -d# Check container status
docker compose ps
# View real-time logs
docker compose logs -f enshrouded
# Execute command in container
docker compose exec enshrouded bash
# Check resource usage
docker stats enshrouded-server
# Backup save data
cp -r ./config ./backup-$(date +%Y%m%d)Check logs with docker compose logs. Common causes: insufficient memory, port conflicts, or permission issues on mounted volumes.
Verify ports 15636-15637 UDP are open in your firewall and forwarded on your router. Check that the container is running with docker compose ps.
The container runs as a specific user. Ensure mounted directories have proper permissions:sudo chown -R 1000:1000 ./server ./config