Sign inSign up

gzordrai/unturned-server

By gzordrai

•Updated 6 months ago

Docker image for running an Unturned dedicated server using SteamCMD on Debian Trixie

Image
Developer tools
0

1.1K

gzordrai/unturned-server repository overview

⁠Unturned Dedicated Server - Docker

Docker Pulls Docker Image Size

Dockerized Unturned⁠ dedicated server built on cm2network/steamcmd⁠.

⁠Quick Start

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:

⁠Environment Variables

Only set the variables you want to change. Everything else falls back to the defaults.

⁠Core
VariableDefaultDescription
UNTURNED_SERVER_NAMEMyServerServer name and save directory
UNTURNED_MAPPEIMap name (PEI, Washington, Yukon, Russia, Germany, or Workshop maps)
UNTURNED_MAXPLAYERS24Maximum player count
UNTURNED_PORT27015Game port (query port = port + 1)
UNTURNED_PERSPECTIVEBothCamera mode: First, Third, Both, or Vehicle
UNTURNED_MODENormalDifficulty: Easy, Normal, or Hard
UNTURNED_PASSWORD(empty)Password required to join
UNTURNED_GSLT(empty)Game Server Login Token (required for public servers)
⁠Access
VariableDefaultDescription
UNTURNED_OWNER(empty)SteamID64 of the server owner
UNTURNED_ADMIN(empty)SteamID64 granted admin privileges
UNTURNED_WHITELISTEDfalseRestrict 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_GOLDfalseRestrict server to Gold players only
⁠Gameplay
VariableDefaultDescription
UNTURNED_CHEATSfalseEnable cheat commands (Give, etc.)
UNTURNED_PVEfalseDisable 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)
⁠Network
VariableDefaultDescription
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
⁠Misc
VariableDefaultDescription
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_ADMINSfalseHide admin labels from players
UNTURNED_FILTERfalseFilter players with non-English-alphanumeric names
UNTURNED_SYNCfalseShare save data across servers
UNTURNED_VOTIFY(empty)Vote settings, e.g. Y/120/60/30/0.6/2 (Allowed/PassCooldown/FailCooldown/Duration/Percentage/MinPlayers)

⁠Ports

PortProtocolDescription
27015UDPGame traffic
27016UDPSteam query (automatically port + 1)

⁠GSLT (Game Server Login Token)

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.

⁠Server Configuration

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

⁠Workshop Maps

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.

⁠Updating

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

⁠License

This project is licensed under the MIT⁠.

Tag summary

Content type

Image

Digest

sha256:5a4313187…

Size

134.3 MB

Last updated

6 months ago

docker pull gzordrai/unturned-server