Garry's Mod guide

How to Run Sandbox, DarkRP or TTT on a Garry's Mod Server

By the ChicagoServers team · Updated · 7 min read

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.

Quick answer
  • Launch with +gamemode <folder name> +map <map name>. Sandbox is sandbox, TTT is terrortown, DarkRP is darkrp.
  • 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 needs resource.AddWorkshop or 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
  1. The launch line for each gamemode
  2. Sandbox
  3. Trouble in Terrorist Town (TTT)
  4. DarkRP
  5. Workshop collections and what clients download
  6. Mounting Counter-Strike: Source and other game content
  7. Common mistakes
  8. Frequently asked questions
  9. References

The launch line for each gamemode

Gamemode+gamemode valueWhere it comes fromMap names
SandboxsandboxBuilt into Garry's Mode.g. gm_construct
Trouble in Terrorist TownterrortownBuilt into Garry's Modttt_ maps, e.g. ttt_minecraft_b5 from the Workshop
DarkRPdarkrpWorkshop 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:

Windows and Linux examples
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_b5 is 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 darkrp then works.
  • Git route: clone github.com/FPtje/DarkRP into garrysmod/gamemodes/darkrp/. The folder must be named darkrp in 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.lua containing resource.AddWorkshop("150455514") (the wiki's example ID) for each Workshop item players need, or use FastDL for your own files.
  • host_workshop_autoupdate 0 stops 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.txt instead 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.

mount.cfg (example path)
"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 .bsp file 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_setsteamaccount as 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.

References