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.
- Freeno Steam login needed to download
- 1.9 GBserver install
- ~850 MBRAM, empty server on PEI with Rocket
- 27015–27016UDP ports to forward, or none with Fake IP
The short version
- Download Steam app 1110390 with SteamCMD (anonymous login).
- Start it once with
+InternetServer/MyServer, then typeshutdown. - Set the name, map, slots and owner in
Commands.dat. - Get a Game Server Login Token (app 304930) so people can find and join it.
- Turn on Fake IP, or forward UDP 27015 and 27016.
- Optional: a curated map, RocketMod or OpenMod.
What you need
- A Windows or Linux computer that stays on while people play. SDG doesn't support hosting on macOS. Our test machine was a home NAS with 12 CPU threads; an empty server used about 850 MB of RAM. More players, bigger maps and plugins use more.
- About 2 GB of disk for the install, plus the world saves and any Workshop maps (the Easter Island map was 100 MB).
- No Steam account to download it. You need one for the login token (step 4), and you need your SteamID64, the 17-digit number on your Steam account page, to make yourself admin.
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 infinityA 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 +quitDownloads 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.528sWithout 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 27015The 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!| Line | What it does |
|---|---|
Name | Name in the server list. |
Map | The map, by its folder name. Built in: PEI, Washington, Yukon, Russia and Germany. Spaces are fine (Map Easter Island). |
MaxPlayers | Player slots. The game's default is 8. |
Mode | Difficulty: Easy, Normal or Hard (picks the matching gameplay settings). |
Perspective | First, Third, Both or Vehicle (third person only while driving). |
PvE | On its own line: players can't hurt each other. |
Password | Password to join. The server keeps only a SHA-1 hash, so don't reuse a real password. |
Owner | Your SteamID64: you are admin whenever you join. |
Cheats | On its own line: admins can spawn items and vehicles (/give, /vehicle). |
Welcome | Chat message shown to players who join. |
Port | First of the two UDP ports (default 27015). |
GSLT | Your 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)
- Open steamcommunity.com/dev/managegameservers and log in. Valve lists the account requirements there.
- Enter App ID 304930 (Unturned, not the server's 1110390) and a memo such as the server name. Create the token.
- Put it after
Login_Tokenin Config.txt, or add a lineGSLT <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:
None: nothing for sale, or donations only.NonGameplay: a shop that sells nothing that affects gameplay.Monetized: a shop that sells gameplay advantages.Unspecified: the default. (Anyis only a server-list filter, not a value to set.)
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:
- Fake IP (easier): set
Use_FakeIP truein Config.txt. Steam relays the traffic, so you open no ports and your real IP stays hidden. The address changes on every start, and it doesn't work with Steam's Favorites and History lists. Use CopyFakeIP to copy it. - Port forwarding: forward UDP 27015 and 27016 on your router to the server's local IP (in Docker, publish them with
-p 27015-27016:27015-27016/udp). Allow them in the firewall too.
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:65096We 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:
- Add the map's Workshop ID to
File_IDsinServers/MyServer/WorkshopDownloadConfig.json. - Start the server once, so it downloads the map.
- Set
Mapin 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 changesThe 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.
| Map | Workshop ID | Also downloads |
|---|---|---|
| California 2 | 3707778928 | 3711646503 |
| Limestone | 3565225438 | – |
| Rio de Janeiro | 3416057692 | – |
| Escalation | 3251926587 | – |
| Buak | 3000549606 | – |
| A6 Polaris | 2898548949 | – |
| Arid | 2683620106 | – |
| Kuwait | 2483365750 | – |
| Elver | 2136497468 | – |
| Easter Island | 1983200271 | – |
| France | 1975500516 | – |
| Ireland | 1411633953 | – |
| California (Original) | 1905768396 | – |
| Rio de Janeiro (Original) | 1821848824 | – |
| Dango | 1850228333 | – |
| Canyon Arena | 1850209768 | – |
| Bunker Arena | 1257784170 | – |
| Athens Arena | 1454125991 | – |
| Carpat | 1497352180 | 1702240229 (Greece), 1753131903 |
| Greece | 1702240229 | 1753131903 |
| Hawaii | 1753134636 | 1753131903 |
| Belgium | 1727125581 | 1767554683 |
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 secondsRocket 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:
- Download
OpenMod.Installer.RocketMod(we used 1.0.0-beta4) from its GitHub releases and put the.dllinRocket/Plugins/. - Restart, type
openmod installin the console and answer its two questions (we kept RocketMod for both). - 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 loadedWhich 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.
- Easiest: install Unturned Dedicated Server from the Tools in your Steam Library and launch it. It runs a LAN server from
U3DS\Servers\Default\. - For more control or several servers, download SteamCMD for Windows, unzip it and run
steamcmd.exe. Typelogin anonymous, thenapp_update 1110390, thenquit. The server is insteamcmd\steamapps\common\U3DS. - In that folder create
MyServer.bat(turn on file name extensions in Explorer so it isn'tMyServer.bat.txt) containing:start "" "%~dp0ServerHelper.bat" +InternetServer/MyServer - Double-click it, wait for
Loading level: 100%, typeshutdown. From here, steps 3 to 8 are the same, inU3DS\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.
| Host | From | Cheapest plan | Priced | RAM | Locations | Plugins | Trial / refund |
|---|---|---|---|---|---|---|---|
| PingPerfect | $5.44/mo | 10 slots | per slot | 9 GB on every plan | 20: Europe, US, Canada, South America, South Africa, Singapore, Sydney | Rocket and OpenMod from its mod manager | 48-hour free trial, 48-hour refund |
| Sparked Host | $2.50/mo | 2 GB RAM, 1 vCPU (no slot count stated) | per GB of RAM | 2 GB; $1.00 per GB on the budget tier | About 9: US (Ashburn, Dallas, Miami, Salt Lake City), Europe, Singapore, Mumbai, Sydney | RocketMod, OpenMod and uScript listed | 24-hour free trial, 48-hour refund |
| GTX Gaming | £6.00/mo | 20 slots (minimum), £0.30 per extra slot | per slot | 5 GB included, upgrades from 8 GB | 21: Europe, US, Sydney, Tokyo, Singapore, Mumbai and more | Rocket (LDM) and OpenMod one-click installs | 24-hour refund |
| Host Havoc | $12.60/mo | 18 slots (minimum), up to 48 | per slot | Not stated | 14: US, Canada, Europe, Singapore, Sydney | Rocket (LDM) and OpenMod | 72-hour refund |
| Pine Hosting | $11.50/mo | 18 slots | per slot | 5 GB (8 GB on the 24-slot plan) | Not stated on the page | Plugin and Workshop installers; RocketMod/OpenMod not named | Not stated |
| Gameserverkings | $9.00/mo | 8 GB RAM, 1.5 vCores (no slot count stated) | per GB of RAM | 8 GB | 4: Dallas, Ashburn, London, Frankfurt | Rocket (LDM) and OpenMod | 72-hour refund |
- For a few friends: PingPerfect's 10-slot plan is the only small slot plan we found; most slot-priced hosts start at 18 or 20 slots. Sparked Host is cheapest, but 2 GB of RAM is tight: our empty test server already used 850 MB.
- Priced per slot or per GB: slot plans fix the player count; RAM plans don't limit slots, so set
MaxPlayersyourself. - Also checked: G-Portal sells only 24-slot Unturned servers, from €22.75 per 30 days, in Central Europe. Shockbyte and Apex Hosting list Unturned but their pages didn't load for our check, so their prices aren't here. We found no current Unturned page at Nitrado.