Difference between revisions of "SteamCMD"

From Valve Developer Community
Jump to: navigation, search
(Supported Servers)
m (Supported Servers: the game is called "Team Fortress 2 Beta", so refer to it as TF2 Beta DS)
Line 93: Line 93:
  
 
|-
 
|-
| Team Fortress 2 dedicated server '''beta'''
+
| Team Fortress 2 '''Beta''' dedicated server
 
| 229830
 
| 229830
  
Line 112: Line 112:
  
 
|-
 
|-
| TF2 dedicated server  
+
| Team Fortress 2 dedicated server  
 
| 232250
 
| 232250
  

Revision as of 19:01, 16 March 2013

Polski

The Steam Console Client or SteamCMD is a new tool to install and update dedicated servers using a command line interface. It only works with games that have switched over to the SteamPipe content system. Eventually all Steam games will switch from HLDSUpdateTool to this.

Downloading and Running SteamCMD

1. Download the SteamCMD Update Tool

If you are running a 64-bit Linux distro, you will probably have to install 32-bit libs. See here how to do this.

2. Extract the contents to a directory

Note:Do not extract the contents of the updater tool to the regular Steam Client folder or to the HLDSUpdateTool folder.
  • Linux: type tar xvfz steamcmd_linux.tar.gz

3. Launch SteamCMD for the first time

Open a command prompt in that directory and start SteamCmd
  • Windows: type steamcmd
  • Linux: type ./steamcmd.sh

The program will automatically update and enter you in to a Steam> prompt. Type help for more information.

To download most game servers, you can login anonymously

login anonymous

If logging in anonymously doesn't work for that particular game, you will have to log in with a Steam Account

Note:You must log out of the regular Steam client in order to properly log in to SteamCMD Update Tool.
login <username>

Enter your password. Then check your e-mail for your Steam Guard access code and enter it (you'll only need to do this once per computer).

You should see a message stating that you have successfully logged in with your account.

Downloading an app

1. Start SteamCMD and set your app install directory. (note: use forward slashes for Linux and backslashes for Windows)

force_install_dir <path>
Bug: On some Linux distributions the path cannot contain any capital letters - see #Known issues
Example: cs_go directory in the current directory:
force_install_dir ./cs_go/

2. Install or update the app. <app_id> is the Steam Application IDs. To also validate the app add validate to the command. To participate in beta testing add -beta "Beta" to the command.

app_update <app_id>
Example: install and validate CS:GO:
app_update 740 validate
Example: install and validate beta version of HLDS:
app_update "90 -beta beta" validate

3. Once finished, type quit to properly log off of the Steam servers.

Supported Servers

This is the known list of servers that require steamcmd to install. Any listed extra command line options need to be before the app_update line.

Server ID Extra Command Line options
HLDS for Half-Life: Deathmatch and Counter-Strike 90
Counter-Strike: Condition Zero dedicated server 90 +app_set_config 90 mod czero
Day of Defeat dedicated server 90 +app_set_config 90 mod dod
Counter-Strike: Global Offensive dedicated server 740
Nuclear Dawn dedicated server 111710
Red Orchestra dedicated server 223240
Red Orchestra 2: Heroes of Stalingrad dedicated server 212542
Killing Floor dedicated server 215350
Team Fortress 2 Beta dedicated server 229830
DoD:S dedicated server 232290
CS:S dedicated server 232330
HL2:DM dedicated server 232370
The following are not yet released (listed for future reference)
Team Fortress 2 dedicated server 232250
Tip:To install multiple mods, separate their names with commas, e.g. +app_set_config 90 mod czero,dod.

Automating SteamCMD

There are two ways to automate SteamCMD. (replace steamcmd with ./steamcmd.sh on Linux)

1. Add commands to the command line. Examples:

steamcmd +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
steamcmd +login <username> <password> +force_install_dir c:\KFServer\ +app_update 215350 validate +quit

2. Create a script.

a. Put your SteamCMD commands in a text file. Example:
// update_csgo_ds.txt
//
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
login <username> <password>
//for servers which don't need a login
//login anonymous 
force_install_dir ../csgo_ds
app_update 740 validate
quit
b. Run SteamCMD with the +runscript option. Example:
steamcmd +runscript csgo_ds.txt

Example Batch Code for Windows

::=======================::
:: SteamCMD Guardian 1.2 ::
::       ckynick254      ::
::=======================::
set programname=SteamCMD Guardian 1.1
::=======================::
::  SET YOUR VARIABLES!  ::
::=======================::
set servername=
set username=
set password=
::=======================::
::      Your folder      ::
::    Replace after =    ::
::=======================::
set runcmd=E:\Games\

::=======================::
::   End of variables    ::
::=======================::

:: This will keep the window clean and easy to read
@ECHO off

:: Sets the title of the window
title %programname% - %servername%

:: Clears the window incase there is anything there
cls
COLOR 1f
CD %runcmd%

:: Prints to the window what we are doing
ECHO %programname% has been started!
:start
ECHO.
ECHO.
ECHO   ##############################################################
ECHO   #                    Dedicated Server                        #
ECHO   # 1 - Half-Life: Deathmatch and Counter-Strike               #
ECHO   # 2 - Counter-Strike: Global Offensive                       #
ECHO   # 3 - Nuclear Dawn Dedicated Server                          #
ECHO   # 4 - Red Orchestra Dedicated Server                         #
ECHO   # 5 - Red Orchestra 2: Heroes of Stalingrad Dedicated Server #
ECHO   # 6 - Killing Floor Dedicated Server                         #
ECHO   # 7 - Team Fortress 2 Dedicated Server Beta                  #
ECHO   # 8 - HELP!                                                  #
ECHO   # 9 - Exit                                                   #
ECHO   ##############################################################
ECHO.
ECHO.

:: Delete variable %A%
SET "A="
SET /P A=Set Your Choice And Press Enter: 
ECHO Loading .........
IF "%A%"=="1" set app=90 
IF "%A%"=="2" set app=740
IF "%A%"=="3" set app=111710
IF "%A%"=="4" set app=223240
IF "%A%"=="5" set app=212542
IF "%A%"=="6" set app=215350
IF "%A%"=="7" set app=229830
IF "%A%"=="8" ECHO.
IF "%A%"=="8" ECHO https://developer.valvesoftware.com/wiki/SteamCMD
IF "%A%"=="8" ECHO.
IF "%A%"=="8" PAUSE
IF "%A%"=="8" goto start
IF "%A%"=="9" EXIT

:: This is a return point in case the server crashes or is closed
:restart
ECHO.
ECHO (%date%)(%time%) %servername% is now ONLINE
ECHO Watching %servername% for crashes...
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) %servername% is now ONLINE
>> "%servername%.log" ECHO (%date%)(%time%) Watching %servername% for crashes...

::Start the actual update window
start /wait steamcmd +login %username% %password% +force_install_dir %runcmd%%app%Server\ +app_update %app% validate
ECHO (%time%) WARNING: srcds closed or crashed, restarting.
ECHO.
ECHO (%date%)(%time%) Crash or Close detected!
ECHO %servername% is now restarting...
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) Crash or Close detected!
>> "%servername%.log" ECHO (%date%)(%time%) %servername% is now restarting...

::Server crashed or closed, so we point it to the return point to start the server again
GOTO restart

Known issues

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

Common causes:

  • Linux: Some games on some distributions have issues with uppercase letters in directory/filenames.

32-bit libraries on 64-bit Linux systems

Since steamcmd is a 32-bit program, a few 32-bit libraries are required, even if you already have their 64-bit versions installed.

The related error message looks like this:
steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

The remedies are distribution-specific:

Debian and derivatives (Ubuntu, Mint)

apt-get install ia32-libs


if apt-get install ia32-libs displays:

The following packages have unmet dependencies: ia32-libs : Depends: ia32-libs-multiarch but it is not installable E: Unable to correct problems, you have held broken packages.

Use:

sudo dpkg --add-architecture i386

and

sudo apt-get update

before running apt-get install ia32-libs

Red Hat and derivatives (RHEL, Fedora, CentOS)

yum install glibc.i686 libstdc++.i686

Arch Linux

Don't forget to first enable the multilib repository.

pacman -S lib32-gcc-libs

Download Failed

On windows computers, the initial download may fail if proxy settings are not set to automatically detect settings.

Login Failure: No Connection

On linux servers, you may experience a "Login Failure: No Connection". This is related to missing iptables rules. You will want something along these lines:

iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65355 -j ACCEPT

The port list is found here: https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=english