Installing SteamCMD for Steam Game Servers
A detialed overview on how to install SteamCMD for Game Servers in any environment.
SteamCMD
The Steam Console Client or SteamCMD is a command-line version of the Steam client. Its primary use is to install and update various dedicated servers available on Steam using a command-line interface. It works with games that use the SteamPipe content system. All games have been migrated from the deprecated HLDSUpdateTool to SteamCMD.
Downloading SteamCMD
Windows
Create a folder for SteamCMD.
For example
Download SteamCMD for Windows: https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
Extract the contents of the zip to the folder.
Linux
Create a user account named steam to run SteamCMD safely, isolating it from the rest of the operating system. Do not run steamcmd while operating as the root user - to do so is a security risk.
As the root user, create the steam user:
Go into its home folder:
Package from repositories
It's recommended to install the SteamCMD package from your distribution repositories, if available:
Ubuntu/Debian
RedHat/CentOS
Arch Linux: install steamcmd from the AUR.
Link the steamcmd executable:
Manually
Before you begin, you must first install the dependencies required to run SteamCMD:
Ubuntu/Debian 64-Bit
RedHat/CentOS
RedHat/CentOS 64-Bit
As the root user, escalate to the steam user:
If you're not logging in as root and you instead use sudo to perform administration, escalate to the steamuser as follows:
Create a directory for SteamCMD and switch to it.
Download and extract SteamCMD for Linux.
OS X
Open Terminal.app and create a directory for SteamCMD.
Download and extract SteamCMD for OS X.
Running SteamCMD
On first run, SteamCMD will automatically update and enter you into a Steam > prompt. Type help for more information.
Windows
Open a Command Prompt and start SteamCMD.
Linux/OS X
Open a terminal and start SteamCMD.
If you installed it using the package from repositories:
If you installed it manually:
SteamCMD Login
Anonymous
To download most game servers, you can login anonymously.
With a Steam account
Some servers require you to login with a Steam Account.
> Note: For security reasons it is recommended that you create a new Steam account just for your dedicated servers.
> Note: A user can only be logged in once at any time (counting both graphical client as well as SteamCMD logins).
Next enter your password.
If Steam Guard is activated on the user account, check your e-mail for a Steam Guard access code and enter it. This is only required the first time you log in (as well as when you delete the files where SteamCMD stores the login information).
You should see a message stating that you have successfully logged in with your account.
Downloading an app
Start SteamCMD and log in.
Set your app install directory. (Note: use forward slashes for Linux/OS X and backslashes for Windows.)
e.g. a directory named cs_go inside the current directory:
For Windows: force_install_dir c:\cs_go\
Install or update the app using the
app_updatecommand
(supplying a Steam Application ID). Please check here for the dedicated server list: Dedicated server list. To also validate the app, addvalidate
to the command. To download a beta branch, use the-beta <betaname>
option – for example, the HLDS beta branch is namedbeta
and the SrcDS beta branch is namedprerelease
. Some beta branches are protected by a password; to be able to download from them, also add the-betapassword <password>
option.HLDS is a special case: the App ID is always 90 and a mod must be chosen first. This is done by setting the app config option mod to the requested value.
Example: Install and validate the Counter Strike: Global Offensive dedicated server:
Example: Install and validate HLDS with Team Fortress Classic:
Bug: HLDS (appid 90) currently requires multiple runs of the
app_update
command before all the required files are successfully installed. Simply runapp_update 90 validate
multiple times until no more updates take place.Example: Install and validate beta version of HLDS (Half-Life):
Example: install and validate beta version of the Counter Strike: Source dedicated server:
Example: install and validate a private beta version of the Natural Selection 2 dedicated server (name alpha, password natsel): [beta name] is the name of the private beta branch [beta code] is the password for the private beta branch
Once finished, type
quit
to properly log off of the Steam servers.
Validate
Validate is a command that will check all the server files to make sure they match the SteamCMD files. This command is useful if you think that files may be missing or corrupted.
> Note: Validation will overwrite any files that have been changed. This may cause issues with customized servers. For example, if you customize mapcycle.txt
, this file will be overwritten to the server default. Any files that are not part of the default installation will not be affected.
It is recommended you use this command only on initial installation and if there are server issues.
Supported Servers
A list of known servers that use SteamCMD to install is available on the Dedicated Servers List page. Note that any extra commands listed need to be executed before the app_update
line.
Automating SteamCMD
There are two ways to automate SteamCMD. (Replace steamcmd
with ./steamcmd.sh
on Linux/OS X.)
Command line
> Note: When using the -beta
option on the command line, it must be quoted in a special way, such as +app_update "90 -beta beta"
.
> Note: If this does not work, try putting it like "+app_update 90 -beta beta"
instead.
Append the commands to the command line prefixed with plus characters, e.g.:
To install a specific game mod for HL1, such as Counter-Strike: Condition Zero:
For a game that requires logins, like Killing Floor:
Creating a script
Put your SteamCMD commands in a text file. (You may add comments which start with
//
.) Example:Run SteamCMD with the
+runscript
option, referring to the file you created previously. Example:
Cross-Platform Installation
It is possible to choose the platform for which SteamCMD should download files, even if it isn't the platform it is currently running on. This is done using the @sSteamCmdForcePlatformType
variable. (Yes, those are two "s"es at the beginning of the variable name.) For example, to download the Windows CSGO dedicated server on Linux, you can run the following command:
or use the following script:
The supported values are windows
, macos
and linux
.
Windows Software/Scripts
condenser
condenser is a bootstrapper for installing, configuring, & launching Steam dedicated server apps.
SteamCMD AutoUpdater
Install and automatically update any game server
GitHub Repo: https://github.com/C0nw0nk/SteamCMD-AutoUpdate-Any-Gameserver
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
SteamCMD Guardian 1.2
View and download here: http://pastebin.com/BRUbsGQh
Linux Scripts
Linux Game Server Managers
LinuxGSM is the command line tool for quick, simple deployment and management of dedicated game servers, using SteamCMD.
Features
Backup
Console
Details
Installer (SteamCMD)
Monitor
Alerts (Email, Pushbullet)
Update (SteamCMD)
Start/Stop/Restart server
Supported Servers
There are now 70+ different game servers supported and rising. For a full list visit the website.
Links
Website: https://gameservermanagers.com
GitHub Repo: https://github.com/GameServerManagers/LinuxGSM
SteamCMD Guardian 1.2
The following script was tested on Debian Wheezy.
View and download here: http://pastebin.com/hcpMpmaZ
Installation
To make this script work, we need a location. Preferably you created a user (e.g. steam) with it's own home directory (/home/steam) and are logged in as it via SSH, tty or using su.
Make the file
Paste in the code
Modify the code, add
at least
1 game to theDL_SV*=
rows.Close the file with
Ctrl
+O
, followed by↵ Enter
and concluding withCtrl
+X
.Give the file execute rights for the userchmod u+x ./updateserver.sh
Run the file
The file will auto-download SteamCMD, update it and install all chosen games (up to 4). Run the file again to update the games.
Known issues
ERROR! Failed to install app 'xxxxxx' (No subscription)
If you get the 'No subscription' error, the game/server you are trying to download either requires a login or that you have purchased the game. You will therefore have to log in with a Steam username and password – if that doesn't help, you may need to purchase a copy of the game on Steam first. See Dedicated Servers List.
Note: For security reasons it is recommended that you create a new Steam account just for your dedicated servers.
For example
32-bit libraries on 64-bit Linux systems
Since SteamCMD is a 32-bit binary, 32-bit libraries are required.
The following error may occur:
The resolution depends on your distro:
Debian based distributions (Ubuntu, Mint, etc.)
> Note: ia32-libs are not required to install SteamCMD; lib32gcc1 is enough.
With Debian 7 "Wheezy" you may encounter this error:
To fix this, do the following:
Red Hat based distributions (RHEL, Fedora, CentOS, etc.)
Arch Linux
Don't forget to first enable the multilib repository.
Login Failure: No Connection
On linux servers, you may experience a "Login Failure: No Connection" error. This is related to missing iptables rules. You will want something along these lines:
The port list is found here: https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=english
On Windows servers, you may experience "SteamUpdater: Error: Download failed: http error 0" and "SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again.". This is usually fixed by checking "Automatically detect settings" in IE (Internet Explorer) through the lan settings in the Internet option menu. 1. Open Internet Explorer (IE). 2. Click on Tools → Internet Options 3. Click on the Connections tab 4. At the bottom, you should see Local Area Network (LAN) Settings. 5. Check the first box (Automatically detect settings) 6. Hit OK, and Apply. Try running the SteamCMD again; if it still doesn't work. try lowering your Internet Security level zone to medium or lower. You can find that in the Security tab in Internet Options.
SteamCMD startup errors
Unable to locate a running instance of Steam
You may get the following error when starting a server with Linux:
Resolve the issue by linking steamclient.so
to the ~/.steam/sdk32/steamclient.so
directory:
ulimit Linux startup error
Some users may get a ulimit
error (no permission/cannot open file) while script is starting up. This error caused by a low setting of the -nparameter
(number of file descriptors) of ulimit
. SteamCMD uses standard commands inside of the initialization shell script to change the ulimitautomatically
, but some servers may forbid increasing ulimit
values after startup (or beyond a limit set by root
).
This can be fixed by changing the file descriptor number ulimit:
If an error appears (no permission), you will have to log in as root to change the parameter. To check the current setting, type ulimit -a
; the system will reply with many rows, you need to find one:
In this case,1024
is the current value.
root
can also modify the limits in the /etc/security/limits.conf
file.
In most instances you will simply get a warning message however it will not stop SteamCMD from running.
Only the HLDS engine is downloaded
When trying to download a HL1 mod like TFC, initially it only downloads the engine files of the HLDS, but not the mod. This happens with both the regular version and the beta. You may have to try multiple times until all the required files are downloaded, but once this is done, the files should update correctly next time.
Work-around for this issue here: http://danielgibbs.co.uk/2017/10/hlds-steamcmd-workaround-appid-90-part-ii/
Just deleting the appmanifest files, without downloading replacements from a third party, may work as well! You will get an error at first though, complaining that something went wrong, which is due to the deleted files.
On a side note, for some reason CS is always installed as well.
See Also
Source Dedicated Server
Half-Life Dedicated Server
Dedicated Servers List
SteamCMDui
Last updated