-
Notifications
You must be signed in to change notification settings - Fork 0
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.
- 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:
- Project Zomboid starten und im Hauptmenü den Server-Browser („Join Server"/„Serverliste") öffnen.
- Da das Repo-Template
Public=falsesetzt (Repo-Default, servertest.ini.tmpl), erscheint der Server nicht in der öffentlichen Internet-Liste — die Bedeutung der OptionPublicist als „in der öffentlichen Serverliste listen" dokumentiert (Community-Quelle: pzwiki). Verbindung daher über die Favoriten/direkte IP. - Server als Favorit mit der Adresse
IP:16261anlegen (Port = GAME_PORT, Repo-Default) und verbinden. - Server-Passwort (
SERVER_PASSWORDaus.env) eingeben.ADMIN_PASSWORDwird 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). - 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.
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).
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.ps1Verhalten (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.
Zweck: Parität zu backup.sh. Aufruf (Heuristik — das Repo schreibt keine konkrete Aufrufzeile vor):
powershell -ExecutionPolicy Bypass -File scripts\windows\backup.ps1Verhalten (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).
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.ps1Verhalten (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.
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).
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").
| 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) |
| 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) |
- 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/
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