Getting Your Web API Authorization Key

To download maps from the workshop, your server needs access to the steam web api. To allow this you'll need an authorization key which you can generate here.

Once you have your key, run your server with the commandline parameter '-authkey XXXXXXX' where XXXXXXX is your key.
Also you can add the key as a single line into the file webapi_authkey.txt under the mod directory csgo.

Your auth key is tied to your steam account, so keep it private!

Hosting Workshop Maps

There are two possible ways to add workshop hosted maps to your server.

Adding fileids or collectionids to the respective config files.

Using engine commands to host maps on the fly. (preferred way)

Using Subscription Lists

These files are automatically loaded on startup and every time one calls ds_get_newest_subscribed_files
which reloads the webapi_authkey.txt, subscribed_collection_ids.txt and subscribed_file_ids.txt
and retrieves the latest version of these workshop files.

These two files are searched within the csgo directory (the mod directory, where cfg, materials etc. reside) or in the platform directory (not tested).

These files contain one line per file/collection id, see next section on how to retrieve them.

Example for subscribed_file_ids.txt:

155303655
122521875
157224448

Using Engine Commands

Note:Servers do not need to subscribe to Workshop maps. Instead, they load them directly using the concommands host_workshop_map and host_workshop_collection. Subscriptions are only relevant to clients.

The console command for hosting a workshop map is

host_workshop_map <file id>

Note that you can also add this to the srcds command line, in the form

+host_workshop_map <file id>

You can find the file id for a workshop map in its workshop page url.

This command will download the latest version of the map, create a mapgroup with that map as a single entry and host it.

You can also host workshop collections the same way. Use the command

host_workshop_collection <collectionid>

where collectionid is the number found the same way as above but in the collection page's url. This command will then download all maps in the collection and create a mapgroup out of them, then host it.

Map Updates

When changing levels to a workshop map, your server will first check if a newer version is available and download it if needed. Clients will be notified with chat messages of the download and its progress. You can control these messages and their frequency with these convars:

Connecting clients will download the latest version of the hosted workshop map as a part of the connection process.

CS:GO Official Maps and _SE Maps

_SE maps are no longer distributed with CS:GO. Official CS:GO and _SE maps can be added from CS:GO Official's Workshop Items. Notice there are a lot of Compatibility Versions of maps here, and in general should be avoided.

CS:GO Official has made a collection that you can use. In addition you may use any that are community created.

This is a common error (result 9, file not found) which can occur if a file is removed from workshop, or if the permissions are changed to friends-only or private. This error will also occur if there is a problem with your auth key.

This is caused by passing a collection id to 'host_workshop_map' instead of 'host_workshop_collection'. Be sure to only pass the ID for a map to 'host_workshop_map' and pass only collection IDs to 'host_workshop_collection'.

Do not mix 'subscription lists' and the host_workshop commands. If your troubleshooting try removing the subscription list files.

Another way of doing it as explained by a reddit user

First off, go to the CS:GO Workshop in the steam community. (Note: You must be logged in to steam to continue.)

Find maps you like and click on them. (I prefer opening them in a bunch of different tabs.)

Favourite the maps.

After you've favourited all the maps you think you'll want, go to the Collections tab in the CS:GO workshop.

Click on "Create Collection".

Add all the files you want from your list of favourites. Here are my collections so you can see what they look like.

While creating your collection, you will be determining the map order. (mapcycle.txt doesn't work in GO.) You can move maps up or down in the list, but it's reaaaaaally slow so I like to just populate the list in the order I want them in the first place.

Once you add items, on the very last page of the walkthrough for creating your collection there will be a button called "Publish". This will be towards the top of your window (even though all the "Continue" buttons were at the bottom). Don't forget to click this button.

You can also specify a startup map by using the command +workshop_start_map #############, where ########## is the ID number of a map. For example, dust_se is 125498851, which you can find from the URL.

Once you do that, you should start your server with a combination of these types of commands:

Restart your server, and it will go through a process of downloading all the maps from your collection onto the server. You should be able to see it in the console output to make sure it's working correctly.