SteamCMD

From Valve Developer Community
Jump to: navigation, search
Icon-broom.png
Dieser Artikel muss gesäubert werden, um einen höheren Standart an Qualität zu erreichen.
Für Hilfe, sieh im Artikel VDC Editing Help und Wikipedia cleanup process nach. Bitte beachte auch eventuell vorhandene Hinweise auf der talk page.
English (en)Deutsch (de)Español (es)Français (fr)한국어 (ko)Nederlands (nl)Polski (pl)Português do Brasil (pt-br)Русский (ru)Türkçe (tr)中文 (zh)

Der Steam Console Client (SteamCMD) ist eine Kommandozeilen-Version des Steam-Clients (en). Hauptzweck: Installation und Aktualisierung dedizierter Server auf Steam via Kommandozeile.

Er funktioniert mit Spielen, die das SteamPipe (en)-Inhaltssystem verwenden.

Herunterladen von SteamCMD

Windows Windows

  1. Lade SteamCMD für Windows herunter: [1]
  2. Erstelle einen Ordner für SteamCMD. Beispiel: 🖿D:\steamcmd
  3. Entpacke den Inhalt der ZIP-Datei in den Ordner.
Note.pngBemerkung:Beim ersten Start werden mehrere Ordner und Dateien erstellt. Es wird empfohlen, Windows Executablesteamcmd.exe in einem 'install'-Ordner zu platzieren; dies ist jedoch optional.

Linux Linux

Erstelle ein Benutzerkonto namens steam, um SteamCMD sicher auszuführen und es vom Rest des Betriebssystems zu isolieren.

Warning.pngAchtung:Führe 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

Note.pngBemerkung:Wenn verfügbar, wird empfohlen, das SteamCMD-Paket aus den Repositories deiner Distribution zu installieren.
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
Note.pngBemerkung:Kein RPM-Paket ist für irgendeine auf Red Hat basierende Distribution verfügbar. Siehe manuelle Installation.
Arch Linux
git clone https://aur.archlinux.org/steamcmd.git
cd steamcmd
makepkg -si
Note.pngBemerkung:Du musst das base-devel Paket installiert haben, um makepkg auszuführen:
 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 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 Windows

Öffne eine Eingabeaufforderung und starte SteamCMD.

cd C:\steamcmd
steamcmd

Linux 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 macOS

Stub

Dieser Artikel ist unvollständig. Du kannst helfen, indem du ihn erweiterst.

Ö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.

Note.pngBemerkung:Aus Sicherheitsgründen wird empfohlen, ein neues Steam-Konto nur für deine dedizierten Server zu erstellen.
Note.pngBemerkung:Ein Benutzer kann nur einmal gleichzeitig angemeldet sein (sowohl im grafischen Client als auch bei SteamCMD-Anmeldungen).
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

Note.pngBemerkung:Wenn du dir unsicher über die appid für den Server, das Tool oder das Spiel bist, das du herunterladen möchtest, kannst du steamdb.info verwenden, um es zu finden.

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\

Warning.pngAchtung:Wenn du SteamCMD aus deiner Pfadumgebung ausführst oder es als Paket installiert hast, wird ein Fehler zurückgegeben, wenn du versuchst, . 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 (en)). Bitte überprüfe hier die Liste der dedizierten Server: Liste der dedizierten Server (en). 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
Icon-Bug.pngFehler:HLDS (appid 90) erfordert derzeit mehrere Durchläufe des Befehls 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.
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 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.

Note.pngBemerkung:Die Validierung wird alle Dateien überschreiben, die geändert wurden. Dies kann Probleme mit angepassten Servern verursachen. Wenn du zum Beispiel 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 (en) 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

Note.pngBemerkung:Beim Verwenden der -beta Option in der Befehlszeile muss sie auf eine spezielle Weise in Anführungszeichen gesetzt werden, z.B. +app_update "90 -beta beta".
Note.pngBemerkung:Wenn dies nicht funktioniert, versuche es stattdessen so: "+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
Note.pngBemerkung:Wenn du den Fehler 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

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 Dedicated Servers List (en).

Note.pngBemerkung:Aus Sicherheitsgründen wird empfohlen, ein neues Steam-Konto nur für deine dedizierten Server zu erstellen.
Warning.pngAchtung:Bitte benutze 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
Note.pngBemerkung: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.

  1. Öffne den Internet Explorer (IE).
  2. Klicke auf ExtrasInternetoptionen
  3. Klicke auf den Tab Verbindungen
  4. Unten solltest du LAN-Einstellungen sehen.
  5. Markiere das erste Kästchen (Einstellungen automatisch erkennen)
  6. 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 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.

Note.pngBemerkung:Aus irgendeinem Grund wird Counter-Strike Counter-Strike immer ebenfalls installiert.

Siehe auch