Counter-Strike: Global Offensive Dedicated Servers
This page outlines the basics of setting up and running Counter-Strike: Global Offensive Dedicated Server.
Contents
[hide]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.
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/
Starting the Server
./srcds_run
instead of srcds
.+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 accountClassic 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
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 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
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
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.
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. See the included gamemodes_server.txt.example file for an example mapgroup.
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.
FAQ and known issues
For known issues and workarounds, please visit CSGO DS known issues.