SteamCMD
De Steam Console Client of SteamCMD is een nieuw hulpmiddel om dedicated servers te installeren en te updaten via de opdrachtregel. Het systeem werkt alleen met games die zijn overgeschakeld op het SteamPipe bestandssysteem. Op den duur zullen alle games die gebruik maken van de HLDSUpdateTool overschakelen op SteamPipe.
SteamCMD downloaden en uitvoeren
1. Download de SteamCMD Update Tool
-
- Als je gebruik maakt van een 64-bit Linux distro moet je de 32-bit libs installeren. Kijk hier voor informatie over hoe dit moet.
2. Pak de inhoud van het archief uit in een bestandsmap
- Opmerking:Pak de inhoud van het SteamCMD archief niet uit in de Steam Client map of in de HLDSUpdateTool map.
- Linux: type
tar -xvzf steamcmd_linux.tar.gz
- Linux: type
3. Start SteamCMD voor de eerste keer op.
- Open een opdrachtprompt in de map waar SteamCmd staat
- Windows: type
steamcmd
- Linux: type
./steamcmd.sh
- Windows: type
Het programma zal zichzelf automatisch updaten en toont na het updaten een Steam>
prompt. Typ help
voor meer informatie.
Voor de meeste gameservers kan je anoniem inloggen
login anonymous
Mocht anoniem inloggen niet werken voor een bepaalde game, dan zal je in moeten loggen met je Steam account.
login <username>
Voer je wachtwoord in. Kijk daarna in je e-mail voor je Steam Guard toegangscode en voer hem in (dit hoeft maar een keer per computer).
Er komt een melding in beeld waarop staat dat je succesvol bent ingelogd.
Een app downloaden
1. Start SteamCMD en stel SteamCMD in op je app installatiefolder. (hint: gebruik voorwaarde slashes (/) op Linux en backslashes (\) op Windows)
force_install_dir <path>
- Voorbeeld: cs_go bestandsmap in de huidige map:
force_install_dir ./cs_go/
2. Installeer of update de app. <app_id> is de Steam Application ID. Om de te installeren of the updaten app ook te valideren voeg je validate
te aan het commando.
app_update <app_id>
- Voorbeeld: instaleer en valideer CS:GO:
app_update 740 validate
- Voorbeeld: installeeer en valideer de beta versie van HDLS (CS 1.6):
app_update 90 -beta beta validate
- Voorbeeld: Installeer en valideer een prerelease versie van CS:S:
app_update 232330 -beta prerelease validate
- Voorbeeld: Installeer en valideer CS:CZ:
app_set_config 90 mod czero app_update 90 validate
3. Wanneer je klaar bent met de SteamCMD, type quit
om de SteamCMD netjes af te melden bij de Steam Servers en om het programma te sluiten.
Supported Servers
Onderstaande lijst vereist steamcmd om te worden geïnstalleerd. Eventuele extra commando's moeten voor de app_update
regel.
Server | ID | Extra commando's |
---|---|---|
HLDS for Half-Life and Counter-Strike | 90 | |
Counter-Strike: Condition Zero dedicated server | 90 | +app_set_config 90 mod czero |
Deathmatch Classic dedicated server | 90 | +app_set_config 90 mod dmc |
Day of Defeat dedicated server | 90 | +app_set_config 90 mod dod |
Half-Life: Opposing Force dedicated server | 90 | +app_set_config 90 mod gearbox |
Ricochet dedicated server | 90 | +app_set_config 90 mod ricochet |
Team Fortress Classic dedicated server | 90 | +app_set_config 90 mod tfc |
Counter-Strike: Global Offensive dedicated server | 740 | |
Garry's Mod dedicated server | 4020 | |
Nuclear Dawn dedicated server | 111710 | |
Red Orchestra: Ostfront 41-45 dedicated server | 223240 | |
Red Orchestra 2: Heroes of Stalingrad and Rising Storm dedicated server | 212542 | |
Red Orchestra: Rising Storm beta dedicated server | 238690 | |
Killing Floor Windows dedicated server | 215350 | |
Killing Floor Linux dedicated server | 215360 | |
Team Fortress 2 dedicated server | 440 | |
Day of Defeat: Source dedicated server | 232290 | |
Counter-Strike: Source dedicated server | 232330 | |
Half-Life 2: Deathmatch dedicated server | 232370 | |
The Ship dedicated server | 2403 |
+app_set_config 90 mod czero,dod
.Automatische SteamCMD
Er zijn twee manieren om SteamCMD te automatiseren. (vervang steamcmd
door./steamcmd.sh
op Linux)
beta
gebruikt op de opdrachtregel moet je het commando op de goede manier citeren: +app_update "90 -beta beta"1. Voeg commando's toe aan de SteamCMD opdrachtregel, voorbeeld:
steamcmd +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
Om een specifieke mod voor HL1 te installeren, zoals Counter-Strike: Condition Zero:
steamcmd +login anonymous +force_install_dir ../czero +app_set_config 90 mod czero +app_update 90 validate +quit
Voor een game waarvoor je moet inloogen, zoals Killing Floor
steamcmd +login <username> <password> +force_install_dir c:\KFServer\ +app_update 215350 validate +quit
2. Maak een script
- a. Stop je SteamCMD commando's in een tekstbestand. Voorbeeld:
// update_csgo_ds.txt
//
@ShutdownOnFailedCommand 1 //maak hier 0 van als je meerdere server installeert
@NoPromptForPassword 1
login <gebruikersnaam> <wachtwoord>
//voor servers waarvoor je niet hoeft in te loggen
//login anonymous
force_install_dir ../csgo_ds
app_update 740 validate
quit
- b. Voer SteamCMD uit met de
+runscript
optie. Voorbeeld:
steamcmd +runscript csgo_ds.txt
Voorbeeld Batchcode voor Windows
::=======================::
:: SteamCMD Guardian 1.2 ::
:: ckynick254 ::
::=======================::
set programname=SteamCMD Guardian 1.1
::=======================::
:: STEL WAARDEN IN! ::
::=======================::
set servername=
set username=
set password=
::=======================::
:: Servermap ::
:: Vervang achter = ::
::=======================::
set runcmd=E:\Games\
::=======================::
:: Einde van variabelen ::
::=======================::
:: Dit houd het scherm mooi leesbaar
@ECHO off
:: Stel de titel van het scherm in
title %programname% - %servername%
:: Leegt het scherm, mocht er iets staan
cls
COLOR 1f
CD %runcmd%
:: Geeft aan dat het programma is gestart
ECHO %programname% is gestart
:start
ECHO.
ECHO.
ECHO ##############################################################
ECHO # Dedicated Server #
ECHO # 1 - Half-Life: Deathmatch en 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 - Afsluiten #
ECHO ##############################################################
ECHO.
ECHO.
:: Delete variable %A%
SET "A="
SET /P A=Kies het nummer van je keuze en druk op [ENTER]
ECHO Laden.........
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" START https://developer.valvesoftware.com/wiki/SteamCMD:nl
IF "%A%"=="8" goto start
IF "%A%"=="9" EXIT
:: Dit is een terugkeerpunt, mocht de server vastlopen
:restart
ECHO.
ECHO (%date%)(%time%) %servername% is nu ONLINE
ECHO %servername% wordt in de gaten gehouden voor eventuele crashes
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) %servername% is nu ONLINE
>> "%servername%.log" ECHO (%date%)(%time%) %servername% wordt in de gaten gehouden voor eventuele crashes
::Start het daadwerkelijke updatescherm
start /wait steamcmd +login %username% %password% +force_install_dir %runcmd%%app%Server\ +app_update %app% validate
ECHO (%time%) WAARSCHUWING: srcds was afgesloten of is gecrasht. Herstarten...
ECHO.
ECHO (%date%)(%time%) Crash or Close detected!
ECHO %servername% wordt opnieuw opgestart...
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) Server gecrasht of afgesloten.
>> "%servername%.log" ECHO (%date%)(%time%) %servername% start nu opnieuw op...
::De server is gestopt, dus we gaan terug naar het terugkeerpunt
GOTO restart
Bekende problemen
32-bit libraries op 64-bit Linux systemen
Omdat SteamCMD een 32-bit programma is, zijn er enkele 32-bit libraries vereist, zelfs als je al het 64-bit equivalent van deze libraries hebt.
De foutmelding die bij dit probleem hoort:
steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
De oplossingen zijn distrospecifiek:
Debian en afgeleide (Ubuntu, Mint)
apt-get install ia32-libs
Als je de volgende foutmelding krijgt:
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.
Doe dan het volgende
dpkg --add-architecture i386 apt-get update apt-get install ia32-libs
Red Hat en afgeleide (RHEL, Fedora, CentOS)
yum install glibc.i686 libstdc++.i686
Arch Linux
Vergeet niet om eerst de multilib repository aan te zetten.
pacman -S lib32-gcc-libs
Login Failure: No Connection
Op Linux server kan je de volgende fout tegenkomen: "Login Failure: No Connection". Dit komt door ontbrekende iptables regels. Je kan dit oplossen door iets in de trend van het volgende te doen:
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
Een lijst met poorten is hier: https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=english
Op Windows Servers kan je het volgende krijgen: "SteamUpdater: Error: Download failed: http error 0", dit is meestal te repareren door "Automatically detect settings" (of "Instellingen automatisch detecteren") aan te vinken bij de LAN instellingen van de Internet Instellingen.
SteamCmd opstartfouten
Ulimit linux startup error
Sommige gebruikers kunnen ulimit meldingen krijgen (geen rechten/kan bestand niet openen) terwijl het script aan het opstarten is. Deze fout wordt veroorzaakt door een te lage -n-parameter in ulimit. SteamCmd gebruikt standaard commando's om ulimit automatisch aan te passen maar sommige servers kunnen dit om veiligheidsreden blokkeren (meestal ingesteld door administrator/root).
Het probleem lost op door ulimit te verhogen tot ten minste 2048: ulimit -n 2048
. Het kan zijn dat je permissiefouten krijgt (no permission), dus het kan zijn dat dit als root moet worden gedaan.
Om de instelling na te kijken, typ je: ulimit -a. Je krijgt een grote response, je moet dan zoeken naar:
open files (-n) 1024
"1024" is de waarde van de instelling van het systeem.