> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wasabihosting.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Counter-Strike 2 Custom & Workshop Maps - Hosting Guide

> Run Steam Workshop maps on your Counter-Strike 2 server hosting at Wasabi Hosting - host_workshop_map, collections, map changes, and rotations.

The Steam Workshop is where CS2's community maps live — surf and KZ maps, aim trainers, remakes of classic maps, and brand-new competitive layouts. Your dedicated server can download and host these maps directly from the Workshop, keep them updated, and rotate through entire collections. This guide covers the whole workflow.

## Finding Workshop and Collection IDs

Every Workshop item has a numeric ID in its page URL:

```
https://steamcommunity.com/sharedfiles/filedetails/?id=3070284539
                                                       ^^^^^^^^^^
                                                       Workshop ID
```

The same applies to **collections** (curated lists of maps) — open the collection page and copy the `id` from the URL. You'll use these IDs in the commands below.

## Set Up a Steam Web API Key

CS2 dedicated servers may need a **Steam Web API key** to download Workshop content:

<Steps>
  <Step title="Create the key">
    Go to [https://steamcommunity.com/dev/apikey](https://steamcommunity.com/dev/apikey), sign in, and register a key (any domain name works, e.g. `localhost`).
  </Step>

  <Step title="Add it to the startup parameters">
    In the [Wasabi Hosting Game Panel](https://panel.wasabihosting.com), open your server's **Startup** tab and add:

    ```
    -authkey YOURAPIKEYHERE
    ```
  </Step>

  <Step title="Restart the server">
    The server can now fetch maps and collections from the Workshop.
  </Step>
</Steps>

<Warning>
  Treat your API key like a password — don't paste it in Discord or share config screenshots that include it.
</Warning>

## Hosting a Single Workshop Map

Run this in the server console (or via RCON), replacing the ID with your map's Workshop ID:

```
host_workshop_map 3070284539
```

The server downloads the map (first time only) and switches to it. To make the server **boot** into a workshop map, add the same command as a startup parameter:

```
+host_workshop_map 3070284539
```

## Hosting a Workshop Collection

To run a whole collection (for example, a set of surf maps):

```
host_workshop_collection 123456789
```

The server downloads the collection's maps and starts on one of them, with the rest available for rotation and map changes. As a startup parameter: `+host_workshop_collection 123456789`.

## Changing Maps

| Command                             | Use For                                                                 |
| ----------------------------------- | ----------------------------------------------------------------------- |
| `changelevel de_mirage`             | Switch to an official map already on the server                         |
| `ds_workshop_changelevel <mapname>` | Switch to another map from the hosted workshop collection (by map name) |
| `host_workshop_map <workshopID>`    | Jump directly to any workshop map by ID                                 |
| `ds_workshop_listmaps`              | List the workshop maps available in the current collection              |

<Tip>
  Map names in a collection don't always match the Workshop page title. Run `ds_workshop_listmaps` first to see the exact names `ds_workshop_changelevel` expects.
</Tip>

## Map Rotation Basics

For official maps, rotation is controlled by **mapgroups** — named lists of maps set at startup:

```
+mapgroup mg_active +map de_inferno
```

When a match ends, the server moves through the maps in the active group. For workshop content, hosting a **collection** effectively becomes your rotation pool; many communities also add a plugin-based RTV/nominate system (via CounterStrikeSharp — see [Admin Commands](/games/cs2/admin-commands)) so players vote on the next map.

## Keeping Maps Updated

Workshop maps are versioned by their authors. When your server restarts and loads a map via `host_workshop_map` or a collection, it checks the Workshop and downloads the latest version automatically. A simple way to stay current:

* Schedule a daily restart in the Game Panel's **Schedules** tab (quiet hours work best).
* Because clients also fetch maps from the Workshop, players automatically get the matching version when they join.

If a map behaves strangely after an update, the author may have pushed a broken build — pin your rotation to alternatives until it's fixed.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Map download fails or the server hangs on switch">
    Check that your `-authkey` startup parameter is set correctly and restart. Also confirm the Workshop item is public — private or friends-only items can't be downloaded by servers.
  </Accordion>

  <Accordion title="Players time out while the map loads">
    Very large maps take time on first download. Clients download from Steam themselves — ask players to wait out the transfer, and keep your server's restart schedule off peak hours so first-downloads happen early.
  </Accordion>

  <Accordion title="ds_workshop_changelevel says the map is unknown">
    That command only works with maps in the currently hosted collection. Use `ds_workshop_listmaps` to see valid names, or `host_workshop_map` with the ID for maps outside the collection.
  </Accordion>
</AccordionGroup>

<Card title="Host your map pool" icon="rocket" href="https://wasabihosting.com/game-servers/counter-strike-2">
  CS2 server hosting from **€9.99/month** at Wasabi Hosting — NVMe storage makes workshop downloads and map switches fast.
</Card>
