How to make an Unturned server

Everything below was run for real: we installed the Unturned dedicated server on Linux in Docker on 10 November 2026, game version 3.26.3.14, and the terminal output on this page is from that run. The Windows steps follow the official docs and were not tested by us. Would you rather not run it yourself? Compare hosts.

The short version

  1. Download Steam app 1110390 with SteamCMD (anonymous login).
  2. Start it once with +InternetServer/MyServer, then type shutdown.
  3. Set the name, map, slots and owner in Commands.dat.
  4. Get a Game Server Login Token (app 304930) so people can find and join it.
  5. Turn on Fake IP, or forward UDP 27015 and 27016.
  6. Optional: a curated map, RocketMod or OpenMod.

What you need

1. Download the server with SteamCMD

The dedicated server is a separate free Steam app, 1110390 (Unturned itself is 304930). SteamCMD, Valve's command-line Steam client, downloads it with an anonymous login. We used the steamcmd/steamcmd Docker image, which is Ubuntu with SteamCMD already installed:

docker run -d --name unturned --entrypoint sleep steamcmd/steamcmd:latest infinity

A long-running container to install into. Add -p 27015-27016:27015-27016/udp if you will forward ports.

docker exec unturned steamcmd +force_install_dir /root/unturned +login anonymous +app_update 1110390 validate +quit

Downloads the server (1.9 GB) into /root/unturned. The same command updates it later.

The first try failed with Missing configuration, a common SteamCMD hiccup on a fresh install. Running the same command again worked, in 70 seconds:

$ steamcmd +force_install_dir /root/unturned +login anonymous +app_update 1110390 validate +quit
Connecting anonymously to Steam Public...OK
Waiting for client config...OK
Waiting for user info...OK
ERROR! Failed to install app '1110390' (Missing configuration)

$ steamcmd +force_install_dir /root/unturned +login anonymous +app_update 1110390 validate +quit
Connecting anonymously to Steam Public...OK
Waiting for client config...OK
Waiting for user info...OK
Success! App '1110390' fully installed.

real    1m9.528s

Without Docker, install SteamCMD as Valve describes and run the same+login anonymous +app_update 1110390 +quit line. Without +force_install_dir, the files land insteamapps/common/U3DS/. The image needed no extra packages: ServerHelper.sh points the server at its own copy of Steam's library.

To update after a game patch, stop the server and run the download command again. Players can only join a server on exactly their own game version, so a server that misses a patch is locked out until it updates.

2. Start it once

In the install folder, ServerHelper.sh starts the server. +InternetServer/MyServer runs an Internet server whose files go in Servers/MyServer/; +LanServer/MyServer runs a LAN-only one. The name after the slash is just the folder name, so you can run several servers from one install.

docker exec -it unturned bash -c 'cd /root/unturned && ./ServerHelper.sh +InternetServer/MyServer'

On plain Linux: cd into the install folder and run ./ServerHelper.sh +InternetServer/MyServer.

It loaded in about half a minute. Expect hundreds of Shader … not supported on this GPU warnings: a server has no graphics card, and they are harmless. The lines that matter (trimmed):

$ ./ServerHelper.sh +InternetServer/MyServer
Game version: 3.26.3.14 Engine version: 2022.3.62f3
Waiting for Steam servers...
Steam servers ready!
Workshop install folder: /root/unturned/Servers/MyServer/Workshop/Steam
0 workshop item(s) requested
Loading level: 5%
…
//////////////////////////////////////////////////////
Server Code: 90297148095238157
Your friends can enter this code in the Connect Directly menu to join without port forwarding.
//////////////////////////////////////////////////////
Steam Game Server Login Token (GSLT) not set
Without a login token the server:
- Is not visible in Internet server list
- Cannot be joined over the Internet
See this link for guide and more information:
https://docs.smartlydressedgames.com/en/stable/servers/game-server-login-tokens.html
Loading level: 100%

Type shutdown in the console to save and stop (Shutdown). The first start created this folder:

Servers/MyServer/
├── Config.txt                    gameplay, server list and network settings
├── WorkshopDownloadConfig.json   Workshop maps and mods to download
├── Server/
│   └── Commands.dat              name, map, players, password, owner… (empty at first)
├── Workshop/                     downloaded Workshop items
├── Bundles/  Maps/               your own extra content (empty)
└── Level/                        the world save (after the first save)

The console needs a real terminal. On Linux the server only reads commands when it runs in a terminal (it checks for key presses), so typed commands are ignored if you pipe them in. Run it in docker exec -it, screen or tmux. We ran it under script, which gives it one. Vanilla servers don't autosave: use save or shutdown, or add Rocket (below), which saves every 30 minutes.

3. Commands.dat: name, map, slots, password, owner

Servers/MyServer/Server/Commands.dat holds one command per line, run at every start. It is empty at first. This is the file we used:

Name UnturnedLord Test Server
Map PEI
MaxPlayers 16
Mode Normal
Perspective Both
Password changeme
Owner 76561198000000001
Welcome Welcome to the test server!
Port 27015

The server confirms each line as it starts:

Successfully set name to UnturnedLord Test Server!
Successfully set map to PEI!
Successfully set max players to 16!
Successfully set gamemode to normal!
Successfully set perspective to both!
Successfully enabled password!
Successfully set owner to 76561198000000001!
Successfully set welcome message to Welcome to the test server!!
Successfully set port to 27015!
LineWhat it does
NameName in the server list.
MapThe map, by its folder name. Built in: PEI, Washington, Yukon, Russia and Germany. Spaces are fine (Map Easter Island).
MaxPlayersPlayer slots. The game's default is 8.
ModeDifficulty: Easy, Normal or Hard (picks the matching gameplay settings).
PerspectiveFirst, Third, Both or Vehicle (third person only while driving).
PvEOn its own line: players can't hurt each other.
PasswordPassword to join. The server keeps only a SHA-1 hash, so don't reuse a real password.
OwnerYour SteamID64: you are admin whenever you join.
CheatsOn its own line: admins can spawn items and vehicles (/give, /vehicle).
WelcomeChat message shown to players who join.
PortFirst of the two UDP ports (default 27015).
GSLTYour login token (or put it in Config.txt, below).

Every command, with its parameters: Unturned commands.

4. Config.txt, the login token and the Monetization field

Servers/MyServer/Config.txt holds everything else: the server-list text and icon, loot and zombie numbers per difficulty, decay timers, and network options. Since 3.25.8.0 it replaces the old Config.json (an old server's JSON is converted at startup). A setting with no value uses the default; add a value after the name. The two parts we changed:

Browser
{
	…
	// > To generate a new token visit: https://steamcommunity.com/dev/managegameservers
	Login_Token

	// > How the server is monetized (if at all).
	// > Options: Unspecified, Any, None, NonGameplay, Monetized
	// > Default: Unspecified
	Monetization None
	…
}

Server
{
	…
	// > Documentation: https://docs.smartlydressedgames.com/en/stable/servers/fake-ip.html
	// > Default: False
	Use_FakeIP true
	…
}

See SDG's server configuration page for the rest. Curated maps can override some settings: the Easter Island map set its own zombie damage and decay timers in our log.

Get a Game Server Login Token (GSLT)

  1. Open steamcommunity.com/dev/managegameservers and log in. Valve lists the account requirements there.
  2. Enter App ID 304930 (Unturned, not the server's 1110390) and a memo such as the server name. Create the token.
  3. Put it after Login_Token in Config.txt, or add a line GSLT <token> to Commands.dat. One token per server. Treat it like a password.

We ran without one. The server still starts and prints a Server Code, but it warns that it is not visible in the Internet server list and cannot be joined over the Internet (the log above). SDG's docs add that its Server Code changes on every start until a token is set. For friends on your own network a LAN server needs no token.

Hosting rules and the Monetization field

Internet servers have to follow SDG's server hosting rules. The main one: you can't sell or give away vanilla premium content, such as Gold upgrade perks or the game's own cosmetics. Monetization in Config.txt tells players how your server makes money; it's optional, but if you set it, it must be true:

5. Let players in: Fake IP or port forwarding

The server uses two UDP ports: the one set by Port (27015 by default) for the server list, and the next one (27016) for the game. With Fake IP on or off, our server bound exactly those two. For a second server on the same machine, use Port 27017, then 27019, and so on. SDG says to set up one of these, not both:

Our log with Fake IP on, across two starts:

Requesting "FakeIP" from Steam
…
Steam assigned "FakeIP" address: 169.254.120.216:43344
Your friends can enter this address in the Connect Directly menu to join without port forwarding.
Tip: Use the "CopyFakeIP" command to copy the address to your clipboard.

(next start)
Steam assigned "FakeIP" address: 169.254.89.142:65096

We didn't open ports on the router or join from outside during the test, so this step is checked against the server's log and SDG's Fake IP and port forwarding pages.

6. Make yourself admin

The Owner line makes you admin every time you join. To add others, type admin and their name or SteamID64 in the console, or /admin in chat once you are one. With Cheats on, admins can spawn items with /give. Step by step: how to become admin on your own server.

7. Install a curated map

Curated maps (Kuwait, Buak, Elver…) aren't in the server download. The server fetches them from the Steam Workshop at startup:

  1. Add the map's Workshop ID to File_IDs in Servers/MyServer/WorkshopDownloadConfig.json.
  2. Start the server once, so it downloads the map.
  3. Set Map in Commands.dat to the map's name and restart.

Our file and log with Easter Island (ID 1983200271):

{
  "File_IDs": [1983200271],
  "Ignore_Children_File_IDs": [],
  "Query_Cache_Max_Age_Seconds": 600,
  "Max_Query_Retries": 2,
  "Use_Cached_Downloads": true,
  "Should_Monitor_Updates": true,
  "Shutdown_Update_Detected_Timer": 600,
  "Shutdown_Update_Detected_Message": "Workshop file update detected, shutdown in: {0}",
  "Shutdown_Kick_Message": "Shutdown for Workshop file update."
}
1 workshop item(s) requested
Submitting workshop query for 1 item(s)...
Workshop query yielded 1 result(s)
1983200271 'Easter Island' queued for download
Downloading workshop item: 1983200271
Successfully downloaded workshop item: 1983200271
Installed workshop item: 1983200271

(after changing the Map line to "Map Easter Island")
Successfully set map to Easter Island!
Workshop item found in cache: 1983200271
Level overrides config Zombies.Damage_Multiplier: 0.9
Level overrides config Vehicles.Decay_Time: 259200
…
Monitoring workshop map "Easter Island" (1983200271) for changes

The server downloads any extra Workshop items a map needs by itself, and players download them when they join. If a map won't load, the folder name under Workshop/Steam/content/304930/<ID>/ is the name the Map line needs. With Should_Monitor_Updates on (the default), the server shuts itself down 10 minutes after a Workshop item updates, so run it under something that restarts it.

Curated map Workshop IDs

From the game's own list (Status.json) in Unturned 3.26.3.14. "Also downloads" are the items the map needs, which the server fetches by itself.

MapWorkshop IDAlso downloads
California 237077789283711646503
Limestone3565225438–
Rio de Janeiro3416057692–
Escalation3251926587–
Buak3000549606–
A6 Polaris2898548949–
Arid2683620106–
Kuwait2483365750–
Elver2136497468–
Easter Island1983200271–
France1975500516–
Ireland1411633953–
California (Original)1905768396–
Rio de Janeiro (Original)1821848824–
Dango1850228333–
Canyon Arena1850209768–
Bunker Arena1257784170–
Athens Arena1454125991–
Carpat14973521801702240229 (Greece), 1753131903
Greece17022402291753131903
Hawaii17531346361753131903
Belgium17271255811767554683

8. RocketMod or OpenMod (plugins)

Vanilla servers can't run plugins (economy, kits, homes, teleports…). Two frameworks add them, and both worked on 3.26.3.14 in our test.

RocketMod (LDM)

RocketMod was the original community plugin framework. When its team stepped down, SDG took over a fork called Legally Distinct Missile (LDM), and it ships with the server: Extras/Rocket.Unturned, version 4.9.3.18 in our install. SDG recommends it over old Rocket builds because it fixes legacy bugs such as teleport exploits. To install, copy the folder into Modules and restart:

$ cp -r Extras/Rocket.Unturned Modules/
$ ./ServerHelper.sh +InternetServer/MyServer
…
Rocket Unturned v4.9.3.18 for Unturned v3.26.3.14
[registered] /admin (Rocket.Unturned.Commands.UnturnedCommands/admin)
…
[registered] /tp (Rocket.Unturned.Commands.CommandTp/tp)
[registered] /vanish (Rocket.Unturned.Commands.CommandVanish/vanish)
This server will automatically save every 1800 seconds

Rocket creates Servers/MyServer/Rocket/: plugins (.dll files) go in Rocket/Plugins/, and permissions live in Permissions.config.xml. It also adds its own commands (/tp, /heal, /vanish…) and an autosave every 30 minutes. Docs: Rocket (LDM).

OpenMod

OpenMod is a newer framework by one of Rocket's original maintainers. Its plugins come as NuGet packages, and it can run Rocket plugins alongside its own. Its last release is 3.8.10 from July 2024. The project still gets maintenance commits, but no new releases. We installed it the way its docs suggest, on top of LDM:

  1. Download OpenMod.Installer.RocketMod (we used 1.0.0-beta4) from its GitHub releases and put the .dll in Rocket/Plugins/.
  2. Restart, type openmod install in the console and answer its two questions (we kept RocketMod for both).
  3. Restart again.
> openmod install
OpenMod.Installer.RocketMod >> Which permissions system do you want to use?
OpenMod.Installer.RocketMod >> Choice RocketMod
OpenMod.Installer.RocketMod >> Which economy system do you want to use?
OpenMod.Installer.RocketMod >> Choice RocketMod
OpenMod.Installer.RocketMod >> Downloading OpenMod.Unturned.Module.zip
OpenMod.Installer.RocketMod >> Successfully installed OpenMod module.
OpenMod.Installer.RocketMod >> Installed package "OpenMod.Unturned"…
OpenMod.Installer.RocketMod >> Migration successfully finished. Restart your server to complete installation.

(after the restart)
[INF][OpenMod.Runtime.Runtime] OpenMod v3.8.10+a033121c… is starting...
[INF][OpenMod.Unturned.RocketMod.RocketModIntegration] RocketMod is installed, enabling RocketMod integration
[INF][OpenMod.Unturned.OpenModUnturnedHost] OpenMod for Unturned is ready
[INF][SDG.Unturned] Rocket Unturned v4.9.3.18 for Unturned v3.26.3.14
[INF][OpenMod.Unturned.RocketMod.RocketModIntegration] RocketMod plugins have been loaded

Which one? Start with LDM: it comes with the game, SDG maintains it, and the older plugin catalogue targets it. Add OpenMod when a plugin you want needs it; Rocket plugins keep working next to it.

On Windows

From SDG's docs; we did not test these steps on Windows.

  1. Easiest: install Unturned Dedicated Server from the Tools in your Steam Library and launch it. It runs a LAN server from U3DS\Servers\Default\.
  2. For more control or several servers, download SteamCMD for Windows, unzip it and run steamcmd.exe. Type login anonymous, then app_update 1110390, then quit. The server is in steamcmd\steamapps\common\U3DS.
  3. In that folder create MyServer.bat (turn on file name extensions in Explorer so it isn't MyServer.bat.txt) containing:
    start "" "%~dp0ServerHelper.bat" +InternetServer/MyServer
  4. Double-click it, wait for Loading level: 100%, type shutdown. From here, steps 3 to 8 are the same, in U3DS\Servers\MyServer\.

SDG's guides: Setting up a server and Using SteamCMD.

Rent a server instead

Hosting at home is free if you have a machine that stays on, but you look after updates, restarts and your home connection. A host does that for a monthly fee, with DDoS protection and a control panel, and the same Commands.dat, Config.txt and Workshop files in its file manager. These hosts list Unturned on their own sites; prices are their cheapest monthly plan as shown on 10 November 2026, before tax, and change often. Not ranked.

HostFromCheapest planPricedRAMLocationsPluginsTrial / refund
PingPerfect$5.44/mo10 slotsper slot9 GB on every plan20: Europe, US, Canada, South America, South Africa, Singapore, SydneyRocket and OpenMod from its mod manager48-hour free trial, 48-hour refund
Sparked Host$2.50/mo2 GB RAM, 1 vCPU (no slot count stated)per GB of RAM2 GB; $1.00 per GB on the budget tierAbout 9: US (Ashburn, Dallas, Miami, Salt Lake City), Europe, Singapore, Mumbai, SydneyRocketMod, OpenMod and uScript listed24-hour free trial, 48-hour refund
GTX Gaming£6.00/mo20 slots (minimum), £0.30 per extra slotper slot5 GB included, upgrades from 8 GB21: Europe, US, Sydney, Tokyo, Singapore, Mumbai and moreRocket (LDM) and OpenMod one-click installs24-hour refund
Host Havoc$12.60/mo18 slots (minimum), up to 48per slotNot stated14: US, Canada, Europe, Singapore, SydneyRocket (LDM) and OpenMod72-hour refund
Pine Hosting$11.50/mo18 slotsper slot5 GB (8 GB on the 24-slot plan)Not stated on the pagePlugin and Workshop installers; RocketMod/OpenMod not namedNot stated
Gameserverkings$9.00/mo8 GB RAM, 1.5 vCores (no slot count stated)per GB of RAM8 GB4: Dallas, Ashburn, London, FrankfurtRocket (LDM) and OpenMod72-hour refund