Docker image for running an Unturned dedicated server using SteamCMD on Debian Trixie
1.1K
Dockerized Unturned dedicated server built on cm2network/steamcmd.
docker run -d --name unturned-server \
-p 27015:27015/udp \
-p 27016:27016/udp \
-v unturned-data:/home/steam/unturned \
gzordrai/unturned-server:latest
Docker Compose:
See the full example/compose.yml for all available options.
services:
unturned:
image: gzordrai/unturned-server:latest
container_name: unturned-server
restart: unless-stopped
ports:
- "27015:27015/udp"
- "27016:27016/udp"
volumes:
- unturned-data:/home/steam/unturned
environment:
- UNTURNED_SERVER_NAME=MyServer
- UNTURNED_MAP=PEI
- UNTURNED_GSLT=your_token_here
volumes:
unturned-data:
Only set the variables you want to change. Everything else falls back to the defaults.
| Variable | Default | Description |
|---|---|---|
UNTURNED_SERVER_NAME | MyServer | Server name and save directory |
UNTURNED_MAP | PEI | Map name (PEI, Washington, Yukon, Russia, Germany, or Workshop maps) |
UNTURNED_MAXPLAYERS | 24 | Maximum player count |
UNTURNED_PORT | 27015 | Game port (query port = port + 1) |
UNTURNED_PERSPECTIVE | Both | Camera mode: First, Third, Both, or Vehicle |
UNTURNED_MODE | Normal | Difficulty: Easy, Normal, or Hard |
UNTURNED_PASSWORD | (empty) | Password required to join |
UNTURNED_GSLT | (empty) | Game Server Login Token (required for public servers) |
| Variable | Default | Description |
|---|---|---|
UNTURNED_OWNER | (empty) | SteamID64 of the server owner |
UNTURNED_ADMIN | (empty) | SteamID64 granted admin privileges |
UNTURNED_WHITELISTED | false | Restrict joins to permitted players only |
UNTURNED_PERMITS | (empty) | Space-separated list of SteamID/Tag entries allowed to join (e.g. 76561198000000001/Alice 76561198000000002/Bob) |
UNTURNED_GOLD | false | Restrict server to Gold players only |
| Variable | Default | Description |
|---|---|---|
UNTURNED_CHEATS | false | Enable cheat commands (Give, etc.) |
UNTURNED_PVE | false | Disable player vs player combat |
UNTURNED_CYCLE | (empty) | Day/night cycle length in seconds |
UNTURNED_TIME | (empty) | Initial time in seconds of the day/night cycle |
UNTURNED_WEATHER | (empty) | Initial weather: None, Storm, or Blizzard |
UNTURNED_LOADOUT | (empty) | Items given on spawn, e.g. 255/363/15 (SkillsetID/ItemID/..., 255 = all skillsets) |
| Variable | Default | Description |
|---|---|---|
UNTURNED_BIND | (empty) | Internal IP to bind the socket to (default: 0.0.0.0) |
UNTURNED_QUEUE_SIZE | (empty) | Maximum number of queued connections |
UNTURNED_TIMEOUT | (empty) | Maximum ping (ms) before a client is kicked |
UNTURNED_CHATRATE | (empty) | Minimum seconds between chat messages |
| Variable | Default | Description |
|---|---|---|
UNTURNED_WELCOME | (empty) | Welcome message shown on join, e.g. Welcome!/255/200/0 |
UNTURNED_LOG | (empty) | Logging flags Chat/Join/Death/Anticheat, e.g. Y/Y/Y/N |
UNTURNED_HIDE_ADMINS | false | Hide admin labels from players |
UNTURNED_FILTER | false | Filter players with non-English-alphanumeric names |
UNTURNED_SYNC | false | Share save data across servers |
UNTURNED_VOTIFY | (empty) | Vote settings, e.g. Y/120/60/30/0.6/2 (Allowed/PassCooldown/FailCooldown/Duration/Percentage/MinPlayers) |
| Port | Protocol | Description |
|---|---|---|
27015 | UDP | Game traffic |
27016 | UDP | Steam query (automatically port + 1) |
Servers without a GSLT are hidden from the internet server list. Generate one at the Steam Game Server Account Management page using App ID 304930.
On first launch, a Commands.dat is generated from the environment variables. After that, the file is not overwritten — you can edit it directly for advanced configuration.
The server data is stored in the volume at:
/home/steam/unturned/Servers/MyServer/
├── Server/
│ ├── Commands.dat # Server commands
│ ├── Config.json # Server configuration
│ ├── Adminlist.dat # Steam64 IDs of admins
│ ├── Blacklist.dat # Banned players
│ └── Whitelist.dat # Whitelisted players
├── Level/ # World save data
├── Players/ # Player data
└── Workshop/ # Workshop content
To find these files on your host:
docker volume inspect unturned-data
Or use a bind mount instead:
volumes:
- ./server-data:/home/steam/unturned
Create or edit WorkshopDownloadConfig.json in your server root directory:
{
"File_IDs": [
1753134636
]
}
Then set UNTURNED_MAP to the Workshop map's name. Players connecting will automatically download the required files.
The server updates automatically on every container restart via SteamCMD. To force an update:
docker compose restart
Or pull the latest image:
docker compose pull
docker compose up -d
This project is licensed under the MIT.
Content type
Image
Digest
sha256:5a4313187…
Size
134.3 MB
Last updated
6 months ago
docker pull gzordrai/unturned-server