Skip to content

Setup Windows

ElGregor edited this page Aug 15, 2026 · 1 revision

Setup Windows

Home

Der Haupt-Host ist immer Linux — Windows kommt in zwei Rollen vor: als Client-Plattform für Spieler und als Admin-/Testmaschine, auf der die PowerShell-Skripte des Repos die Linux-Workflows spiegeln.

Windows-Spieler (Clients)

  • Im Project-Zomboid-Client den Server über den Server-Browser per IP:16261 (Spiel-Port, GAME_PORT, Repo-Default) suchen und mit dem Server-Passwort verbinden.
  • Voraussetzung: Client und Server laufen auf demselben Build-Zweig — Build 42 Stable. Seit B42.20 ist Stable der Default-Zweig in Steam, kein -beta-Opt-in nötig (Community-Quelle); Steam-Updates des Clients ggf. anhalten (Empfehlung docs/03-setup-windows-client.md).
  • Mods werden beim ersten Join automatisch vom Server/Workshop gezogen (Community-Quelle: Standard-Verhalten des Spiels; docs/03).
  • Bei „Workshop version mismatch": Steam → Project Zomboid → Eigenschaften → Dateien prüfen (1:1 aus docs/03-setup-windows-client.md).

Verbinden Schritt für Schritt:

  1. Project Zomboid starten und im Hauptmenü den Server-Browser („Join Server"/„Serverliste") öffnen.
  2. Da das Repo-Template Public=false setzt (Repo-Default, servertest.ini.tmpl), erscheint der Server nicht in der öffentlichen Internet-Liste — die Bedeutung der Option Public ist als „in der öffentlichen Serverliste listen" dokumentiert (Community-Quelle: pzwiki). Verbindung daher über die Favoriten/direkte IP.
  3. Server als Favorit mit der Adresse IP:16261 anlegen (Port = GAME_PORT, Repo-Default) und verbinden.
  4. Server-Passwort (SERVER_PASSWORD aus .env) eingeben. ADMIN_PASSWORD wird vom Server vorgehalten (Repo-Default der Variable, .env.example); der exakte Login-Weg als Admin ist in dieser Doku nicht verifiziert — die clientseitige Prozedur ist je nach Version unterschiedlich (Community-Quelle: unspezifisch).
  5. Erster Join: Der Client lädt alle Server-Mods automatisch aus dem Workshop (Community-Quelle: Standard-Verhalten des Spiels) — Ladezeit einplanen.

Hinweis zu In-Game-Meldungen: Vor geplanten Stops und Updates kündigt der Server den Termin per RCON-Countdown im Chat an (Repo-Verhalten, scripts/announce.sh). Wer als Spieler solche Countdown-Nachrichten sieht, hat also Zeit, sich zurückzuziehen — kein Crash, sondern die Update-Automatik des Linux-Haupt-Hosts.

Windows-Admin/Testmaschine

Die vier PowerShell-Skripte in scripts/windows/ spiegeln die Linux-Workflows. Voraussetzungen: PowerShell (vorinstalliert auf aktuellen Windows-Versionen) und eine Shell mit Admin-Rechten für Installation und Aufgabenplanung (Heuristik für die konkreten Rechte, abgeleitet aus den Schreiborten C:\ und dem Task Scheduler). Pfade sind oben in den Skripten anpassbar — die Defaults sind C:\steamcmd und C:\pzserver (Repo-Default, install.ps1/update.ps1). Daten- und Backup-Verzeichnis der Skripte: %USERPROFILE%\Zomboid bzw. C:\pzserver-backups (Repo-Default, backup.ps1/update.ps1).

install.ps1 — Installation

Zweck: Windows-Installation mit Parität zu install.sh (für Admin-Maschine oder Testserver). Aufruf (Heuristik — das Repo schreibt keine konkrete Aufrufzeile vor):

powershell -ExecutionPolicy Bypass -File scripts\windows\install.ps1

Verhalten (1:1 aus install.ps1): Fehlt steamcmd.exe, wird das SteamCMD-Archiv von der Steam-CDN heruntergeladen und nach C:\steamcmd entpackt. Danach installiert SteamCMD den Dedicated Server per anonymous-Login mit +app_update 380870 validate nach C:\pzserver (App-ID 380870 — so vom Repo verwendet). Das Skript endet mit dem Hinweis, UDP 16261+16262 eingehend freizugeben.

backup.ps1 — Backup

Zweck: Parität zu backup.sh. Aufruf (Heuristik — das Repo schreibt keine konkrete Aufrufzeile vor):

powershell -ExecutionPolicy Bypass -File scripts\windows\backup.ps1

Verhalten (1:1 aus backup.ps1): Packt %USERPROFILE%\Zomboid\Saves und %USERPROFILE%\Zomboid\Server als daily-<Zeitstempel>.zip nach C:\pzserver-backups. Rotation: von den daily-*.zip werden die 7 zuletzt geschriebenen behalten, ältere gelöscht (7-Archive-Retention, Repo-Verhalten backup.ps1).

update.ps1 — Update-Zyklus

Zweck: Parität zu update.sh als Sequenz Stop → Backup → Update → Start (Kopfzeile des Skripts; Healthcheck/Auto-Rollback wie unter Linux gibt es hier nicht — das Skript selbst führt nur die vier Schritte aus, Repo-Verhalten). Aufruf (Heuristik — das Repo schreibt keine konkrete Aufrufzeile vor):

powershell -ExecutionPolicy Bypass -File scripts\windows\update.ps1

Verhalten (1:1 aus update.ps1): Stoppt laufende ProjectZomboid*-Prozesse, schreibt ein pre-update-<Zeitstempel>.zip der Saves und Server-Configs nach C:\pzserver-backups, führt +app_update 380870 validate per SteamCMD aus und startet den Server über StartServer64.bat neu.

monitor.ps1 — Watchdog

Zweck: Parität zu monitor.sh als Crash-Watchdog.

Aufruf: per Windows-Aufgabenplanung (Task Scheduler) minütlich einplanen (Repo-Vorgabe, Skript-Kopfzeile). Zwei Wege:

  • GUI: Aufgabe anlegen, Aktion = powershell -ExecutionPolicy Bypass -File C:\pfad\zum\repo\scripts\windows\monitor.ps1, Trigger mit Wiederholung im 1-Minuten-Intervall (Heuristik für die konkrete Konfiguration).
  • Kommandozeile als Alternative (Heuristik — das Repo schreibt keine konkrete Einrichtung vor):
schtasks /Create /TN "PZ-Watchdog" /SC MINUTE /TR "powershell -ExecutionPolicy Bypass -File C:\pfad\zum\repo\scripts\windows\monitor.ps1"

Verhalten (1:1 aus monitor.ps1): Läuft kein Prozess namens ProjectZomboid*, startet das Skript C:\pzserver\StartServer64.bat neu.

Anders als monitor.sh (Linux, mit .planned-stop-Flag) kennt monitor.ps1 kein Flag für geplante Stops — ein minütlicher Watchdog würde einen bewusst gestoppenen Testserver sofort wieder hochfahren. Für geplante Arbeiten die Aufgabe daher vorher deaktivieren (Heuristik, abgeleitet aus dem Skript-Stand).

Pfade anpassen

Die PowerShell-Skripte halten ihre Pfade als Variablen im Kopf (jeweils 1:1 aus den Skripten):

Variable Default Skript
$SteamCmd C:\steamcmd install.ps1, update.ps1
$ServerDir C:\pzserver install.ps1, update.ps1
$BackupDir C:\pzserver-backups backup.ps1, update.ps1
$DataDir $env:USERPROFILE\Zomboid backup.ps1, update.ps1
Start-Datei C:\pzserver\StartServer64.bat update.ps1, monitor.ps1

Wer andere Ablageorte will, passt die Zeilen ganz oben im jeweiligen Skript an — vor dem ersten Aufruf (Vorgabe der Skriptköpfe: „Pfade oben in den Skripten anpassbar").

Parität und Unterschiede

Aspekt Linux (Haupt-Host) Windows (Admin/Test)
Init/Dienst systemd (zomboid.service, Restart=always, Repo-Default) Aufgabenplanung (Task Scheduler) ruft monitor.ps1 minütlich
Update-Pfad make update mit Healthcheck + Auto-Rollback (Repo-Verhalten) update.ps1: Stop → Backup → Update → Start, ohne Rollback-Automatik
Backup-Format tar.gz (backup.sh, Repo) zip per Compress-Archive (backup.ps1, Repo)
Backup-Rotation 7 täglich / 4 wöchentlich (Repo-Default, .env.example) 7 neueste daily-*.zip behalten (Repo-Verhalten backup.ps1)
Firewall ufw allow 16261/udp && sudo ufw allow 16262/udp (docs/02) Windows-Firewall: UDP 16261+16262 eingehend freigeben (install.ps1-Hinweis)
Pfade /opt/pzserver incl. Unterordner (Repo-Default, .env.example) C:\steamcmd, C:\pzserver, C:\pzserver-backups (Repo-Default, PS-Skripte)
Start des Servers systemd → start-server.sh StartServer64.bat (update.ps1/monitor.ps1)
Watchdog-Flag monitor.sh mit .planned-stop-Flag (Repo) kein Äquivalent in monitor.ps1 — geplante Stops müssen aus der Planung heraus vermieden werden (Repo-Stand)

Stolperfallen

Falle Symptom Abhilfe
PowerShell-ExecutionPolicy Skript startet nicht (Ausführung gesperrt) powershell -ExecutionPolicy Bypass -File … oder Richtlinie für den Admin setzen (Heuristik)
UDP 16261/16262 nicht freigegeben Clients finden den Testserver nicht Windows-Firewall-Regel für beide UDP-Ports (install.ps1-Hinweis); Details Ports-und-Netzwerk
Falsche Pfade Skripte schreiben ins „Nichts" oder finden steamcmd.exe nicht Pfade oben im jeweiligen Skript prüfen/anpassen (Vorgabe der Skripte)
Branch-Mismatch Join schlägt fehl / Version-Konflikt Client und Server auf B42 Stable halten (Community-Quelle); Dateien prüfen
Watchdog vs. Wartung Gestoppter Testserver startet sofort wieder monitor.ps1 kennt kein .planned-stop-Flag — Watchdog-Aufgabe vor Wartung deaktivieren (Heuristik)
Daten wo? Backups scheinen leer Die PS-Skripte sichern %USERPROFILE%\Zomboid, nicht C:\pzserver (Repo-Verhalten backup.ps1)

Weiter

  • Quickstart-Linux — der Haupt-Host bleibt Linux
  • Skripte-Referenz — alle Skripte inkl. PowerShell im Detail
  • Vertieft in Repo: docs/03-setup-windows-client.md, scripts/windows/

Clone this wiki locally