RE:NODE

Guides12 min read

Unturned server setup: config, workshop maps and RocketMod

Setting up an Unturned dedicated server: Commands.dat, the gameplay config, ports and the GSLT, workshop maps and mods, admins, RocketMod and the usual errors.

Updated

0 readers

Unturned asks almost nothing of a server, which makes it a good first one to run. Two gigabytes and one core will carry a full group on an official map, the whole configuration lives in a handful of files under one folder, and the dedicated server installs anonymously in about a minute. The mistakes people make are all in the same two places: workshop content that the server has and the client does not, and a missing Game Server Login Token that leaves the server running perfectly and invisible to everyone. This guide covers the install, every file that matters, the ports, the workshop, RocketMod and the errors in between.

What you are running#

The Unturned 3 dedicated server is its own Steam application, app id 1110390, installed anonymously and landing in a folder called U3DS. It does not need a copy of the game and it does not need a licence. The client's app id is 304930, which matters in two places: workshop downloads, and the login token.

Everything about one server lives inside a single instance folder, and you can run several instances from one install by giving each a different name:

code
U3DS/  ServerHelper.sh              Linux start script  ServerHelper.bat             Windows start script  Servers/    MyServer/                  one instance      Server/        Commands.dat           what the server is        Config.json            how the game plays (older servers)        Config.txt             how the game plays (3.25.8.0 and newer)        Adminlist.dat          SteamID64 per line        Blacklist.dat        Whitelist.dat      WorkshopDownloadConfig.json workshop items to fetch at boot      Rocket/                  RocketMod, if installed

That split is the mental model for the whole game. Commands.dat decides what the server is - its name, port, map, slots and owner. The gameplay config decides how the game plays - loot, zombies, vehicles, damage. Two files, two jobs, and almost every question about Unturned hosting is really a question about which of them you should be editing.

Requirements and resource usage#

ServerRAMCPUNotes
8-12 players, official map, vanilla2 GB1 coreGenuinely enough, not a starting figure
16-24 players, curated map3-4 GB1.5 coresLarger maps hold more objects
24-40 players, RocketMod plugins4-6 GB2 coresPlugins and saved structures add up
Large workshop map plus mod packs6-8 GB2-2.5 coresThe map is usually the memory

The variable is the map, not the player count. Official maps like Washington and PEI are small and cheap; big community maps hold far more objects and load far more assets. A server's memory use also creeps up as players build - every structure and barricade is saved and simulated - so a server that fits in 2 GB in week one may want 3 GB by month three.

Disk is modest: the server install is a couple of gigabytes, and workshop content is usually a few hundred megabytes per large map. Unturned plans here start at 2 GB with 10 GB of disk, which is the honest size for this game rather than an upsell. If you are trying to work out a slot count, how many players fit on a server covers the general method.

Installing the server and starting it#

bash
$ steamcmd +force_install_dir /home/unturned/U3DS +login anonymous \    +app_update 1110390 validate +quit$ cd /home/unturned/U3DS$ ./ServerHelper.sh +InternetServer/MyServer

On Windows the same thing is ServerHelper.bat +InternetServer/MyServer. Replace InternetServer with LanServer for a local-only test. The instance name after the slash is the folder under Servers/, and it is created on first run along with the config files - so start the server once, stop it, and then edit what it generated rather than writing the files from scratch. SteamCMD explained covers validate, update scripts and what the app id arguments mean.

Commands.dat: the server's identity#

Commands.dat is a plain list, one command per line, read once at boot. A complete file for a small survival server:

Servers/MyServer/Server/Commands.dat
Name Thursday SurvivalOwner 76561198012345678Port 27015Map WashingtonMaxPlayers 24Mode NormalPerspective BothWelcome Read the rules in Discord. No raiding offline bases.PasswordQueue_Size 8FilterCheatsGSLT 0123456789ABCDEF0123456789ABCDEF

The commands worth knowing:

CommandEffect
NameServer name in the browser, up to 50 characters
OwnerA SteamID64 that gets permanent admin
PortQuery port; the game runs on this plus one
MapInternal map name, not the display name
MaxPlayersSlot count
ModeEasy, Normal or Hard - picks which difficulty config applies
PvEPresent means PvE; absent means PvP
PerspectiveFirst, Third, Vehicle or Both
PasswordJoin password; leave the value blank for none
Queue_SizeHow many players may wait for a slot
CheatsPresent enables cheat commands, absent disables them
FilterRejects players whose names contain junk characters
GoldRestricts the server to Gold Upgrade owners
LoadoutSkillset and starting items for new spawns
WelcomeMessage shown on join
GSLTThe login token, if you do not put it in the config file

Mode is the one that surprises people. It does not just change a damage number - it selects which difficulty block of the gameplay config the server uses, so a Mode Hard server ignores the numbers you carefully edited under Normal.

Map takes the internal name. Official and curated maps ship with the game and need nothing else; if the server cannot find the name you gave it, it silently loads PEI instead. A server that keeps booting into PEI has a typo, not a bug.

The gameplay config: Config.txt and Config.json#

Servers created on build 3.25.8.0 or later get Config.txt, a commented plain-text file with sections in braces. Older instances have Config.json holding the same settings as JSON. The structure is the same either way: a Browser section for how the server presents itself, a Server section for connection behaviour, and a block per difficulty - Easy, Normal, Hard - each containing Items, Vehicles, Zombies, Animals, Barricades, Structures, Players, Objects, Events and Gameplay.

The settings people actually change, with their Normal-difficulty defaults:

SettingDefaultWhat it does
Items.Spawn_Chance0.35Chance that a spawn point holds an item
Items.Respawn_Time50.0Seconds before a looted point can refill
Items.Despawn_Dropped_Time600.0Seconds before dropped items vanish
Items.Quality_Multiplier1.0Condition of items that spawn
Zombies.Spawn_Chance0.2Chance a zombie spawn point is used
Zombies.Respawn_Day_Time360.0Seconds before a killed zombie returns in daylight
Zombies.Respawn_Night_Time30.0The same at night
Zombies.Damage_Multiplier0.75How hard zombies hit
Zombies.Armor_Multiplier1.25How much damage they absorb
Vehicles.Respawn_Time300.0Seconds before a destroyed vehicle respawns

Those defaults are the Normal block's. Change Mode in Commands.dat and a different set applies, which is the most common reason an edit "does nothing".

The Browser section holds Icon and Thumbnail - URLs to small images shown in the server list - plus the description fields, a Monetization declaration you should fill in honestly if you sell anything, and Login_Token. The Server section holds VAC_Secure and BattlEye_Secure, both of which should stay on for a public server, along with ping and timeout limits.

A word on loot multipliers, since raising them is the first thing everyone does: Items.Spawn_Chance at 1.0 does not make your server generous, it makes it pointless. Every building is full, nobody needs to travel, and the game is over in an evening. If you want a faster server, cut Items.Respawn_Time instead so places refill sooner while a run through town still means something.

Ports, the GSLT and connecting#

PortProtocolPurpose
27015UDPServer list queries, set by Port
27016UDPGame traffic, always Port + 1

Both are UDP, and both must be reachable. If you run two instances on one machine, space the Port values by at least two - 27015 and 27017 - or the second server's game port collides with the first server's query port. Unturned plans here come with two allocations, which is exactly this pair. Game server ports explained covers what a query port is for and how to tell which of the two is blocked.

The token is the other half of being visible. Since build 3.21.31.0, a server without a Game Server Login Token is hidden from the internet server list - it runs, people can still join by IP, and it will never be found by anyone browsing. Create one at Steam's game server account page using app id 304930, then put it in one place, not both:

code
GSLT 0123456789ABCDEF0123456789ABCDEF

in Commands.dat, or as Login_Token in the Browser section of the config file. The token belongs to your Steam account, it can be banned if the server misbehaves, and each running server needs its own. Steam game server tokens explained covers the rules, and monetising a game server within the rules covers what you may sell before that token becomes a liability.

On RE:NODE the token is yours to create: the server is built as soon as payment clears, and the install waits on the Setup tab until you paste it in. That is deliberate. A host that hands you a token has given you somebody else's credential.

Workshop maps and content#

Workshop items belong in the config, not in the file system. Add the IDs to WorkshopDownloadConfig.json in the instance folder and the server downloads them at boot and hands the list to joining players, who fetch the same items from Steam automatically:

Servers/MyServer/WorkshopDownloadConfig.json
{    "File_IDs": [        1205209275,        1440592288    ]}

Install a map by hand instead and players are sent to a world they cannot load, which reads to them as a broken server rather than a missing download.

read at startcontentrequired id listthe same itemsWorkshopDownloadConfigFile_IDs arraySteam WorkshopUnturned serverdownloads at bootPlayerdownloads on join
How a workshop map reaches a joining player

Three rules keep this painless:

  • Curated maps need no extra setup and are the sensible starting point. They ship with the game on both ends, so there is nothing to download and nothing to mismatch.
  • Many community maps are two items, a terrain and an asset pack. Include only one and players see floating red error text where objects should be. Read the map's workshop page for what else it requires.
  • Restart after every change. The IDs file is read at boot, and a workshop item that updated mid-session is not picked up until the server restarts.

Mod content follows the same path - an item pack is a workshop id like any other. Steam Workshop mods on dedicated servers covers how those downloads work across games, including what happens when an author unlists an item you depend on.

Admins, RocketMod and plugins#

Vanilla administration is a console and three text files. Adminlist.dat, Whitelist.dat and Blacklist.dat each hold one SteamID64 per line, and the Owner command in Commands.dat grants permanent admin without touching them. The console commands worth memorising:

CommandEffect
admin <player>Grant admin to a connected player
unadmin <player>Remove it
kick <player> <reason>Kick
ban <player> <reason> <duration>Ban, duration in seconds
unban <steamid>Lift a ban
playersList who is connected
saveWrite the world to disk now
shutdownClean stop, with a save
day / nightSet the time of day

Anything past that is a plugin framework. RocketMod is the long-standing one: it installs as a module in the server's Modules folder, and once it has started it creates a Rocket folder inside your instance with Rocket.config.xml, a Plugins folder and Permissions.config.xml. Plugins are DLLs dropped into Rocket/Plugins, and each generates its own configuration file on first load.

The thing that catches everyone with RocketMod is permissions. A plugin that loads correctly but whose commands do nothing is almost always a permissions problem: commands must be granted to a group in Permissions.config.xml before anyone but an admin can run them. Check that file before you conclude the plugin is broken. OpenMod is the more modern alternative and can run alongside RocketMod through an installer plugin, which is worth knowing if a plugin you want is only published for one of them.

Unturned servers on RE:NODE ship with RocketMod already in place, so the module is installed and the Rocket folder exists on first boot - you add plugins through SFTP or the file manager. There is no allow-list of permitted plugins; what you upload is what runs, which is also a reason to read a plugin's source before you give it your server. Commands.dat and RocketMod in detail goes further into both.

Whatever you install, keep the save. Player structures, vehicles and inventories live in the instance's save files, and there is no undo for a plugin that deletes them. Back up the instance folder on a schedule and restore one occasionally to prove it works - backups that actually restore exists because a backup nobody has restored is a hypothesis. A nightly restart is worth having too; restart schedules that help covers picking an interval.

Troubleshooting#

The server runs but nobody can find it in the list. No Game Server Login Token, or a banned one. Test by joining directly by IP; if that works, the token is the problem.

The server always loads PEI. The Map name is wrong or its workshop item did not download. Map names are internal names, and they are case-sensitive in practice.

Players get kicked to a red error screen on join. Missing workshop content. Usually a map's asset pack that is not in WorkshopDownloadConfig.json.

Config edits do nothing. Either the server was running when you saved them and overwrote them on shutdown, or you edited the wrong difficulty block for the Mode in Commands.dat.

Two servers on one machine fight over a port. Space Port values by two, not one. The game port is always the query port plus one.

A plugin loads but its commands are ignored. Permissions, in Rocket/Permissions.config.xml, nine times out of ten.

Memory climbs over weeks. Player-built structures. That is normal growth rather than a leak, and it is the usual reason a 2 GB server eventually wants 3 GB. Changing tier changes the limit on the server you already have, so the world stays where it is.

FAQ#

How much RAM does an Unturned server need?

2 GB is enough for a dozen players on an official map, and that is not a hedge - Unturned is one of the lightest survival games to host. Budget 4 GB if you are running a large community map with mods, and expect slow growth as players build.

Do I need my own Steam login token?

Yes, for any public server. Since build 3.21.31.0 a server without one is hidden from the internet server list. The token is created against app id 304930 on your own Steam account and goes in Commands.dat or the config file, not both.

Config.json or Config.txt - which one do I have?

Servers created on build 3.25.8.0 or later use Config.txt; older instances keep Config.json. The settings are the same and so is the structure. Edit whichever one is in your instance folder rather than creating the other.

Why do my loot settings have no effect?

Because the config has a separate block for each difficulty and the server only reads the one matching Mode in Commands.dat. Edit the block that matches, or change Mode.

Can players join without subscribing to my workshop maps?

They do not need to subscribe manually. The server sends the required item list on join and the client downloads it from Steam automatically - as long as every required id, including asset packs, is in WorkshopDownloadConfig.json.

Is RocketMod still the right choice?

It is still the most widely supported framework and most existing plugins target it, which is why it ships preinstalled here. OpenMod is newer and can run alongside it. Pick whichever the plugins you actually want are published for.


Comments

Completely anonymous: no account, no email, no cookie. We store the name you type, the text and the time - nothing else. Links are limited and markup is not rendered.

0/2000