Steamworkshop and FastDL
Garry's Mod: Workshop and Fast Downloads
GMod's greatest strength is its Steam Workshop. This guide covers pulling Workshop content onto your server via a collection, and setting up fast downloads so players are not stuck waiting forever for addons. Complete Getting Started first.
Steam Workshop Integration
GMod servers load Workshop addons through a collection: a single Workshop item that bundles many addons. You point the server at the collection ID and it downloads everything inside.
Step 1: Create a Workshop Collection
- Go to
steamcommunity.com/workshop/browse/?appid=4000. - Click Create Collection.
- Add the addons and maps you want, then save.
- Note the Collection ID from the URL (e.g.,
?id=12345).
Keeping all your server's content in one collection makes it easy to manage and lets players subscribe to everything at once.
Step 2: Set the Collection ID
In the Startup tab, find the Workshop Collection ID field (or WORKSHOPID variable). Paste the collection ID.
Step 3: Set a Workshop Auth Key
Workshop downloads require a Steam Web API key:
- Go to
steamcommunity.com/dev/apikey. - Register for a key (free for any Steam account).
- In the Startup tab, paste the key into the Workshop Auth Key field.
Without both the collection ID and the auth key, the server cannot download Workshop content.
Step 4: Restart
The server downloads all addons in the collection to garrysmod/cache/workshop/ on boot. The first boot with a large collection takes a while.
Players auto-download missing addons when they connect, but the in-game Workshop download is slow. Set up fast downloads (below) to speed this up dramatically.
Fast Downloads (sv_downloadurl)
This is essential for any GMod server with significant Workshop content.
The Problem
Without sv_downloadurl, players downloading addons from the game server are throttled to roughly 20 KB/s (the Source engine limit). For a 200 MB addon pack, that is an unbearable wait, and many players disconnect before it finishes.
The Fix
Host your content on a normal HTTP web server and point the game at it:
- Extract the Workshop GMA files (from
garrysmod/cache/workshop/) or gather your custom content. - Host them on an HTTP server, your own or a CDN.
- Add to
server.cfg: ``cfg sv_downloadurl "https://fastdl.yourdomain.com/garrysmod/" sv_allowdownload 1`` - Mirror the server's
garrysmod/folder structure on the HTTP host so paths line up.
Players then download missing files from your fast URL at full speed instead of the throttled game server.
Workshop vs Fast Download
These two systems complement each other:
- Workshop (collection + auth key): how the server itself gets the addons, and how players can pre-subscribe
- Fast download (
sv_downloadurl): how players get any content not covered by their Workshop subscriptions, at full speed
A well-configured server uses both: a Workshop collection for the bulk of content, and a fast download URL as the speedy fallback.
Compressing Fast Download Files
Source supports bzip2-compressed downloads. Compress files to .bz2 and host both versions. Clients download the smaller compressed file and decompress locally, cutting download time. The bzip2 command-line tool produces these.
Common Issues
- Players cannot download Workshop content: Confirm both the Workshop Collection ID and the Auth Key are set in the Startup tab. Without both, nothing downloads.
- Server stuck loading a map: The map is missing from the collection or cache. Confirm the map is in your Workshop collection and the server finished downloading it.
- Addons download but extremely slowly:
sv_downloadurlis not set. Set up fast downloads. - FastDL returns 404: The folder structure on the HTTP host does not mirror the server's
garrysmod/paths. Fix the path layout. - Collection too large, boot times out: Very large collections take a long time on first boot. Be patient on the first start, or trim the collection.
What to Read Next
- Game Modes since most game mode content and maps come through the Workshop
- Admin Mods for managing the players who join
- Getting Started for the
server.cfgsettings referenced here