How to Run Sandbox, DarkRP or TTT on a Garry's Mod Server
A Garry's Mod server decides its gamemode from the +gamemode launch parameter, using the gamemode's folder name, and its map from +map, using the map file name without .bsp. Sandbox and Trouble in Terrorist Town (terrortown) ship with the game; DarkRP (darkrp) is a separate download from the Workshop or GitHub.
Most broken servers come from the same few causes: the gamemode folder name does not match, the map is not on the server, the Workshop collection is private, or players are never told to download the content. This guide covers all of them.
- Launch with
+gamemode <folder name> +map <map name>. Sandbox issandbox, TTT isterrortown, DarkRP isdarkrp. - DarkRP is not built in. Install it from the Workshop (via a collection) or put it in
garrysmod/gamemodes/darkrp/, and customise it through the separate DarkRPModification addon. +host_workshop_collection <id>mounts a public or unlisted collection on the server. Clients are told to download the map and gamemode automatically, and everything else needsresource.AddWorkshopor FastDL.- TTT and many maps need Counter-Strike: Source content mounted through
mount.cfg. - The Facepunch wiki lists a Game Server Login Token (
+sv_setsteamaccount) as required on the launch line.
On this page
The launch line for each gamemode
| Gamemode | +gamemode value | Where it comes from | Map names |
|---|---|---|---|
| Sandbox | sandbox | Built into Garry's Mod | e.g. gm_construct |
| Trouble in Terrorist Town | terrortown | Built into Garry's Mod | ttt_ maps, e.g. ttt_minecraft_b5 from the Workshop |
| DarkRP | darkrp | Workshop or GitHub (FPtje/DarkRP) | rp_ maps from the Workshop |
These follow the examples on the Facepunch wiki for Windows and Linux. Swap in your own values:
srcds.exe -console +maxplayers 20 +gamemode sandbox +map gm_construct +sv_setsteamaccount <token>
./srcds_run -game garrysmod +maxplayers 32 +gamemode terrortown +map ttt_minecraft_b5 +host_workshop_collection <collectionID>Change maps while running with changelevel. Note that +gamemode and +map are launch parameters, not server.cfg entries, and the gamemode value must match the directory name under garrysmod/gamemodes/ exactly. Linux file systems are case sensitive.
Sandbox
Sandbox is the default and needs nothing beyond the base install. Start with +gamemode sandbox and a map such as gm_construct. Its limits (props, ragdolls and so on) are server.cfg ConVars with the sbox_max prefix, covered in the server.cfg essentials guide.
Trouble in Terrorist Town (TTT)
TTT ships with the game as the terrortown gamemode, so the work is mostly maps and content:
- Add TTT maps (names start with
ttt_) to your Workshop collection.ttt_minecraft_b5is a common starting map. - Install and mount Counter-Strike: Source content. Many TTT maps and models use CS:S assets, and missing textures usually mean it is not mounted (see the mounting section below).
- TTT's round, karma and traitor settings are ConVars that you place in
garrysmod/cfg/server.cfg. The TTT wiki lists them; read each description first because a wrong value can cause lag or odd rounds. - Rotate maps with a map-vote addon or a mapcycle. Admin tooling such as ULX is a separate install.
DarkRP
DarkRP is a framework, not a bundled gamemode. The project says to install it from the Workshop or from Git, not by manual zip downloads.
- Workshop route: add the DarkRP Workshop item (ID 248302805) to your server's collection. Workshop addons can supply gamemodes, so
+gamemode darkrpthen works. - Git route: clone
github.com/FPtje/DarkRPintogarrysmod/gamemodes/darkrp/. The folder must be nameddarkrpin lowercase. - Customisation: put jobs, shipments and settings in the DarkRPModification addon (
garrysmod/addons/darkrpmodification/) instead of editing DarkRP's own files, so updates do not overwrite your changes. The project asks you not to modify core files. - Maps: use an
rp_map from the Workshop and include it in your collection.
Workshop collections and what clients download
Create a Workshop collection of your maps, addons and (for DarkRP) the gamemode, make it public or unlisted, and add its ID to the launch line:
+host_workshop_collection 123456789- The server downloads the collection at startup, mounts the addons, and checks for updates on every restart. Nested sub-collections are downloaded too.
- Private collections cannot be read by the server, so the content silently does not load.
- Clients are automatically told to download the current map when its name matches a map in the collection, and the same for a gamemode that declares a Workshop ID in its info file. The console logs "Making workshop map available for client download".
- Other content is not pushed to players by the collection alone. Serve it with a serverside file such as
garrysmod/lua/autorun/server/workshop.luacontainingresource.AddWorkshop("150455514")(the wiki's example ID) for each Workshop item players need, or use FastDL for your own files. host_workshop_autoupdate 0stops content updating at server start. That guards against malicious updates but can lock players out if the server's copy of a map or addon is older than theirs.- Newer builds can also read Workshop IDs from
cfg/srcds_workshop_ids.txtinstead of or alongside a collection. The wiki marks it as available from version 2026.09.22.
Hosting with ChicagoServers? The Garry's Mod server hosting page lists what is included, such as Steam Workshop collection support, free server backups and SFTP file access.
Mounting Counter-Strike: Source and other game content
Garry's Mod reads other Source games through garrysmod/cfg/mount.cfg. Each entry pairs a key such as cstrike or tf with the path to that game's folder, inside a "mountcfg" block. Paths are case sensitive on Linux.
"mountcfg"
{
"cstrike" "/path/to/css/cstrike"
}If a mounted game is not showing up, check garrysmod/cfg/mountdepots.txt, which lists the games the engine should try to mount (cstrike, hl1, hl1_hd, hl2, hl2mp, episodic, ep2 and lostcoast are the defaults). Create it if it does not exist.
Common mistakes
- Using a display name or the wrong case for
+gamemode. The value is the gamemode's folder name (darkrp), and Linux is case sensitive. - Using the map's Workshop title as
+map. Use the.bspfile name without the extension. - Leaving the collection private.
- Not serving custom content, so players see missing-model errors or purple-and-black textures.
- Forgetting to mount CS:S for TTT or DarkRP maps that use its assets.
- Editing DarkRP's own files, then losing the changes on update.
- Omitting the login token. The Facepunch wiki lists a GSLT passed with
+sv_setsteamaccountas mandatory for dedicated servers.
Frequently asked questions
Is DarkRP built into Garry's Mod?
No. Sandbox and TTT ship with the game, but DarkRP is a separate gamemode that you install from the Workshop or from GitHub into garrysmod/gamemodes/darkrp.
How do I change the gamemode on a Garry's Mod server?
Set the +gamemode launch parameter to the gamemode's folder name, such as sandbox, terrortown or darkrp, and restart with a compatible +map. Changing maps alone does not change the gamemode.
Why do players see missing textures or errors on my server?
Either the server did not mount the content (often Counter-Strike: Source via mount.cfg) or players were never told to download it. Add resource.AddWorkshop lines for Workshop items or set up FastDL.
Does my Workshop collection need to be public?
It must be public or unlisted. A private collection cannot be read by the server, so nothing in it is downloaded or mounted.