Der Proxmox-Einzeiler ist auf einem echten PVE-Host nie gelaufen — das ist eine Gegenpruefung und kein fehlendes Stueck: shellcheck-geprueft, im --dry-run gefahren, und der Installationsteil laeuft vollstaendig in einem debian:13-Container. Was fehlt, ist pct create auf einem Host, den diese Umgebung nicht hat. Die Pruefliste wartet unveraendert. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
66 lines
3.5 KiB
Markdown
66 lines
3.5 KiB
Markdown
# #024 Proxmox-Einzeiler auf einem echten PVE-Host gegenprüfen
|
||
|
||
**Status:** offen
|
||
**Im Tracker:** [#38](https://git.wilde-server.de/florian.wilde/Laufzettel/issues/38)
|
||
**Meilenstein:** v0.3.0
|
||
**Labels:** phase-2, infra
|
||
**Geschätzt:** 2 h **Tatsächlich:** –
|
||
|
||
## Ziel
|
||
|
||
`deploy/proxmox/laufzettel.sh` ist statisch geprüft und im Trockenlauf durchgelaufen, aber **nie auf
|
||
einem Proxmox-Host ausgeführt** — hier stand keiner zur Verfügung. Der Installationsteil
|
||
(`deploy/install.sh`) dagegen ist vollständig getestet: in `debian:13` ohne systemd und in einem
|
||
privilegierten Container mit echtem systemd 257, inklusive Aktualisierungslauf, `ProtectSystem`,
|
||
Sandbox und `/api/gesundheit`.
|
||
|
||
Ungeprüft ist damit genau die Klammer darum: `pct`, `pveam`, `pvesh` und `whiptail`.
|
||
|
||
Dieses Issue schließt, wenn der Einzeiler einmal auf einem echten PVE-Host gelaufen ist und die
|
||
Prüfliste in [docs/betrieb/proxmox.md](../betrieb/proxmox.md) („Was du beim ersten Lauf selbst
|
||
nachprüfen musst“) abgehakt ist. Die Liste ist der Prüfplan, nicht dieses Issue.
|
||
|
||
## Konkret ungeprüft
|
||
|
||
- [ ] `pveversion` erkennt PVE 8 und 9 richtig; Abbruch auf einem Nicht-PVE-Rechner
|
||
- [ ] `pveam available` / `pveam download` finden die Debian-13-Standardvorlage
|
||
- [ ] `pct create` nimmt die zusammengebauten Argumente an (Speicher mit Inhalt `rootdir`,
|
||
unprivilegiert, DHCP auf `vmbr0`)
|
||
- [ ] Die Ermittlung der nächsten freien CTID über `pvesh` stimmt mit dem, was PVE vergibt
|
||
- [ ] Der Container bekommt eine Adresse, und `CT_IP` wird richtig abgelesen — davon hängen `APP_URL`
|
||
und der Abschlussbildschirm ab
|
||
- [ ] `pct exec … bash -c "<Umgebung> bash /root/laufzettel-install.sh"` übergibt die Variablen so,
|
||
wie `install.sh` sie liest (`APP_URL`, `BIND_ADDR`, `LAUFZETTEL_REPO`, `LAUFZETTEL_ZWEIG`,
|
||
`LAUFZETTEL_PASSWORT_DATEI`)
|
||
- [ ] Das Erstpasswort wird aus `/root/laufzettel-erstpasswort` gelesen **und danach gelöscht**
|
||
- [ ] Der `whiptail`-Dialog ist auf einer PVE-Shell bedienbar (Standard und Erweitert)
|
||
- [ ] Der zweite Aufruf erkennt den Container am Hostnamen und aktualisiert statt anzulegen
|
||
- [ ] `--aktualisieren` bricht ab, wenn es keinen Container `laufzettel` gibt
|
||
- [ ] Die Ausgabe von `install.sh` erscheint im Terminal, ohne von einem Spinner überschrieben zu
|
||
werden
|
||
|
||
## Aufgaben
|
||
|
||
- [ ] Einzeiler auf einem PVE-Host fahren, Prüfliste abhaken
|
||
- [ ] Abweichungen als eigene Issues aufnehmen, nicht hier sammeln
|
||
- [ ] Nach dem erfolgreichen Lauf den Satz „Der `pct`-Teil ist ungetestet“ in
|
||
`docs/betrieb/proxmox.md` durch das Ergebnis ersetzen (PVE-Fassung, Datum)
|
||
- [ ] `docs/abnahme-mvp.md` Zeile 11 abhaken
|
||
|
||
## Akzeptanzkriterien
|
||
|
||
- [ ] Ein LXC, in dem `systemctl is-active laufzettel` „active“ meldet und `/api/gesundheit`
|
||
`status ok` liefert
|
||
- [ ] `pct exec <ctid> -- ss -ltn` zeigt keinen Port 5432
|
||
- [ ] Zweiter Aufruf: Daten, `APP_SECRET` und Datenbankpasswort unverändert
|
||
|
||
## Verschoben auf v0.3.0 (2026-10-11)
|
||
|
||
Stand bis hierher auf v0.2.0 und hat den Tag nicht aufgehalten, weil es eine **Gegenprüfung** ist
|
||
und kein fehlendes Stück: `deploy/proxmox/laufzettel.sh` ist `shellcheck`-geprüft und im
|
||
`--dry-run` gefahren, und der eigentliche Installationsteil (`deploy/install.sh`) läuft vollständig
|
||
in einem `debian:13`-Container — PostgreSQL, Bau, Migration, Seed, Dienststart.
|
||
|
||
Was fehlt, ist der `pct create`-Teil auf einem echten PVE-Host, und der verlangt einen Host, den
|
||
diese Umgebung nicht hat. Die Prüfliste steht oben; sie wartet unverändert.
|