Skip to content

SteamCMD Referenz

ElGregor edited this page Aug 15, 2026 · 1 revision

SteamCMD-Referenz

Home · Zurück: Quickstart-Linux

SteamCMD ist Valves Kommandozeilen-Client für Dedicated-Server-Downloads. Dieses Repo setzt ihn für Installation und Updates ein — hier die Referenz zu Befehlen, App-IDs und typischen Fehlern.

Grundlagen

  • SteamCMD = Valves offizieller Kommandozeilen-Client zum Herunterladen von Dedicated-Server-Binärdateien ohne Steam-Client (Community-Quelle: Valve-Dokumentation zu SteamCMD).
  • App-ID 380870 = „Project Zomboid Dedicated Server" — genau diese ID laden install.sh und update.sh per +app_update 380870 validate (Repo-Default, 1:1 aus beiden Skripten).
  • App-ID 108600 = Project Zomboid (Spiel) — sie ist die Workshop-App, unter der Workshop-Content für PZ-Mods heruntergeladen wird (Community-Quelle: PZ-Community-Doku/Workshop-Praxis).
  • Der Login ist anonym: +login anonymous (Repo-Default; Anonymous-Login funktioniert für Dedicated Server, Community-Quelle).

Installation

Die im Repo verwendete Methode (1:1 aus scripts/install.sh): SteamCMD wird als tar.gz von der Steam-CDN geholt und nach ${STEAMCMD_DIR} entpackt — und zwar nur, wenn weder steamcmd im PATH noch ${STEAMCMD_DIR}/steamcmd.sh existiert:

mkdir -p "${STEAMCMD_DIR}"
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" \
  | tar -xz -C "${STEAMCMD_DIR}"

(Repo-Default; STEAMCMD_DIR liegt mit /opt/pzserver/steamcmd im .env.example-Default.)

Hinweis zu 32-bit-Bibliotheken: SteamCMD ist ein 32-bit-Programm und braucht entsprechende Bibliotheken (z. B. lib32gcc-s1 auf Debian/Ubuntu) — diese installiert das Repo-Skript nicht mit und sie sind eine separate Systemvoraussetzung (Community-Quelle: Valve-SteamCMD-Doku / Community-Konsens).

Befehlsreferenz

Befehl Wirkung
+force_install_dir <dir> Zielverzeichnis für den Download setzen
+login anonymous Anonymer Login (für Dedicated Server ausreichend)
+app_update 380870 validate Dedicated Server herunterladen/aktualisieren; validate prüft alle Dateien
+workshop_download_item 108600 <ID> Workshop-Item (Mod) der App 108600 herunterladen
+quit SteamCMD beenden

Aufruf im Repo-Kontext: Das Repo nutzt nie steamcmd aus dem PATH, sondern immer die eigene Kopie unter ${STEAMCMD_DIR}/steamcmd.sh (1:1 aus install.sh/update.sh).

Erstinstallation von Hand

Entspricht dem, was scripts/install.sh automatisch tut (Repo-Default, zusammengesetzt aus den Skript-Schritten):

# SteamCMD anlegen (nur wenn noch nicht vorhanden)
mkdir -p "${STEAMCMD_DIR}" "${PZ_SERVER_DIR}" "${PZ_DATA_DIR}" "${BACKUP_DIR}"
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" \
  | tar -xz -C "${STEAMCMD_DIR}"

# Server herunterladen und validieren
"${STEAMCMD_DIR}/steamcmd.sh" \
  +force_install_dir "$PZ_SERVER_DIR" \
  +login anonymous \
  +app_update 380870 validate \
  +quit

Im Regelbetrieb dafür sudo make install benutzen — es legt zusätzlich Verzeichnisse an und rendert die Configs (siehe Makefile-Referenz).

Manuelles Update

Komplettes Beispiel eines manuellen Updates — identisch zum Aufruf in update.sh (Repo-Default, 1:1):

"${STEAMCMD_DIR}/steamcmd.sh" \
  +force_install_dir "$PZ_SERVER_DIR" \
  +login anonymous \
  +app_update 380870 validate \
  +quit

Im Regelbetrieb dafür make update benutzen: Es kündigt den Stop an, sichert vorher und rollt bei Fehlern zurück (siehe Updates-und-Rollback und Makefile-Referenz).

Idempotenz und validate

  • Alle SteamCMD-Schritte sind wiederholbar (idempotent): Ein erneuter +app_update lädt nur Differenzen — dieselbe Eigenschaft nennt das Repo für install.sh („mehrfach ausführbar", Skriptkopf, Repo-Default).
  • validate vergleicht alle Dateien gegen die Steam-Manifeste und lädt beschädigte/fehlende Dateien neu — deshalb ist es bei Update-Problemen der erste Griff (Wirkung: Community-Quelle Valve-Doku; Empfehlung hier: Heuristik).

Workshop-Downloads

Manueller Download eines Mods (Community-Quelle: PZ-Community-Doku):

steamcmd +force_install_dir <install-dir> +login anonymous \
  +workshop_download_item 108600 <WorkshopID> +quit

Die Dateien landen unter <install>/steamapps/workshop/content/108600/<ID>/ (Community-Quelle: SteamCMD-/PZ-Community-Doku).

Wie das Repo Mods bezieht (Clone-Befund, 1:1): install.sh und update.sh rufen nur +app_update 380870 auf — das lädt die Server-Binärdateien. Ein expliziter +workshop_download_item-Aufruf steht in keinem der beiden Skripte. Die Modliste (WorkshopItems=...) wird aus mods.yaml generiert (make mods); ob der Server die Workshop-Items selbständig nachlädt, ist über die INI-Zeile gesteuert und nicht Teil der SteamCMD-Skriptlogik (Heuristik: Verhalten abgeleitet aus dem Clone). Für manuelle Downloads gilt das Beispiel oben.

steam_appid.txt

Eine Datei steam_appid.txt mit dem Inhalt 108600 im Server-Verzeichnis behebt den Fehler „Illegal termination of worker thread" (Community-Quelle: Steam-Diskussionen).

Clone-Befund: install.sh legt diese Datei nicht an — wer auf den Fehler stößt, erstellt sie manuell:

echo 108600 > "${PZ_SERVER_DIR}/steam_appid.txt"

B42-Branch

Build 42 stable ist seit B42.20 der Default-Branch in Steam — ein -beta-Parameter ist NICHT nötig (Community-Quelle: Branch-Historie / Community-Konsens). Ein versehentliches +app_update 380870 -beta b42unstable (oder ähnliches) würde den Server auf einen Instabilen-Zweig ziehen — die Repo-Skripte enthalten daher bewusst kein -beta (Repo-Default; Warnung: Finger weg von -beta, solange der Stable-Betrieb gewünscht ist).

Typische Fehler

Fehler Ursache Fix
SteamCMD startet nicht / „Missing 32-bit libraries" 32-bit-Bibliotheken fehlen (Community-Quelle: Valve-Doku) sudo apt install lib32gcc-s1 (Debian/Ubuntu; Community-Quelle)
Failed to install app '380870' Abgebrochener/unvollständiger Download Befehl wiederholen — SteamCMD setzt inkrementell fort; validate erzwingt Vollprüfung (Heuristik)
Timeouts / „Downloading update"-Hänger Netzwerk- oder CDN-Probleme Retry; notfalls später erneut ausführen (Heuristik)
Installationsabbruch wegen Speicher Server + Workshop-Content brauchen Platz auf ${PZ_SERVER_DIR}/${STEAMCMD_DIR} Platz prüfen/schaffen (Heuristik)
„Illegal termination of worker thread" beim Start Fehlende steam_appid.txt Datei mit Inhalt 108600 anlegen — siehe Abschnitt oben (Community-Quelle: Steam-Diskussionen)

Weiter: Updates-und-Rollback

Vertieft in Repo: scripts/install.sh und scripts/update.sh (autoritative Aufrufe).

Clone this wiki locally