-
Notifications
You must be signed in to change notification settings - Fork 0
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.
- 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.shundupdate.shper+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).
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).
| 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).
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 \
+quitIm Regelbetrieb dafür sudo make install benutzen — es legt zusätzlich
Verzeichnisse an und rendert die Configs (siehe Makefile-Referenz).
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 \
+quitIm 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).
- Alle SteamCMD-Schritte sind wiederholbar (idempotent): Ein erneuter
+app_updatelädt nur Differenzen — dieselbe Eigenschaft nennt das Repo fürinstall.sh(„mehrfach ausführbar", Skriptkopf, Repo-Default). -
validatevergleicht 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).
Manueller Download eines Mods (Community-Quelle: PZ-Community-Doku):
steamcmd +force_install_dir <install-dir> +login anonymous \
+workshop_download_item 108600 <WorkshopID> +quitDie 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.
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"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).
| 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).
Labels: Community-Quelle = extern belegt (Herkunft in Klammern, z. B. pzwiki, Steam-Diskussionen, GCP-Preisliste) · Repo-Default = steht genau so im Repo (Template, Skript oder .env.example) · Heuristik = begründete Empfehlung dieses Projekts, nicht extern verifiziert.
The Indie Stone (TIS) publiziert keine offiziellen Storage-/IOPS-/Performance-Specs — Zahlen in diesem Wiki nie als TIS-Anforderung lesen.
Inhalte zielen auf den B42-Stable-Branch: seit B42.20 der Default-Zweig in Steam, kein -beta-Opt-in nötig (Community-Quelle).
Details zu Labels, Quellen und Redaktionsregeln: Konventionen-und-Quellen.
Einstieg
Referenz
- Makefile-Referenz
- Cheatsheet-Tagesbetrieb
- ENV-Variablen
- Server-Konfiguration
- Admin-Befehle
- Mods-Referenz
- Spawn-System
- Skripte-Referenz
- systemd-Referenz
- Ports-und-Netzwerk
- SteamCMD-Referenz
Betrieb
- Wartung-und-Automatik
- Backup-und-Restore
- Updates-und-Rollback
- Monitoring-und-Alerts
- Sicherheit-und-Hardening
- Docker-Betrieb
- GCP-Failover
Tiefenwissen
- Modding-Workflow
- Performance-Guide
- Storage-und-Map-Streaming
- Hardware-Empfehlungen
- Troubleshooting
- Runbook-Raven-Creek
Meta