How to Install Addons on a Garry's Mod Server
Add Workshop content, gamemodes, and maps to your Garry's Mod dedicated server the right way — with a Workshop collection, resource downloads, and mounts.

Once your Garry's Mod server is running, the real fun is content — weapon packs, TTT maps, DarkRP jobs, prop-hunt gamemodes. This guide shows the three ways to install addons on a dedicated GMod server and, crucially, how to make sure players actually download them.
If you haven't set the server up yet, start with how to set up a Garry's Mod server on a VPS and come back here.
The three ways to add content
- Workshop collection (recommended): the server tells clients to download a whole collection from the Steam Workshop automatically.
- Server-side addons folder: unpacked or
.gmaaddons placed ingarrysmod/addons— used for server-only logic (admin mods, gamemodes) and content you host yourself. - FastDL resource downloads: you host loose files (maps, models, sounds) on a web server so clients pull them fast.
Most community servers use a mix: a Workshop collection for player-facing content, plus server-only addons for admin tools.
Method 1: Set up a Workshop collection
Create a collection on the Steam Workshop for Garry's Mod, add the addons you want, and copy the numeric collection ID from its URL. Then you need a Steam Web API key (free) from steamcommunity.com/dev/apikey.
Start the server pointing at the collection:
./srcds_run -console -game garrysmod \
+gamemode sandbox +map gm_construct +maxplayers 24 \
+host_workshop_collection 123456789 \
-authkey YOUR_STEAM_WEB_API_KEY -port 27015
Replace 123456789 with your collection ID. When players join, GMod downloads every addon in the collection. Keep collections lean — a 5 GB collection means a long first-join wait.

Method 2: Server-side addons
Some addons — admin mods like ULX/ULib, custom gamemodes, server logic — belong directly on the server. Drop the folder or .gma file into garrysmod/addons:
cd /home/gmod/server/garrysmod/addons
git clone https://github.com/TeamUlysses/ulx.git
git clone https://github.com/TeamUlysses/ulib.git
Restart the server and the addon loads on boot. To install a gamemode like DarkRP, place it under garrysmod/gamemodes/darkrp and launch with +gamemode darkrp.
Method 3: Force downloads with resource.AddWorkshop
To guarantee players get specific Workshop items (not just the collection), add them to a Lua autorun file. Create garrysmod/lua/autorun/server/workshop.lua:
resource.AddWorkshop("2818345688") -- example addon ID
resource.AddWorkshop("104604296") -- another addon ID
Each resource.AddWorkshop line forces clients to subscribe-download that item on connect. This is the reliable way to make sure everyone has the maps and models your gamemode needs.
FastDL for loose files
Workshop covers most content, but custom maps and sounds you host yourself download painfully slowly over the game socket. FastDL fixes that: put the files on an HTTP server and point clients at it in server.cfg:
sv_downloadurl "https://cdn.example.com/gmod/"
sv_allowdownload 1
sv_allowupload 1
The URL should mirror your garrysmod directory structure (maps, materials, models, sound), with files compressed as .bz2. A small Nginx or Caddy site on the same VPS works well — see set up Nginx with free SSL using Let's Encrypt.
Keeping addons updated
Workshop addons update automatically when their authors push changes; clients re-download on next join. For server-side addons pulled from Git, update them with git pull and restart. If your addon list is large, schedule the restart during off-hours — see automate game server restarts with systemd and cron.
Sizing for heavy content
Every addon adds RAM and disk. A content-heavy DarkRP server can use several gigabytes of RAM and needs fast NVMe storage so map changes don't stall. For a full breakdown of what to provision, read Game Server Specs Explained: CPU, RAM and Bandwidth.
Organising a growing addon list
As your server matures, keep addons manageable:
- Name items clearly in your Workshop collection so you can spot a broken one fast.
- Test new addons on a private server before pushing them live — a single bad addon can throw Lua errors that break your whole gamemode.
- Pin versions where you can. Workshop items auto-update; if one breaks your server, unsubscribe it from the collection until the author fixes it.
Diagnosing a broken addon
When something breaks after adding content, the server console is your friend — Lua errors name the offending file and line. Start with logging and watch as it loads:
./srcds_run -console -game garrysmod +gamemode sandbox +map gm_construct 2>&1 | tee ~/gmod-console.log
Search the log for [ERROR] to find the addon at fault, then remove it and restart. If the whole gamemode fails, it's usually a missing dependency addon — check the gamemode's documentation for what it needs. Snapshot your garrysmod folder before large content additions so rollbacks are painless.
FAQ
Why don't players see my addons?
The most common cause is that the collection or resource.AddWorkshop list is missing an item, or the server started without -authkey. Confirm the collection ID, add a valid Steam Web API key, and check the server console for download errors on join.
What's the difference between a Workshop collection and resource.AddWorkshop?
host_workshop_collection mounts a whole collection on the server; resource.AddWorkshop forces each client to download specific items. Many servers use both for reliability.
Do server-side addons get sent to clients?
Not automatically. Admin mods and gamemode logic run server-side, but any client-facing content (models, maps) must be delivered via Workshop or FastDL.
How do I install ULX admin mod?
Clone ULX and ULib into garrysmod/addons and restart. Set yourself as superadmin in-game with ulx adduser <name> superadmin.
Need more room for a content-rich server? Nxeon's NVMe game server VPS plans give you fast storage and full root access to host FastDL and your server side by side.