docker-csgo
Counter-Strike: Global Offensive (CS:GO) Dedicated Server with automatic/manual updates and optional SourceMod and PugSetup/PracticeMode integrations
Table of Contents
- How to Use This Image
- Image Variants
- Environment Variables
- Managing SourceMod Plugins
- Populating with Own Server Files
- Updating the Server
How to Use This Image
$ docker run \
-v=csgo:/home/csgo/server \
--net=host \
timche/csgo
- The server will be installed on a volume named
csgo
to ensure persistence of server files. - The server will be running on the default port
27015
on thehost
network for optimal network performance - The server will be running in LAN mode since a Game Server Login Token (GSLT) is required to run the server on the internet.
Image Variants
Each variant refers to a tag, e.g. timche/csgo:<tag>
.
latest
/ <version>
Vanilla CS:GO server.
sourcemod
/ <version>-sourcemod
Vanilla CS:GO server with untouched Metamod:Source and SourceMod.
pug-practice
/ <version>-pug-practice
Vanilla CS:GO server with untouched Metamod:Source, SourceMod, PugSetup and PracticeMode (by splewis).
Environment Variables
CSGO_GSLT
Default: None
Your Game Server Login Token (GSLT) if you want to run the server on the internet.
Sets +sv_setsteamaccount
in srcds_run
parameters.
CSGO_WS_API_KEY
Default: None
Your Steam Web API Key to download workshop maps.
Sets -authkey
in srcds_run
parameters.
CSGO_IP
Default: 0.0.0.0
Internet IP the server is accessible from. In most cases the default value is sufficient, but if you want to run a GOTV server or have issues connecting to the server, setting the IP can help.
Sets +ip
in srcds_run
parameters.
CSGO_PORT
Default: 27015
Port the server is listening to.
Sets -port
in srcds_run
parameters.
CSGO_MAP
Default: de_dust2
Start the server with a specific map.
Sets +map
in srcds_run
parameters.
CSGO_MAX_PLAYERS
Default: 16
Maximum players allowed to join the server.
Sets -maxplayers_override
in srcds_run
parameters.
CSGO_HOSTNAME
Default: Counter-Strike: Global Offensive
The server name. It can't contain spaces, so if you need a server name with spaces, set hostname
in a config instead, e.g. server.cfg
.
Sets +hostname
in srcds_run
parameters.
CSGO_RCON_PW
Default: changeme
RCON password to administrate the server.
Sets +rcon_password
in srcds_run
parameters.
CSGO_PW
Default: None
Password to join the server.
Sets +sv_password
in srcds_run
parameters.
CSGO_TICKRATE
Default: 128
Server tick rate which can be 64
or 128
. The default value gives the best game experience, but also requires most server hardware resources.
Sets -tickrate
in srcds_run
parameters.
CSGO_GAME_TYPE
Default: 0
(Competitive)
Sets +game_type
in srcds_run
parameters.
CSGO_GAME_MODE
Default: 1
Sets +game_mode
in srcds_run
parameters.
CSGO_MAP_GROUP
Default: mg_active
Map group.
Sets +mapgroup
in srcds_run
parameters.
CSGO_TV_ENABLE
Default: false
Enable GOTV. Can be enabled with true
.
CSGO_TV_NAME
Default: GOTV
Set GOTV name.
CSGO_TV_PASSWORD
Default: None
Set GOTV password.
CSGO_TV_DELAY
Default: 45
Set GOTV broadcast delay in seconds.
CSGO_TV_PORT
Default: 27020
Set GOTV port.
CSGO_TV_DELAYMAPCHANGE
Default: 1
Delay the map change on game server until rest of buffered game has been broadcasted.
CSGO_TV_DELTACACHE
Default: 2
CSGO_TV_DISPATCHMODE
Default: 1
CSGO_TV_MAXCLIENTS
Default: 10
Maximum client number for GOTV.
CSGO_TV_MAXRATE
Default: 0
Maximum bandwidth spend per client in bytes/second.
CSGO_TV_OVERRIDEMASTER
Default: 0
CSGO_TV_SNAPSHOTRATE
Default: 128
World snapshots broadcasted per second by GOTV.
CSGO_TV_TIMEOUT
Default: 60
CSGO_TV_TRANSMITALL
Default: 1
By default entities and events outside of the auto-director view are removed from GOTV broadcasts to save bandwidth. If tv_transmitall
is enabled, the whole game is transmitted and spectators can switch their view to any player they want. This option increases bandwidth requirement per spectator client by factor 2 to 3.
CSGO_FORCE_NETSETTINGS
Default: false
Force client netsettings to highest rate
(786432
), cmdrate
(128
) and updaterate
(128
). This ensures optimal gameplay experience. Requires 128 tick rate.
Sets +sv_minrate
, +sv_mincmdrate
and +sv_minupdaterate
in srcds
parameters.
CSGO_PARAMS
Additional srcds_run
parameters.
CSGO_DISABLE_BOTS
Default: false
Disable bots completely. Can be enabled with true
.
This is not setting bot_quota
to 0
, because it's buggy and still spawns bots when players are for example disconnecting or switching sides. This is also not setting -nobots
parameter, because it's also buggy and causes radar bugs with smokes. This simply removes bot profile files, so the server can't spawn any bots as it can't find an appropriate difficulty profile. It just works™. Bots in PracticeMode still work though.
CSGO_CUSTOM_FILES_DIR
Default: /usr/csgo
Absolute path to a directory in the container containing custom server files. Changing this is not recommended in order to follow the documentation. See more at "Populating with Own Server Files".
SERVER_CONFIGS
Default: false
Add server configs for competitive 5v5, knife round, aim map and FFA deathmatch from csgo-server-configs. Can be enabled with true
.
SERVER_CONFIGS_VERSION
Default: 0.1.0
csgo-server-configs version. Changing this will update/downgrade it on container start. Only works with SERVER_CONFIGS
set to true
.
METAMOD_VERSION
sourcemod
,pug-practice
image only.
Default: 1.10.7
Metamod:Source version running on the server. Changing this will update/downgrade it on container start.
METAMOD_BUILD
sourcemod
,pug-practice
image only.
Default: 971
Metamod:Source build number running on the server. Changing this will update/downgrade it on container start. Build number must exist at version.
SOURCEMOD_VERSION
sourcemod
,pug-practice
image only.
Default: 1.10.0
SourceMod version running on the server. Changing this will update/downgrade it on container start.
SOURCEMOD_BUILD
sourcemod
,pug-practice
image only.
Default: 6488
SourceMod build number running on the server. Changing this will update/downgrade it on container start. Build number must exist at version.
SOURCEMOD_PLUGINS_DISABLED
sourcemod
,pug-practice
image only.
Default: None
List of comma-separated SourceMod plugins (e.g. nextmap,reservedslots,sounds
) that are disabled. *
disables all plugins. The plugins are moved into the disabled
folder on container start. This is running before SOURCEMOD_PLUGINS_ENABLED
.
SOURCEMOD_PLUGINS_ENABLED
sourcemod
,pug-practice
image only.
Default: None
List of comma-separated SourceMod plugins (e.g. mapchooser,randomcycle,rockthevote
) that are enabled. *
enables all plugins. The plugins are moved out of the disabled
folder into plugins
on container start. This is running after SOURCEMOD_PLUGINS_DISABLED
.
SOURCEMOD_ADMINS
sourcemod
,pug-practice
image only.
List of comma-separated Steam IDs that are SourceMod admins (e.g. STEAM_0:0:123,STEAM_0:1:234
) with z
flag.
PUGSETUP_VERSION
pug-practice
image only.
Default: 2.0.5
PugSetup version running on the server. Changing this will update/downgrade it on container start.
PRACTICEMODE_VERSION
pug-practice
image only.
Default: 1.3.3
PracticeMode version running on the server. Changing this will update/downgrade it on container start.
PUG_PRACTICE_MINIMAL_PLUGINS
pug-practice
image only.
Default: false
Disables all SourceMod plugins and enables only minimal required plugins for optimal server performance:
admin-flatfile
botmimic
csutils
practicemode
pugsetup
Can be enabled with true
. Additional plugins can be enabled with SOURCEMOD_PLUGINS_ENABLED
.
PUGSETUP_PERMISSIONS
pug-practice
image only.
Default: None
List of comma-separated PugSetup permissions (e.g. sm_10man=none,sm_setup=admin
) that are set in addons/sourcemod/configs/pugsetup/permissions.cfg
. Changes are applied on container start.
PUGSETUP_SETUPOPTIONS
pug-practice
image only.
Default: None
List of comma-separated PugSetup configurations (e.g. maptype=current,record=0:0
) that are set in addons/sourcemod/configs/pugsetup/setupoptions.cfg
where the first value is the default
value followed by an optional second value which is the display_setting
value and a ;
delimiter in between them. Changes are applied on container start.
PUGSETUP_CVARS
pug-practice
image only.
Default: None
List of comma-separated PugSetup configurations (e.g. sm_pugsetup_autosetup=1,sm_pugsetup_quick_restarts=1
) that are set in cfg/sourcemod/pugsetup.cfg
. Changes are applied on container start, but not on initial container start as pugsetup.cfg
must be auto-generated first by the server.
PUGSETUP_DAMAGEPRINT_CVARS
pug-practice
image only.
Default: None
List of comma-separated PugSetup configurations (e.g. sm_pugsetup_damageprint_auto_color=1,sm_pugsetup_damageprint_format={NAME} [{HEALTH}]: {DMG_TO}/{HITS_TO}
) that are set in cfg/sourcemod/pugsetup_damageprint.cfg
. Changes are applied on container start, but requires pugsetup_damageprinter
plugin to be run first.
DEBUG
Default: false
Print all executed commands for better debugging.
Managing SourceMod Plugins
SourceMod plugins can be managed through the environment variables SOURCEMOD_PLUGINS_DISABLED
and SOURCEMOD_PLUGINS_ENABLED
where either selected (comma-separated list) or all (*
) plugins are disabled/enabled. Plugins are disabled first and then enabled on container start.
Example
# .env
SOURCEMOD_PLUGINS_DISABLED="*"
SOURCEMOD_PLUGINS_ENABLED="admin-flatfile,antiflood,reservedslots"
This will disable all plugins and enable admin-flatfile
, antiflood
and reservedslots
. Using *
is useful to disable/enable all plugins without needing to specify them individually.
The pug-practice
image also offers a PUG_PRACTICE_MINIMAL_PLUGINS
environment variable that disables all SourceMod plugins and enables only minimal required plugins for PugSetup and PracticeMode for optimal server performance.
Populating with Own Server Files
The server can be populated with your own custom server files (e.g. configs and maps) through a mounted directory that has the same folder structure as the server csgo
folder in order to add or overwrite the files at their respective paths. The directory must be mounted at CSGO_CUSTOM_FILES_DIR
(default: /usr/csgo
) and will be synced with the server csgo
folder at each start of the container.
Example
Host
Custom server files in /home/user/custom-files
:
custom-files
├── addons
│ └── sourcemod
│ └── configs
│ └── admins_simple.ini # Will be overwritten
└── cfg
└── server.cfg # Will be added
Container
/home/user/custom-files
mounted to CSGO_CUSTOM_FILES_DIR
(default: /usr/csgo
) in the container:
$ docker run \
-v=csgo:/home/csgo/server \
-v=/home/user/custom-files:/usr/csgo \ # Mount the custom files directory
--net=host \
timche/csgo
Updating the Server
Once the server has been installed, the container will check for a server update at every container start.
Automatically (recommended)
csgo-updater, a companion Docker image, is automatically watching all containers running this image and will restart them when a server update is available. We recommend this to update your servers without hassle.
Example
$ docker run -d \
--name csgo-updater \
-v /var/run/docker.sock:/var/run/docker.sock \
timche/csgo-updater
Manually
Restart the container with docker restart
.
Example
Container named csgo
:
$ docker restart csgo