De/SteamCMD

Category:Dedicated ServerCategory:Steam Applications
Der Steam Console Client (SteamCMD) ist eine Kommandozeilen-Version des . Hauptzweck: Installation und Aktualisierung dedizierter Server auf Steam via Kommandozeile.
Er funktioniert mit Spielen, die das -Inhaltssystem verwenden.
== Herunterladen von SteamCMD ==
=== ===
# Lade SteamCMD für Windows herunter: 
# Erstelle einen Ordner für SteamCMD. Beispiel: 
# Entpacke den Inhalt der ZIP-Datei in den Ordner.
=== ===
Erstelle ein Benutzerkonto namens steam, um SteamCMD sicher auszuführen und es vom Rest des Betriebssystems zu isolieren.
1. Als Root-Benutzer erstelle den steam Benutzer:
 sudo useradd -m steam
 sudo passwd steam
2. Gehe in dessen Home-Verzeichnis:
 sudo -u steam -s
 cd /home/steam
==== Paket aus Repositories ====
===== Ubuntu =====
Um SteamCMD zu installieren, müssen das Multiverse-Repository und x86-Pakete aktiviert sein.
 sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
 sudo apt install steamcmd
===== Debian =====
Um SteamCMD zu installieren, füge das non-free Repository hinzu und aktiviere die x86-Pakete. In Debian 12 (Bookworm) funktioniert apt-add-repository nicht mehr, daher eine Alternative nutzen (siehe auch: https://stackoverflow.com/questions/76688863/apt-add-repository-doesnt-work-on-debian-12).
 sudo apt update; sudo apt install software-properties-common; sudo apt-add-repository non-free; sudo dpkg --add-architecture i386; sudo apt update
 sudo apt install steamcmd
===== Enterprise Linux =====
===== Arch Linux =====
 git clone https://aur.archlinux.org/steamcmd.git
 cd steamcmd
 makepkg -si
Gentoo:
 emerge --ask games-server/steamcmd
==== Docker ====
Wenn dein Server Docker verwendet, kannst du einfach folgendes nutzen:
docker run -it --name=steamcmd cm2network/steamcmd bash
steamcmd.sh befindet sich unter /home/steam/steamcmd.
Dieses Image kann als Basisimage für dedizierte Server, die auf Steam basieren, verwendet werden.
Beispiel: 
Die zugehörige Docker Hub Seite findest du hier: 
==== Manuell ====
1. Bevor du beginnst, musst du zuerst die Abhängigkeiten installieren, die für den Betrieb von SteamCMD erforderlich sind:
Ubuntu/Debian (x86-64)
 sudo apt-get install lib32gcc-s1
Enterprise Linux (x86-64)
 yum install glibc.i686 libstdc++.i686
2. Als Root-Benutzer wechsle zum steam Benutzer:
 su - steam
Wenn du dich nicht als Root anmeldest und stattdessen verwendest, um Verwaltungsaufgaben durchzuführen, wechsle zum steam Benutzer wie folgt:
 sudo -iu steam
3. Erstelle ein Verzeichnis für SteamCMD und wechsle in dieses Verzeichnis:
 mkdir ~/Steam && cd ~/Steam
4. Lade SteamCMD für Linux herunter und entpacke es:
 curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
=== === 
1. Öffne Terminal.app und erstelle ein Verzeichnis für SteamCMD.
 mkdir ~/Steam && cd ~/Steam
2. Lade SteamCMD für macOS herunter und entpacke es.
 curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz" | tar zxvf -
== Ausführen von SteamCMD ==
Beim ersten Start wird SteamCMD automatisch aktualisiert und führt dich in eine Steam>-Eingabeaufforderung. Gib help ein, um weitere Informationen zu erhalten.
=== === 
Öffne eine Eingabeaufforderung und starte SteamCMD.
 cd C:\steamcmd
 steamcmd
=== === 
Öffne ein Terminal und starte SteamCMD.
Wenn du es über das Paket aus den Repositories installiert hast:
 steamcmd
Wenn du es manuell installiert hast:
 cd ~/Steam
 ./steamcmd.sh
=== === 
Öffne ein Terminal und starte SteamCMD.
Wenn du es über das Paket aus den Repositories installiert hast:
 cd ~
 steamcmd
Wenn du es manuell installiert hast:
 cd ~/Steam
 ./steamcmd.sh
== SteamCMD-Anmeldung ==
=== Anonym ===
Um die meisten Game-Server herunterzuladen, kannst du dich anonym anmelden mit 
=== Mit einem Steam-Konto ===
Einige Server erfordern eine Anmeldung mit einem Steam-Konto.
 login <username>
Gib anschließend dein Passwort ein.
Wenn Steam Guard auf dem Benutzerkonto aktiviert ist, überprüfe deine E-Mails auf einen Steam Guard-Zugangscode und gib diesen ein. Dies ist nur beim ersten Anmelden erforderlich (sowie beim Löschen der Dateien, in denen SteamCMD die Anmeldeinformationen speichert).
Du solltest eine Meldung sehen, die bestätigt, dass du dich erfolgreich mit deinem Konto angemeldet hast.
== Herunterladen einer App ==
1. Starte SteamCMD, melde dich noch nicht an.
2. Lege dein App-Installationsverzeichnis fest. (Hinweis: Verwende Schrägstriche für Linux/macOS und Backslashes für Windows.)
 force_install_dir <pfad>
z.B. ein Verzeichnis namens cs_go im aktuellen Verzeichnis:
 force_install_dir ./cs_go/
Für Windows: force_install_dir c:\cs_go\
3. Melde dich mit dem Befehl an.
Valve empfiehlt, dass du das Installationsverzeichnis festlegst, bevor du dich anmeldest.
4. Installiere oder aktualisiere die App mit dem Befehl (unter Angabe einer ). Bitte überprüfe hier die Liste der dedizierten Server: . Um die App ebenfalls zu validieren, füge zum Befehl hinzu. Um einen Beta-Zweig herunterzuladen, verwende die Option – zum Beispiel heißt der HLDS-Beta-Zweig und der SrcDS-Beta-Zweig . Einige Beta-Zweige sind durch ein Passwort geschützt; um von ihnen herunterladen zu können, füge auch die Option hinzu.
 app_update <app_id> [-beta <betaname>] [-betapassword <password>] [validate]
HLDS ist ein Sonderfall: Die App-ID ist immer 90 und ein Mod muss zuerst ausgewählt werden. Dies geschieht, indem die App-Konfigurationsoption mod auf den gewünschten Wert gesetzt wird.
 app_set_config <app_id> <option_name> <option_value>
: Beispiel: Installation und Validierung des Counter-Strike: Global Offensive dedizierten Servers:
 app_update 740 validate
: Beispiel: Installation und Validierung von HLDS mit Team Fortress Classic:
 app_set_config 90 mod tfc
 app_update 90 validate
: Beispiel: Installation und Validierung der Betaversion von HLDS (Half-Life):
 app_update 90 -beta beta validate
: Beispiel: Installation und Validierung der Betaversion des Counter-Strike: Source dedizierten Servers:
 app_update 232330 -beta prerelease validate
: Beispiel: Installation und Validierung einer privaten Betaversion des Natural Selection 2 dedizierten Servers (Name alpha, Passwort natsel):
: [beta name] ist der Name des privaten Beta-Zweigs
: [beta code] ist das Passwort für den privaten Beta-Zweig
 app_update 4940 -beta alpha -betapassword natsel validate
Der Beta-Name für den Nicht-Beta-Zweig ist "public", daher führt app_update 90 -beta public dazu, dass du vom Beta-Zweig für HLDS heruntergenommen wirst.
5. Sobald du fertig bist, gib ein, um dich ordnungsgemäß von den Steam-Servern abzumelden.
=== Validieren ===
 ist ein Befehl, der alle Serverdateien überprüft, um sicherzustellen, dass sie mit den SteamCMD-Dateien übereinstimmen. Dieser Befehl ist nützlich, wenn du denkst, dass Dateien fehlen oder beschädigt sind.
Es wird empfohlen, diesen Befehl nur bei der Erstinstallation und bei Serverproblemen zu verwenden.
=== Unterstützte Server ===
Eine Liste bekannter Server, die SteamCMD zur Installation verwenden, ist auf der Seite verfügbar. Beachte, dass alle zusätzlichen Befehle vor der app_update-Zeile ausgeführt werden müssen.
== Automatisierung von SteamCMD ==
Es gibt zwei Möglichkeiten, SteamCMD zu automatisieren. (Ersetze steamcmd durch ./steamcmd.sh unter Linux/macOS.)
=== Befehlszeile ===
Füge die Befehle der Befehlszeile mit vorangestellten Pluszeichen hinzu, z.B.:
 steamcmd +force_install_dir ../cs1_ds +login anonymous +app_update 730 +quit
Um eine bestimmte Spielmodifikation für HL1 zu installieren, wie z.B. Counter-Strike: Condition Zero:
 steamcmd +force_install_dir ../czero +login anonymous +app_set_config 90 mod czero +app_update 90 +quit
Für ein Spiel, das eine Anmeldung erfordert, wie Killing Floor:
 steamcmd +force_install_dir c:\KFServer\ +login <username> <password> +app_update 215350 +quit
=== Ein Skript erstellen ===
1. Schreibe deine SteamCMD-Befehle in eine Textdatei. (Du kannst Kommentare hinzufügen, die mit // beginnen.) Beispiel:
// update_csgo_ds.txt
//
@ShutdownOnFailedCommand 1 //setze auf 0, wenn mehrere Server gleichzeitig aktualisiert werden
@NoPromptForPassword 1
force_install_dir ../csgo_ds
login <username> <password>
//für Server, die keine Anmeldung benötigen
//login anonymous 
app_update 740 validate
quit
2. Führe SteamCMD mit der Option +runscript aus und beziehe dich dabei auf die zuvor erstellte Datei. Beispiel:
 steamcmd +runscript update_csgo_ds.txt
== Plattformübergreifende Installation ==
Es ist möglich, die Plattform auszuwählen, für die SteamCMD Dateien herunterladen soll, auch wenn es nicht die Plattform ist, auf der es gerade ausgeführt wird. Dies wird mit der Variablen @sSteamCmdForcePlatformType erreicht. (Ja, am Anfang des Variablennamens stehen zwei "s".) Zum Beispiel, um den dedizierten Windows-CSGO-Server unter Linux herunterzuladen, kannst du den folgenden Befehl ausführen:
 ./steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir ../csgo_ds +login anonymous +app_update 740 validate +quit
oder benutze das folgende Skript:
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
@sSteamCmdForcePlatformType windows
force_install_dir ../csgo_ds
login anonymous
app_update 740 validate
quit
Die unterstützten Werte sind windows, macos und linux.
== Windows-Software/Skripte ==
=== condenser ===
condenser ist ein Bootstrapper zur Installation, Konfiguration und zum Starten von dedizierten Steam-Server-Apps.
=== SteamCMD AutoUpdater ===
Installiere und aktualisiere automatisch jeden Spielserver.
GitHub-Repo:
https://github.com/C0nw0nk/SteamCMD-AutoUpdate-Any-Gameserver
=== SteamCMD GUI ===
Dieses Tool ermöglicht es dem Benutzer, SteamCMD auf Windows ohne Befehlszeilen und/oder Batch-Dateien zu verwenden.
GitHub-Repo:
https://github.com/DioJoestar/SteamCMD-GUI
=== SteamPS ===
SteamPS ist ein PowerShell-Modul, das verwendet werden kann, um Server zu aktualisieren und Serverinformationen abzurufen. Es bietet auch einen Workflow zum Aktualisieren von Spielservern.
=== PowerShellGSM ===
PowerShellGSM ist ein modulares PowerShell-Tool zur Verwaltung von Spielservern mit SteamCMD.
==== Funktionen ====
* Installation
* Backups
* Updates
* Überwachung
* Neustarts
==== Unterstützte Server ====
PowerShellGSM enthält 20+ Template-Server und unterstützt benutzerdefinierte Templates, die es ermöglichen, praktisch alle Spiele zu unterstützen (auch Nicht-SteamCMD-Spiele).
==== Vorteile ====
Schneller als die meisten verfügbaren Tools.
Leichtere und gezieltere Backups.
Modular.
Erweiterbar.
Anpassbar.
==== Links ====
GitHub Repo: https://github.com/patrix87/PowerShellGSM
== Linux-Skripte ==
=== LinuxGSM ===
right|thumb|370px|Linux Game Server Managers
LinuxGSM ist das Kommandozeilen-Tool für schnelle und einfache Bereitstellung und Verwaltung von dedizierten Linux-Spielservern.
==== Funktionen ====
* Installer
* Updater
* Überwachung
* Benachrichtigungen
* Server-Details
* Backups
* Konsole
==== Unterstützte Server ====
Es werden mittlerweile über 100 verschiedene Spielserver unterstützt, und die Zahl steigt weiter. Für eine vollständige Liste besuche die Website.
==== Links ====
Website: https://linuxgsm.com
GitHub Repo: https://github.com/GameServerManagers/LinuxGSM
=== docker-steam-wine ===
Führe einen Steam-basierten Windows-Spielserver in Docker aus.
Projekt:
https://github.com/nuxy/docker-steamcmd-wine
== Bekannte Probleme ==
===ERROR! Failed to install app "xxxxxx" (No subscription)===
Wenn du den Fehler "No subscription" erhältst, erfordert das Spiel/der Server, den du herunterladen möchtest, entweder eine Anmeldung oder dass du das Spiel gekauft hast. Du musst dich daher mit einem Steam-Benutzernamen und -Passwort anmelden. Wenn das nicht hilft, musst du möglicherweise zuerst eine Kopie des Spiels auf Steam kaufen. Siehe .
Zum Beispiel:
steamcmd +login <username> <password>
=== 32-Bit-Bibliotheken auf 64-Bit-Linux-Systemen ===
Da SteamCMD eine 32-Bit-Binärdatei ist, werden 32-Bit-Bibliotheken benötigt.
Folgender Fehler kann auftreten:
 steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
Die Lösung hängt von deiner Distribution ab:
==== Debian-basierte Distributionen (Ubuntu, Mint, etc.) ====
 sudo apt-get install lib32stdc++6
Mit Debian 7 "Wheezy" kannst du auf diesen Fehler stoßen:
 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.
Um dies zu beheben, führe Folgendes aus:
 dpkg --add-architecture i386
 apt-get update
 apt-get install lib32gcc1
==== Red Hat-basierte Distributionen (RHEL, Fedora, CentOS, etc.) ====
 yum install glibc.i686 libstdc++.i686
==== Arch Linux ====
Vergiss nicht, zuerst das Multilib-Repository zu aktivieren.
 pacman -S lib32-gcc-libs
=== Anmeldefehler: Keine Verbindung ===
Auf Linux-Servern kann der Fehler "Login Failure: No Connection" auftreten. Dies hängt mit fehlenden iptables-Regeln zusammen. Du benötigst etwa Folgendes:
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
Die Portliste findest du hier: https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=english
Auf Windows-Servern kann der Fehler "SteamUpdater: Error: Download failed: http error 0" und "SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again." auftreten. Dies wird normalerweise behoben, indem die Option "Einstellungen automatisch erkennen" in IE (Internet Explorer) über die LAN-Einstellungen im Internetoptionen-Menü aktiviert wird.
# Öffne den Internet Explorer (IE).
# Klicke auf Extras → Internetoptionen
# Klicke auf den Tab Verbindungen
# Unten solltest du LAN-Einstellungen sehen.
# Markiere das erste Kästchen (Einstellungen automatisch erkennen)
# Klicke auf OK und Übernehmen. Versuche, SteamCMD erneut auszuführen. Wenn es immer noch nicht funktioniert, versuche, die Internet-Sicherheitsstufe auf mittel oder niedriger zu setzen. Diese findest du im Tab Sicherheit in den Internetoptionen.
=== SteamCMD-Startfehler ===
==== Unable to Locate a Running Instance of Steam ====
Du kannst den folgenden Fehler erhalten, wenn du einen Server mit Linux startest:
 [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
Löse das Problem, indem du steamclient.so mit dem Verzeichnis ~/.steam/sdk32/steamclient.so verlinkst:
 ln -s steamcmd/linux32/steamclient.so ~/.steam/sdk32/steamclient.so
==== ulimit Linux-Startfehler ====
Einige Benutzer können den Fehler ulimit (keine Berechtigung/Datei kann nicht geöffnet werden) beim Starten des Skripts erhalten. Dieser Fehler wird durch eine niedrige Einstellung des Parameters -n (Anzahl der Dateideskriptoren) von ulimit verursacht. SteamCMD verwendet Standardbefehle innerhalb des Initialisierungsskripts, um das ulimit automatisch zu ändern, aber einige Server können das Erhöhen der ulimit-Werte nach dem Start (oder über ein von root festgelegtes Limit hinaus) verbieten.
Dies kann behoben werden, indem die Anzahl der Dateideskriptoren von ulimit geändert wird:
 ulimit -n 2048
Wenn ein Fehler erscheint (keine Berechtigung), musst du dich als Root anmelden, um den Parameter zu ändern. Um die aktuelle Einstellung zu überprüfen, tippe ulimit -a; das System antwortet mit vielen Zeilen, du musst eine davon finden:
 open files (-n) 1024
In diesem Fall ist 1024 der aktuelle Wert.
root kann die Limits auch in der Datei /etc/security/limits.conf ändern.
In den meisten Fällen erhältst du einfach eine Warnmeldung, die jedoch SteamCMD nicht am Laufen hindert.
=== Eine Linux 64-Bit steamclient.so auf einer Windows-Maschine bekommen ===
WSL funktioniert nicht gut mit 32-Bit-Dateien. Wenn du die 64-Bit steamclient.so-Datei benötigst, kannst du einfach den folgenden Befehl ausführen:
steamcmd.exe +@sSteamCmdForcePlatformType linux +login anonymous +app_update 1007 +quit
Du findest die Datei dann hier:
.\steamapps\common\Steamworks SDK Redist\linux64
=== Nur die HLDS-Engine wird heruntergeladen ===
Beim Versuch, eine Mod wie TFC herunterzuladen, werden zunächst nur die Engine-Dateien des HLDS heruntergeladen, aber nicht die Mod. Dies wird durch nicht korrekt heruntergeladene appmanifest-Dateien verursacht. Dies passiert sowohl bei der regulären Version als auch bei der Beta. Es kann erforderlich sein, mehrere Versuche zu unternehmen, bis alle erforderlichen Dateien heruntergeladen sind, aber sobald dies geschehen ist, sollten die Dateien beim nächsten Mal korrekt aktualisiert werden.
Alternativ ist es möglich, vorhandene appmanifest-Dateien in das Verzeichnis steamapps zu kopieren. Lade appmanifest-Dateien aus dem LinuxGSM GitHub-Repository herunter.
Es kann auch funktionieren, die appmanifest-Dateien einfach zu löschen, ohne Ersatzdateien von Drittanbietern herunterzuladen! Du wirst jedoch zunächst einen Fehler erhalten, der darauf hinweist, dass etwas schiefgelaufen ist, was auf die gelöschten Dateien zurückzuführen ist.
== Siehe auch ==
* 
* 
* 
* 
* [linode.com] Linux Install SteamCMD