SteamCMD
Für Hilfe, sieh im Artikel VDC Editing Help und Wikipedia cleanup process nach. Bitte beachte auch eventuell vorhandene Hinweise auf der talk page.
Der Steam Console Client (SteamCMD) ist eine Kommandozeilen-Version des Steam-Clients . Hauptzweck: Installation und Aktualisierung dedizierter Server auf Steam via Kommandozeile.
Er funktioniert mit Spielen, die das SteamPipe -Inhaltssystem verwenden.
Contents
- 1 Herunterladen von SteamCMD
- 2 Ausführen von SteamCMD
- 3 SteamCMD-Anmeldung
- 4 Herunterladen einer App
- 5 Automatisierung von SteamCMD
- 6 Plattformübergreifende Installation
- 7 Windows-Software/Skripte
- 8 Linux-Skripte
- 9 Bekannte Probleme
- 10 Siehe auch
Herunterladen von SteamCMD
Windows
- Lade SteamCMD für Windows herunter: [1]
- Erstelle einen Ordner für SteamCMD. Beispiel:
D:\steamcmd
- Entpacke den Inhalt der ZIP-Datei in den Ordner.
steamcmd.exe
in einem 'install'-Ordner zu platzieren; dies ist jedoch optional.Linux
Erstelle ein Benutzerkonto namens steam, um SteamCMD sicher auszuführen und es vom Rest des Betriebssystems zu isolieren.
steamcmd
nicht als Root-Benutzer aus. Dies stellt ein Sicherheitsrisiko dar.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
sudo pacman -Syy base-devel
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: [2]
Die zugehörige Docker Hub Seite findest du hier: [3]
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 sudo
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 -
macOS
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.
Windows
Öffne eine Eingabeaufforderung und starte SteamCMD.
cd C:\steamcmd steamcmd
Linux
Ö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
macOS
Ö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 login anonymous
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\
.
als Verzeichnis zu verwenden. Eine Umgehungslösung besteht darin, den absoluten Pfad zum aktuellen Verzeichnis zu verwenden.3. Melde dich mit dem Befehl login
an.
Valve empfiehlt, dass du das Installationsverzeichnis festlegst, bevor du dich anmeldest.
4. Installiere oder aktualisiere die App mit dem Befehl app_update
(unter Angabe einer Steam Application ID ). Bitte überprüfe hier die Liste der dedizierten Server: Liste der dedizierten Server . Um die App ebenfalls zu validieren, füge validate
zum Befehl hinzu. Um einen Beta-Zweig herunterzuladen, verwende die Option -beta <betaname>
– zum Beispiel heißt der HLDS-Beta-Zweig beta
und der SrcDS-Beta-Zweig prerelease
. Einige Beta-Zweige sind durch ein Passwort geschützt; um von ihnen herunterladen zu können, füge auch die Option -betapassword <password>
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
app_update
, bevor alle erforderlichen Dateien erfolgreich installiert sind. Führe app_update 90 validate
einfach mehrfach aus, bis keine weiteren Updates durchgeführt werden. [todo tested in?]- 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
, Passwortnatsel
): - [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 quit
ein, um dich ordnungsgemäß von den Steam-Servern abzumelden.
Validieren
validate
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.
mapcycle.txt
angepasst hast, wird diese Datei auf den Serverstandard zurückgesetzt. Alle Dateien, die nicht Teil der Standardinstallation sind, werden nicht beeinflusst.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 Dedicated Servers List 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
-beta
Option in der Befehlszeile muss sie auf eine spezielle Weise in Anführungszeichen gesetzt werden, z.B. +app_update "90 -beta beta"
."+app_update 90 -beta beta"
.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
Failed to load script file 'scriptname.txt'
erhältst, versuche einen absoluten Pfad anzugeben, wie /mnt/storage/tf2server/updatetf2_script.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
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 Dedicated Servers List .
force_install_dir
vor der Anmeldung!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
ia32-libs
sind nicht erforderlich, um SteamCMD zu installieren; lib32gcc1
ist ausreichend.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 GoldSrc 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.