Dedicated Servers

From Valve Developer Community
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
English (en)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)
Icon-delisted.png
This page documents information about a game or software that is no longer available for purchase or download digitally.
It is covered here for historical and technical reference.

This page outlines the basics of setting up and running Counter-Strike: Global Offensive Counter-Strike: Global Offensive Dedicated Server.

Counter-Strike: Global Offensive

Limitations

Stub

This article or section is a stub. You can help by expanding it.

Useful console commands for troubleshooting

For a server to run best, it has to do as little as possible. Factors such as entitycount and the messages between these are important to consider. Too many of these factors will debilitate your server or even crash it.

ent_messages_draw 1
Will show Inputs and Outputs in realtime in the world.
physics_report_active
Lists all active physics objects.
report_cliententitysim
List all clientside simulations and time - will report and turn itself off.
report_clientthinklist
List all clientside entities thinking and time - will report and turn itself off.
report_entities
Lists all entities.
report_simthinklist
Lists all simulating/thinking entities.
report_soundpatch
Reports sound patch count.
report_touchlinks
Lists all touchlinks.

See also Edict and Entity limit.

Downloading the CS:GO Dedicated Server

This describes the process of updating the CS:GO dedicated server application. These steps are required every time the game is updated. To automate this process for future updates, see SteamCMD#Automating SteamCMD.

1. Download and install SteamCMD.

2. Start SteamCMD. At the Steam> prompt, set your CS:GO Dedicated Server install directory.

Icon-Bug.pngBug:On some Linux distributions the path cannot contain any capital letters  [todo tested in?]

Examples:

  • Windows:
force_install_dir c:\csgo-ds\
force_install_dir .\csgo-ds\
  • Linux:
force_install_dir /full/path/to/csgo-ds/

3. Login in anonymously

login anonymous

4. Install or Update CS:GO. If this is your first time installing or if you are trying to verify the integrity of the server files:

app_update 740 validate

If this is simply an update to an existing CS:GO dedicated server:

app_update 740

4. Once finished, type quit at the Steam> prompt to properly log off of the Steam servers.

Registering Game Server Login Token

CS:GO game servers and GOTV relays not logged in to a persistent game server account with a Game Server Login Token (GSLT) will only allow clients to connect from the same LAN RFC1918 addresses (10.0.0.0-10.255.255.255,172.16.0.0-172.31.255.255,192.168.0.0-192.168.255.255). If your server has a public routable IP address and clients need to connect from outside the server LAN then you need to get registered for GSLT.

To create your GSLTs, visit the GSLT creation utility and follow the instructions here: http://steamcommunity.com/dev/managegameservers

Each GSLT is restricted for use on one dedicated server instance only, and should be passed on command line with +sv_setsteamaccount THISGSLTHERE. You can also use command line setting -net_port_try 1 to avoid instances from reusing the same GSLT by accident.

Every game server operating with your GSLT must comply with game server operation guidelines outlined here: http://blog.counter-strike.net/index.php/server_guidelines/

Note.pngNote:You need own phone number to activate Steam Guard Mobile Authenticator and you will need to spend at least $5.00 USD within the Steam store.
Note.pngNote:Question: Do you need (buy) Prime Status to your CS:GO game ??

Starting the Server

Note.pngNote:For information about ports to be forwarded see the general SRCDS page.
Note.pngNote:For Linux use ./srcds_run instead of srcds.
Note.pngNote:For public server also add +sv_setsteamaccount THISGSLTHERE -net_port_try 1 to use your GSLT. THISGSLTHERE refers to https://steamcommunity.com/dev/managegameservers ,where you should create a game login token with your steam account

Classic Casual:

srcds -game csgo -console -usercon +game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2

Classic Competitive:

srcds -game csgo -console -usercon +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 

Arms Race:

srcds -game csgo -console -usercon +game_type 1 +game_mode 0 +mapgroup mg_armsrace +map ar_shoots

Demolition:

srcds -game csgo -console -usercon +game_type 1 +game_mode 1 +mapgroup mg_demolition +map de_lake

Deathmatch:

srcds -game csgo -console -usercon +game_type 1 +game_mode 2 +mapgroup mg_allclassic +map de_dust
Note.pngNote:Read the gamemodes.txt file for all of the game_types and modes.

csgosl - a CSGO GUI frontend for Windows/Linux

github wiki (with pics) download

csgosl is a graphical user interface for the Counter Strike Global Offensive Dedicated Server (CSGO server from now on). csgosl supports one-click install, update, start and stop server on windows and linux platforms (supported platforms). If you just want your own CSGO server up and running in no time this is the place for you. csgosl supports most mainstream server options. Advanced mode allows the experienced user access to most cvars and custom cvars allows cvars to be added to the GUI.


csgosl features:

  • Completely automatic install (steamcmd + srcds + metamod/sourcemod/plugins)
  • Server update, automatic or manual
  • Start/monitor/stop server
  • Run multiple servers on same host
  • Host lan only or public servers
  • Host workshop maps and map groups
  • Manage all your maps and create your own map groups using the map group editor
  • Easily view and select all installed maps using map previews
  • Greatly simplified server settings with reasonable defaults
  • Advanced settings mode for the control freak (supports all cvars with in app help texts)
  • RCON control via dedicated console or shortcut buttons
  • Override settings in one place for all game modes/types
  • Online help easily accessible from the application
  • Custom cvar support
  • GOTV support
  • Comes preinstalled with sourcemod and metamod and some plugins.

Linux Scripts

Docker

If your server is running Docker, you can simply use:

docker run -d --net=host --name=csgo-dedicated -e SRCDS_TOKEN={YOURTOKEN} cm2network/csgo

SRCDS_TOKEN is required to be listed; https://steamcommunity.com/dev/managegameservers

The container will automatically update the game on startup, so if there is a game update just restart the container.

The config is located here: /home/steam/csgo-dedicated/csgo/cfg

If you want to launch another instance you can increment the environment variables, using -e (--env):

docker run -d --net=host -e SRCDS_PORT=27016 -e SRCDS_TV_PORT=27021 -e SRCDS_TOKEN={YOURTOKEN} --name=csgo-dedicated2 cm2network/csgo

SRCDS_TOKEN is required to be listed; https://steamcommunity.com/dev/managegameservers

You can find the associated Docker Hub page here: https://hub.docker.com/r/cm2network/csgo/

CSGO Server Launcher

CSGO Server Launcher

CSGO Server Launcher is a simple bash script to create and launch your Counter-Strike : Global Offensive Dedicated Server.
A Docker image 🐳 is also available.
Tested on Debian based distros (Ubuntu, Mint, ...)

💥 Features

  • start - Start the server with the PARAM_START var in a screen.
  • stop - Stop the server and close the screen loaded.
  • status - Display the status of the server (screen down or up)
  • restart - Restart the server (stop && start)
  • console - Display the server console where you can enter commands.
  • update - Update the server based on the PARAM_UPDATE then save the log file in LOG_DIR and send an e-mail to LOG_EMAIL if the var is filled.
  • create - Create a server (script must be configured first).

📚 Documentation

💡 More info : https://github.com/crazy-max/csgo-server-launcher

CS:GO Multiserver

A launch and update script similar to CSGO Server Launcher with support for multiple servers running on one machine. It was designed to make running LAN tournaments as painless and efficient as possible.

Its Highlights include:

  • Guided setup and game update (csgo-server setup, csgo-server update)
  • Game files are shared between instances, saving disk space and bandwidth
  • Detailed configuration options for each instance
  • Additional control upon launch via environment variables (MAPS="de_inferno de_cache de_train" csgo-server @myinstance start)
  • Console access and support for logfiles

More Info and Download: CS:GO Multiserver on GitHub: https://github.com/dasisdormax/csgo-multiserver

LinuxGSM CSGO Server

Linux Game Server Managers

LinuxGSM is command-line tool for quick, simple deployment and management of Linux dedicated game servers.

Features

  • Backup
  • Console
  • Details
  • Installer (SteamCMD)
  • Monitor
  • Alerts (Email, Pushbullet)
  • Update (SteamCMD)
  • Start/Stop/Restart server

Supported Servers

There are 100+ different game servers supported and rising. For a full list visit the website.

Links

Website: https://linuxgsm.com/lgsm/csgoserver/

GitHub Repo: https://github.com/GameServerManagers/LinuxGSM

Windows Software/Scripts

GameAP

GameAP is open-source game servers management panel. Easy to install and use. The panel offers comprehensive support for servers running the Counter-Strike: Global Offensive/Counter-Strike 2 game, encompassing management of players.

Features

  • Start/Stop/Restart server
  • Install, Update game server (SteamCMD and repositories)
  • Console, Player management (kick, ban, messages)
  • File management
  • Tasks scheduler

OS Support

  • Windows 10/Server 2016 or Newer (x86, AMD64, ARM)
  • Debian 10/Ubuntu 18/CentOS 8/Rocky 8 or Newer
  • Most other modern Debian/RHEL/Arch Linux distributions

Links

Main Site: https://gameap.com

Documentation: https://docs.gameap.com/en/tutorials/cs2.html

GitHub: https://github.com/gameap

SteamCMD GUI

This tool allows the user to use SteamCMD on Windows without command lines and/or batch files.

GitHub Repo: https://github.com/DioJoestar/SteamCMD-GUI.git

pyr0s-csgo-server-launcher

A simple script to launch 3 different servers in any of the 4 game modes available. My First ever attempt at any sort of scripting.

URL : http://code.google.com/p/pyr0s-csgo-server-launcher/

Advanced Configuration

Configuring your new Counter-Strike: Global Offensive server differs from what server administrators have seen with previous dedicated servers. There are some primary differences, which we'll cover here.

autoexec.cfg

The file has to be created in \csgo\cfg.

This file is executed before the first map starts. The valve.rc executes the autoexec.cfg and in the next line the cmd stuffcmds, which will execute the parameters with + from the commandline.

In your autoexec.cfg you can set cvars that have to be set only one time:

log on //This is set to turn on logging! Don't put this in your server.cfg
hostname "Counter-Strike: Global Offensive Dedicated Server"
rcon_password "yourrconpassword"
sv_password "" //Only set this if you intend to have a private server!
sv_cheats 0 //This should always be set, so you know it's not on
sv_lan 0 //This should always be set, so you know it's not on
exec banned_user.cfg
exec banned_ip.cfg

server.cfg

The server.cfg file can be found under \csgo\cfg. (make it if it doesn't exist)

This file is executed every map change, and before the gamemode files listed below. Here is an example of a very simple server.cfg file:

mp_autoteambalance 1
mp_limitteams 1
writeid
writeip

gamemodes.txt

This file can be found under the \csgo\ folder.

Essentially, this file defines Valve's standard "rules" for each game mode. For example, a classic casual game gives defuse kits to CTs automatically, while in a classic competitive game they are purchasable like in previous versions of CS. You should not edit this file because Valve may decide to change the rules for a particular game mode at any time. If you customize this file, your changes will be wiped out any time Valve chooses to push an update to this file.

Even though you shouldn't edit this file, it's still useful to use this file to determine how exactly to make a particular convar change. Find the section you want to edit, and you'll see the group of appropriate convars you can set. Again, you will need to make your actual changes in gamemodes_server.txt.

Each section of the file is separated by the game type. The game types are Casual, Competitive, Arms Race (gungameprogressive), Demolition (gungametrbomb), and Deathmatch.

gamemodes_server.txt

This file must be created or otherwise generated from gamemodes_server.txt.example under the \csgo\ folder. This file allows the server administrator to customize each game mode for their own server. It overrides and defaults set by Valve in gamemodes.txt. With this file, for example, you can change the maxrounds for a game type from the default, or enable friendly fire but reduce the amount of damage friendlies deal.

IT IS IMPORTANT TO MAINTAIN THE SAME HIERARCHY AND SYNTAX AS GAMEMODES.TXT!!! Included with your server installation is a gamemodes_server.txt.example file to help you learn the syntax. There is no file specifically named gamemodes_server.txt in the standard server install. You must rename, copy, or make a new file called gamemodes_server.txt to be able to customize your game modes.

Note.pngNote: The -gamemodes_serverfile command line parameter allows specifying a file other than the default gamemodes_server.txt.

Bots

You can change the amount of bots, the way the bots populate the server and how chatty they are by updating the convars below:

"bot_quota_mode"     "fill"
"bot_defer_to_human_items"   "1"
"bot_defer_to_human_goals"   "0"
"bot_difficulty"     "1"
"bot_dont_shoot"     "0"
"bot_chatter"        "normal"
"bot_autodifficulty_threshold_low" "-2.0"  // Value between -20.0 and 20.0 (Amount below avg human contribution score, below which a bot should raise its difficulty)
"bot_autodifficulty_threshold_high"  "0.0" // Value between -20.0 and 20.0 (Amount above avg human contribution score, above which a bot should lower its difficulty)

Round Convars

The following convars can be changed to update how the rounds are played out. You can change from round limits to time limits, to how long you force players to freeze in place to buy to forcing the camera to only specatating your team members while dead. Each convar is set specifically for each game type, so you'll have to go through each of the different game modes to get them all updated! These may be overridden by settings in cfg/gamemode_XXX.cfg and cfg/gamemode_XXX_server.cfg, the details of which are specified below.

"mp_afterroundmoney"   "0"
"mp_playercashawards"    "1"
"mp_teamcashawards"    "1"
"mp_maxrounds"     "30"
"mp_timelimit"     "0"
"mp_roundtime"     "2"
"mp_freezetime"      "15"
"mp_buytime"     "45"
"mp_forcecamera"   "1" // Set to 1 for team only spectating.
"mp_defuser_allocation"    "0"
"mp_death_drop_gun"    "1" // 0=none, 1=best, 2=current or best
"mp_death_drop_grenade"    "2" // 0=none, 1=best, 2=current or best
"mp_death_drop_defuser"    "1"

Gun Game and Demolition Progression

You'll find convars available to update how the server progresses individuals through the weapons in both Gun Game modes. You can set the weapon order and the kill requirements in order to move on to the next weapon. These convars are separated by team, so be careful to make changes for both sides or you could potentially unbalance the matches on your server.

As an example, here is a list of the convars of weapon progression on Arms Race for a single team:

"mp9"    { "kills" "1" }
"mac10"    { "kills" "1" }
"mp7"    { "kills" "1" }
"bizon"    { "kills" "1" }
"ump45"    { "kills" "1" }
"p90"    { "kills" "1" }
"nova"   { "kills" "1" }
"mag7"   { "kills" "1" }
"xm1014" { "kills" "1" }
"sawedoff" { "kills" "1" }
"galilar"  { "kills" "1" }
"famas"    { "kills" "1" }
"ak47"   { "kills" "1" }
"m4a1"   { "kills" "1" }
"sg556"    { "kills" "1" }
"aug"    { "kills" "1" }
"awp"    { "kills" "1" }
"m249"   { "kills" "1" }
"negev"    { "kills" "1" }
"glock"    { "kills" "1" }
"hkp2000"  { "kills" "1" }
"tec9"   { "kills" "1" }
"p250"   { "kills" "1" }
"deagle" { "kills" "1" }
"fiveseven"  { "kills" "1" }
"elite"    { "kills" "1" }
"knifegg"  { "kills" "1" }

Here is an example of the weapon progression on Demolition for a single team:

"m4a1"   { "kills" "1" }
"p90"    { "kills" "1" }
"ump45"    { "kills" "1" }
"deagle" { "kills" "1" }
"nova"   { "kills" "1" }
"fiveseven"  { "kills" "1" }
"hkp2000"  { "kills" "1" }
"ssg08"    { "kills" "1" }
"awp"    { "kills" "1" }
"Scar20" { "kills" "1" }

Note that Arms Race uses random weapons by default. To force the custom list to be used, set mp_ggprogressive_use_random_weapons to 0.

gamemode_casual_server.cfg

Files gamemode_casual_server.cfg and gamemode_casual.cfg reside in the cfg directory. The latter (gamemode_casual.cfg) is configured by Valve, and contains the convars that are set at the beginning of each Classic Casual match (they are set each time the server loads a map). A similar file exists for each game mode (replace casual with the appropriate mode ie. competitive, or armsrace). The format of this file is simple, it is "convar setting //optional comment". For example, from gamemode_casual.cfg:

bot_autodifficulty_threshold_high     0.0     // Value between -20.0 and 20.0 (Amo...
cash_player_bomb_defused     200

Admins should not modify the gamemode_XXX.cfg files. Valve's file naming convention suggests that these files may be modified in the future, and your settings may be overwritten. Instead, modify the file ending in _server.cfg you create.

Each gamemode_XXX.cfg file may have a corresponding gamemode_XXX_server.cfg file within the cfg directory. Valve's file naming convention suggests that _server.cfg files will not be overwritten by future updates. Any settings specified in the _server.cfg file will override those in the original config file because the _server.cfg file is executed after it. This ordering is visible within gamemodes.txt .

Settings in gamemode_XXX.cfg and gamemode_XXX_server.cfg seem to override those within gamemodes_server.txt, and server.cfg. Furthermore, it's easier to modify the settings in gamemode_XXX_server.cfg due to the formatting.

When modifying settings, the amount of spaces or tabs between convar and setting seems to be irrelevant, but there must be some. Comments are single-line C++ style, and must come only after a //.

Once you've launched your dedicated server, you can type in the following command to output all available convars that can be altered:

//The output file will be located in the csgo folder of your dedicated server
cvarlist log cvarlist.txt

Maps

The game no longer uses maplist.txt files and the maps you play are now controlled by map groups. A server must be started with a mapgroup or workshop_collection or maps will not cycle correctly and you will not have a vote. See the included gamemodes_server.txt.example file for an example mapgroup. Also see the section below about setting up a workshop collection.

GOTV Broadcasting

Counter-Strike: Global Offensive servers support UDP message-based GOTV broadcasting directly to connected clients, or via a tree of dedicated servers configured as GOTV relays. A more modern broadcasting solution allowing to transmit and playback streamed game data over HTTP, primarily via CDN, is new to CS:GO. For more details, please visit CS:GO Broadcast page.

Network Channel Encryption

Counter-Strike: Global Offensive network channels support client-server packet encryption. 3rd party client software can set encryption keys in CS:GO client process for connecting to specific 3rd party servers. For more details, please visit CS:GO Network Channel Encryption page.

Steam Workshop

How to host Workshop Maps with a CS:GO Dedicated Server

EXAMPLE COMMAND LINE:

This will start the server with an "se + mirage collection" and set the start map to de_dust2_se.

srcds -game csgo -console -ip YOUR.PUBLIC.IP.ADDR.HERE +game_type 0 +game_mode 1 +host_workshop_collection 125499818 +workshop_start_map 125488374 -authkey YOURAUTHKEYHERE


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).

.
└── csgo
    ├── subscribed_collection_ids.txt
    └── subscribed_file_ids.txt

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.pngNote: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 ID for a Workshop map in it's workshop page URL.
Screenshot of highlighted Steam Workshop ID on browser 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:

sv_broadcast_ugc_downloads <0|1>
sv_broadcast_ugc_download_progress_interval <seconds>

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 (Simplified Edition) Maps

_SE maps (or Simplified Edition) are no longer distributed with CS:GO. Official CS:GO and _SE maps can be added from CS:GO Official's Workshop Items.
Maps, such as compatibility versions or the one in the game files that are last updated recently are the newest version[1]. Older compatibility Versions and one that was marked with "official content that comes included with Counter-Strike: Global Offensive." usually should be avoided unless you know what your doing, such as watching older demos. ("Official content" maps Vertigo, Militia, Dust, and Aztec were broken when those maps were removed from the game, choose a compatibility version?)

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


http://steamcommunity.com/sharedfiles/filedetails/?id=125499590

references

  • Dust II_se
  • Inferno_se
  • Nuke_se
  • Train_se
  • Mirage

to use this collection, add

+host_workshop_collection 125499590

to your command line.

Errors and debug messages

To enable verbose spew, set

sv_debug_ugc_downloads 1
developer 1

With these set, your server will spew the results it gets from steam. When working, you'll see output like this:

Fetched 1076 bytes via HTTP:
 response {
   result int( 1 = 0x1 )
   resultcount int( 1 = 0x1 )
   publishedfiledetails {
     0 {
       publishedfileid int( 123868347 = 0x76214BB )
       result int( 1 = 0x1 )
       creator 76561197975050072
       creator_app_id int( 745 = 0x2E9 )
       consumer_app_id int( 730 = 0x2DA )
       filename mymaps/de_aztec_proper.bsp
       file_size int( 26420720 = 0x19325F0 )
       file_url http://cloud-2.steampowered.com/ugc/XXX/XXXXXXX/
       hcontent_file 884098750744150125
       preview_url http://cloud-2.steampowered.com/ugc/XXX/XXXXXX/
       hcontent_preview 884098750744170633
       title De_Aztec_Proper
       description Aztec with adjusted visibility. A rebalanced underpass area,two new routes and many other changes   remove the map's CT bias.
       time_created int( 1359545920 = 0x51090640 )
       time_updated int( 1359545920 = 0x51090640 )
       visibility int( 0 = 0x0 )
       banned int( 0 = 0x0 )
       ban_reason
       subscriptions int( 3 = 0x3 )
       favorited int( 1 = 0x1 )
       lifetime_subscriptions int( 3 = 0x3 )
       lifetime_favorited int( 1 = 0x1 )
       views int( 13 = 0xD )
       tags {
         0 {
           tag Classic
         }
       }
     }
   }
 }

When an error occurs, you may see something like the below:

host_workshop_map 122439431
Fetched 140 bytes via HTTP:
  response {
    result int( 1 = 0x1 )
    resultcount int( 0 = 0x0 )
    publishedfiledetails {
      0 {
        publishedfileid int( 122439431 = 0x74C4707 )
        result int( 9 = 0x9 )
      }
    }
  }
Failed to parse file details KV for id 122439431. Result enum: 9
File id 122439431 not found. Probably removed from workshop

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.

Another common error may show spew like this:

Fetched 1042 bytes via HTTP:
CDedicatedServerWorkshopManager: received file details for id 125499818: 'Collection Title'.
Skipping download for file id 125499818:'Collection Title' - version on disk is latest.
Setting mapgroup to '125613177'
CModelLoader::Map_IsValid:  No such map 'maps/workshop/125499818/1360205838_collection_branding.bsp'
changelevel failed: workshop/125499818/1360205838_collection_branding not found

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.

Once you do that, you'll get a URL that looks like this: http://steamcommunity.com/sharedfiles/filedetails/?id=125645871

The string of numbers at the end is your host workshop collection id.

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:

-authkey ########### +host_workshop_collection 125652555 +workshop_start_map 125488374

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.

Source: http://www.reddit.com/r/GlobalOffensive/comments/186z0g/map_workshop_and_servers/c8cantc

Troubleshooting

SteamUpdater: Error Problem

Sometimes you may encounter such problem on some machines which have incorrect config of Internet Explorer.

Please tick Automatically detect settings in LAN tab of Internet Explorer Options on your operating system.

SteamCMD always quit at startup

Please refer to the above one SteamUpdater: Error Problem.This is often caused by incorrect IE settings.

I was able to download or update the server package with SteamCMD, but the server fails to start

Common causes:

  • On some Linux distributions the path cannot contain any capital letters.

Clients cannot connect to the server. They receive the error "Failed to get session data."

This is probably caused by specifying an invalid map group in the startup command line. E.g., the August 10, 2012 update removed the "mg_allclassics" mapgroup. Changing it to a valid map group, e.g. mg_active, may fix the problem.

How do I determine whether a change I want to make should be done in autoexec.cfg, server.cfg, or gamemodes_server.txt?

This is where the gamemodes.txt (not gamemodes_server.txt) comes into play. Look for the value you want to change, and if it exists in this file, then make the override in gamemodes_server.txt (pay attention to hierarchy and syntax!!!). Otherwise, most other changes should be done in server.cfg.

Maxplayers doesn't work/is overridden

  • Starting with the August 14 update, Valve heard the cries of its people and added a -maxplayers_override command line argument that overrides any other definitions of maxplayers. And there was much rejoicing.

Progression of maxplayers configuration through the beta:

  • In the beginning (pre-CS:GO), Valve created the +maxplayers command line argument. This generally allowed game server providers to set a value that couldn't be overridden by server operators through config files (and thus gaining access to more player slots than they paid for). Valve and GSPs saw that it was good.
  • [Is this correct?] Then, Valve created CS:GO and removed +maxplayers from the command line. Thus Valve saith: "No longer shall you set maxplayers through the command line. In its stead, I have created the maxplayers convar in gamemodes.txt. You shall define maxplayers in gamemodes_server.txt as so:"
 "GameModes_Server.txt"
 {
   "gameTypes"
   {
     "classic"
     {
       "gameModes"
       {
         "competitive"
         {
           "convars"
           {
              maxplayers      "24"
           }
         }
       }
     }
   }
 }

As this now allowed server operators to easily set maxplayers from a generic and easily-editable text file, GSPs grew concerned. There was wailing and gnashing of teeth.

  • Beginning with the [August 10?] update, Valve again moved the location of maxplayers again. While it was still in gamemodes/gamemodes_server.txt, it was moved one level up and out of the convars section, i.e.:
 "GameModes_Server.txt"
 {
   "gameTypes"
   {
     "classic"
     {
       "gameModes"
       {
         "competitive"
         {
           maxplayers      "24"
         }
       }
     }
   }
 }


If the player count reaches around 25, no new players can connect to the server.

Seems to be a bug. Is it a map problem?

The info on the client in-game connecting screen is incorrect

Seems there might be a way to customize the info displayed here (UI sections in gamemodes.txt/gamemodes_server.txt). Does anyone know how?

My server has a password set and should be private, but once one player joins, the server fills up from lobby connections.

Bug. As a workaround, de-list your server from matchmaking with the convar sv_steamgroup_exclusive 1.

How do I force the server to reload gamemodes_server.txt after the server has started?

This may currently not be possible without restarting the server.

How can I run multiple/different server instances from a single install?

The -gamemodes_serverfile command line parameter allows specifying a file other than the default gamemodes_server.txt.

Problems with SourceMod/Metamod

See this thread.

sv_consistency reports models as not allowed

-Simply set sv_consistency to 0 for now.

round_end lag

Most noticeable when the round_end is triggered by all players dead
Apparently setting srcds to run on just 1 core fixes this problem, however this is unconfirmed since I have the same problem on a single core.
I quote: I just tested this over and over again , and came to the result that affinity affects csgo server ( I have also windows 2008 R2 , my virtual machine). With affinity enabled to one of the 4 cores , I didn't notice any round end lag , compared to when It was before , with all cores enabled.

mp_autoteambalance 0

If you start a server with mp_autoteambalance 0, bots will not join and you will get an error that says the game is full when you try to add them. Also only 1 person can join per team. If a 3rd player trys to join a team they get a team is full message for both teams when trying to join. Just started after the May 21st update.

Enabling Killcams

If you want to enable killcams, GOTV must be enabled (run server with -hltv +tv_enable 1). Then make sure spec_replay_enable is set to 1. Killcams won't work with bots, nor on competitive.

Disabling MOTD

To disable MOTD, simply delete motd.txt in csgo folder.

Updating/Downloading CS:GO Dedicated server

When running "app_update 740" or "app_update 740 validate" you get the following error.
App state (0x10102) reconfiguring, progress: -nan (0 / 0)
Error! App '740' state is 0x1 after update job.
Use the force_install_dir command then retry.
In case you receive the following error after a successful account login when running "app_update 740" on linux:
ERROR! Failed to request AppInfo update, not online or not logged in to Steam.
Remove/rename the "Steam" directory from the current user accounts home folder and re-run steamcmd.

players switching teams adds bots

In Arms Race, no matter if bot_quota is 0 or what bot_quota_mode is set to, when anyone changes teams it will add 1 to bot_quota and add a bot. On some servers, if someone switches teams back and forth quickly it will crash the server. This can happen in classic mode during warm up too.
Sylwester over at alliedmods.net has created a SourceMod plugin to resolve this issue. I have tested and verified that it does work.
- CSGO fast respawn system is using bot add commands, Valve need fix this. Here is SourceMod plugin for stop it. [alliedMods.net - CS:GO bug fix - bot add jointeam], alternative source [GitHub] --Bacardi 20:32, 5 April 2020 (UTC)

Weapon Progression

Changing the weapon progression in the gamemodes_server.txt file will not change the weapon progression. You have to also remove this section from the gamemodes.txt file for the changes in gamemodes_server.txt to take affect.

wrong user count or population displayed in server browsers

disable bots or host_info_show 2 should fix?

weapon_revolver does not work with mp default_secondary cvars

some people behind smoke are visible on radar when using -nobots launch parameter

Disconnect: #GameUI_Disconnect_DeltaEntMessage when connecting to servers with more than around 1500 edicts

Since an update on April 29 2015, when a player tries to join a server with more than around 1500 edicts present, they will be disconnected from the server with this message. Keeping the amount of edicts (entities like props, weapons, etc) below 1500 will prevent this bug from occuring.
This bug was reported on Valve's csgo-osx-linux github repository some time ago.

bracket mismatch in the included gamemodes_server.txt.example file

Delete file gamemodes_server.txt.example and update server (or game again), you get new, fixed file. --Bacardi 08:46, 6 April 2020 (UTC)

Blank map in server browser with GOTV and hibernation

A server using GOTV and hibernation will not show the current map in the server browser. Not using hibernation is the only known work around.

References

  1. kr0tchet (talk) - After downloading both official content (7 Feb, 2013) and the later compability version of Dust II (1.23.1.2, 4 Jul, 2013) on Steam Workshop, and extracting the compressed BSP file, the former (official) one was the oldest one available on Workshop. Latest version will be always come from game files itself (as long it's was verified manually or updated automatically).[user-generated source]