Proxmox-Einzeiler auf einem echten PVE-Host gegenprüfen #38

Open
opened 2026-09-26 13:57:53 +00:00 by florian.wilde · 0 comments
Owner

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 („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

Quelle im Repo: docs/issues/024-proxmox-echtlauf.md

## 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 --- Quelle im Repo: `docs/issues/024-proxmox-echtlauf.md`
florian.wilde added this to the v0.2.0 milestone 2026-09-26 13:57:53 +00:00
florian.wilde added the phase-2infra labels 2026-09-26 13:57:53 +00:00
Sign in to join this conversation.