# How to Configure Your CS:GO Dedicated Server (/docs/counter-strike-go/server-config)



import { Step, Steps } from 'fumadocs-ui/components/steps';
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
import { File, Folder, Files } from 'fumadocs-ui/components/files';

> 📝 **Note:** CS:GO was replaced by CS2 in September 2023. The SteamCMD App ID 740 still works for server files, but game clients now connect to CS2. See [CS2 Server Guides](/docs/counter-strike-2) for the current game.

Server File Structure [#server-file-structure]

<Files>
  <Folder name="csgo" defaultOpen>
    <Folder name="cfg" defaultOpen>
      <File name="server.cfg" />

      <File name="autoexec.cfg" />

      <File name="gamemode_casual_server.cfg" />

      <File name="gamemode_competitive_server.cfg" />

      <File name="gamemode_deathmatch_server.cfg" />
    </Folder>

    <File name="gamemodes_server.txt" />

    <File name="mapcycle.txt" />

    <Folder name="addons">
      <Folder name="metamod" />

      <Folder name="sourcemod" />
    </Folder>
  </Folder>
</Files>

Editing server.cfg [#editing-servercfg]

<Steps>
  <Step>
    Open the File Manager [#open-the-file-manager]

    Log in to the [XGamingServer Panel](https://panel.xgamingserver.com) and select your CS:GO server. In the sidebar, click **Files**.

    {/* Screenshot needed: Panel sidebar with Files highlighted */}
  </Step>

  <Step>
    Navigate to the config directory [#navigate-to-the-config-directory]

    Click through `csgo` → `cfg` → open `server.cfg`. The panel opens the built-in Monaco code editor.

    {/* Screenshot needed: File manager showing csgo/cfg/ directory */}
  </Step>

  <Step>
    Edit and save [#edit-and-save]

    Make your changes, then click **Save** in the editor. Restart your server from the **Console** page for changes to take effect.
  </Step>
</Steps>

***

server.cfg — Complete Reference [#servercfg--complete-reference]

Server Identity [#server-identity]

```
hostname "My CS:GO Server"
sv_password ""                    // Join password (empty = public)
rcon_password "YourRconPassword"  // RCON password (required for remote admin)
sv_lan 0                          // 0 = internet, 1 = LAN only
sv_region 255                     // 255 = worldwide
```

Network Performance [#network-performance]

```
sv_minrate 128000
sv_maxrate 0                      // 0 = unlimited bandwidth
sv_mincmdrate 64
sv_maxcmdrate 128
sv_minupdaterate 64
sv_maxupdaterate 128
```

> 💡 **Tip:** Use `-tickrate 128` in the startup command for competitive 128-tick servers. The default is 64-tick.

Gameplay (Competitive) [#gameplay-competitive]

```
mp_maxrounds 30                   // MR15 = 30 rounds total
mp_roundtime_defuse 1.92          // Round time (minutes)
mp_freezetime 15                  // Freeze time at round start
mp_buytime 20                     // Buy time (seconds)
mp_startmoney 800                 // Starting money
mp_maxmoney 16000
mp_halftime 1                     // Enable halftime
mp_friendlyfire 1
sv_alltalk 0                      // Team-only voice
```

Gameplay (Casual — different defaults) [#gameplay-casual--different-defaults]

```
mp_maxrounds 15
mp_roundtime_defuse 2.25
mp_freezetime 7
mp_buytime 45
mp_startmoney 1000
mp_friendlyfire 0
sv_alltalk 1                      // All-talk enabled
mp_free_armor 1                   // Free Kevlar+Helmet
```

Anti-Cheat & File Consistency [#anti-cheat--file-consistency]

```
sv_pure 1                         // 0=allow custom files, 1=whitelist, 2=strict
sv_pure_kick_clients 1
sv_cheats 0
```

Bots [#bots]

```
bot_quota 0                       // Number of bots (0 = none)
bot_quota_mode "fill"             // fill, match, normal
bot_difficulty 2                  // 0=easy, 1=normal, 2=hard, 3=expert
bot_auto_vacate 1                 // Bots leave for real players
```

Logging [#logging]

```
log on
sv_logbans 1
sv_logfile 1
```

SourceTV (GOTV) [#sourcetv-gotv]

```
tv_enable 1                       // Enable GOTV
tv_port 27020
tv_delay 90                       // Delay in seconds
tv_maxclients 128
tv_autorecord 1                   // Auto-record demos
```

***

Game Modes [#game-modes]

Set via startup parameters in the **Startup** tab:

| Mode        | game\_type | game\_mode | Default Players |
| ----------- | :--------: | :--------: | :-------------: |
| Casual      |      0     |      0     |    20 (10v10)   |
| Competitive |      0     |      1     |     10 (5v5)    |
| Wingman     |      0     |      2     |     4 (2v2)     |
| Arms Race   |      1     |      0     |      10–20      |
| Demolition  |      1     |      1     |        10       |
| Deathmatch  |      1     |      2     |        20       |
| Custom      |      3     |      0     |      varies     |

{/* Screenshot needed: Startup tab showing game_type and game_mode fields */}

***

GSLT (Game Server Login Token) [#gslt-game-server-login-token]

A GSLT is **required** for your server to appear in the public browser.

<Steps>
  <Step>
    Generate a token [#generate-a-token]

    Go to [Steam Game Server Management](https://steamcommunity.com/dev/managegameservers). Log in and enter App ID **730**. Click Create.

    {/* Screenshot needed: Steam GSLT creation page with App ID 730 */}
  </Step>

  <Step>
    Add to your server [#add-to-your-server]

    In the [XGamingServer Panel](https://panel.xgamingserver.com), click **Startup** in the sidebar. Find the **GSLT** or **Steam Account Token** field and paste your token.

    {/* Screenshot needed: Startup tab with GSLT field highlighted */}
  </Step>

  <Step>
    Restart [#restart]

    Go to **Console** and restart your server. It should now appear in the public browser.
  </Step>
</Steps>

> ⚠️ **One token per server.** Each server instance needs its own unique GSLT. Reusing tokens across multiple servers causes disconnections.

***

Workshop Maps [#workshop-maps]

<Steps>
  <Step>
    Get a Steam Web API key [#get-a-steam-web-api-key]

    Go to [steamcommunity.com/dev/apikey](https://steamcommunity.com/dev/apikey) and register to get your API key.
  </Step>

  <Step>
    Find your Workshop collection ID [#find-your-workshop-collection-id]

    Go to the Steam Workshop, create or find a map collection. The ID is in the URL: `steamcommunity.com/sharedfiles/filedetails/?id=123456789`
  </Step>

  <Step>
    Add to startup [#add-to-startup]

    In the **Startup** tab, add these to the startup command or additional parameters field:

    ```
    -authkey YOUR_API_KEY +host_workshop_collection COLLECTION_ID
    ```
  </Step>
</Steps>

***

Installing SourceMod & MetaMod [#installing-sourcemod--metamod]

<Steps>
  <Step>
    Download MetaMod:Source [#download-metamodsource]

    Get the latest stable build for your OS from [sourcemm.net](https://www.sourcemm.net/downloads.php?branch=stable).
  </Step>

  <Step>
    Upload to server [#upload-to-server]

    In the panel **Files**, navigate to your `csgo/` directory. Upload and extract the MetaMod archive — it creates `addons/metamod/` and `addons/metamod.vdf`.
  </Step>

  <Step>
    Download and install SourceMod [#download-and-install-sourcemod]

    Get the latest build from [sourcemod.net](https://www.sourcemod.net/downloads.php?branch=stable). Extract into the same `csgo/` directory — it creates `addons/sourcemod/`.
  </Step>

  <Step>
    Add admins [#add-admins]

    Edit `csgo/addons/sourcemod/configs/admins_simple.ini`:

    ```ini
    "STEAM_0:1:12345678" "99:z"    // Full admin (z = all flags)
    "STEAM_0:0:87654321" "50:bcdeg" // Moderator (ban, kick, slay, map change)
    ```

    **Flag reference:** `z`=root (all), `b`=generic admin, `c`=kick, `d`=ban, `e`=unban, `f`=slay, `g`=map change, `h`=cvar, `m`=RCON access
  </Step>

  <Step>
    Verify [#verify]

    Restart the server. In the **Console**, type `meta list` — you should see SourceMod listed. Type `sm version` to confirm.
  </Step>
</Steps>

***

FastDL (Custom Content Downloads) [#fastdl-custom-content-downloads]

Without FastDL, clients download custom maps directly from your server at \~20 KB/s. FastDL offloads this to a web server.

```
sv_downloadurl "https://yourcdn.com/csgo/"
sv_allowdownload 1
net_maxfilesize 64
```

The web server directory must mirror your `csgo/` folder structure. Files can be bzip2 compressed (`.bz2`) for bandwidth savings — the engine auto-decompresses.

***

Ports [#ports]

| Port      | Protocol | Purpose         |
| --------- | -------- | --------------- |
| **27015** | UDP      | Game traffic    |
| **27015** | TCP      | RCON            |
| **27020** | UDP      | SourceTV (GOTV) |

> 📝 **Note:** On XGamingServer, ports are assigned automatically. Find your assigned ports on the **Dashboard** or **Network** page in the panel.

***

How Players Connect [#how-players-connect]

<Tabs items={['Server Browser', 'Console', 'Steam']}>
  <Tab value="Server Browser">
    Players find your server in the in-game **Community Server Browser**. They can filter by game mode, map, player count, and tags.

    Your server must have a valid GSLT and `sv_lan 0` to appear.
  </Tab>

  <Tab value="Console">
    Press `~` to open the console and type:

    ```
    connect IP:PORT
    connect IP:PORT; password "serverpass"
    ```
  </Tab>

  <Tab value="Steam">
    **View** → **Game Servers** → **Favorites** → **Add a Server** → enter `IP:PORT`.

    Or use `steam://connect/IP:PORT` as a direct link.
  </Tab>
</Tabs>

***

Common Issues [#common-issues]

| Problem                | Fix                                                                                                    |
| ---------------------- | ------------------------------------------------------------------------------------------------------ |
| Not in browser         | Check GSLT is valid. Verify `sv_lan 0`. Port 27015 UDP must be open.                                   |
| "No Steam logon" kick  | GSLT expired — regenerate at steamcommunity.com/dev/managegameservers                                  |
| SourceMod not loading  | Check `addons/metamod.vdf` exists. Verify file permissions. Check `addons/sourcemod/logs/` for errors. |
| Slow map downloads     | Set up FastDL with `sv_downloadurl` pointing to a web server                                           |
| Can't connect via RCON | Ensure `rcon_password` is set in server.cfg                                                            |

Related Guides [#related-guides]

* [How to Join](/docs/counter-strike-go/join-server)
