M14 – Betriebswege und Release v0.1.0 #19

Closed
opened 2026-09-24 20:44:44 +00:00 by florian.wilde · 0 comments
Owner

Status: offen
Meilenstein: v0.1.0
Labels: phase-1, infra, docs
Geschätzt: 10 h Tatsächlich: –

Ziel

Zwei erprobte Wege in den Betrieb und ein sauberes erstes Release.

Aufgaben

  • deploy/install.sh: native Installation auf Debian 13 — PostgreSQL 17 mit listen_addresses = '' (nur Unix-Socket), Node 24 aus dem NodeSource-Repo, corepack/pnpm, Dienstnutzer laufzettel ohne Login, Quellcode nach /opt/laufzettel, pnpm install, pnpm build, prisma migrate deploy, prisma db seed
  • Geheimnisse im Zielsystem erzeugen: APP_SECRET per openssl rand -base64 48, Zufallspasswörter für Datenbank und Admin; Ablage in /etc/laufzettel/laufzettel.env mit Modus 0600 und Eigentümer root
  • laufzettel.service: systemd-Unit für den Next-standalone-Server, User=laufzettel, EnvironmentFile=, NoNewPrivileges=yes, ProtectSystem=strict, PrivateTmp=yes, Restart=on-failure
  • Erneuter Aufruf aktualisiert statt neu anzulegen: git pull, pnpm build, migrate deploy, systemctl restart; Geheimnisse und Daten bleiben
  • deploy/proxmox/laufzettel.sh: One-Liner für die Proxmox-Shell — set -Eeuo pipefail, trap mit Zeilennummer, farbige Ausgabe, Spinner, Prüfung auf PVE 8/9 und root
  • whiptail-Dialog Standard gegen Erweitert; Standard: nächste freie CTID, Hostname laufzettel, Debian 13, 2 Kerne, 2 GB RAM, 8 GB Platte, unprivilegiert, DHCP auf vmbr0
  • Debian-Vorlage bei Bedarf per pveam holen, pct create, starten, deploy/install.sh im Container ausführen
  • --dry-run: gibt alle pct-Aufrufe nur aus, ohne etwas anzulegen
  • Abschlussbildschirm: URL, Admin-Kennung, erzeugtes Passwort, Hinweis auf Reverse Proxy und docs/betrieb/
  • docs/betrieb/: inbetriebnahme.md, proxmox.md, reverse-proxy.md, authentik.md, sicherung.md (pg_dump über den Dienstnamen bzw. den Unix-Socket)
  • Prüfliste für den Lauf auf echtem Proxmox, da ich den pct-Teil hier nicht ausführen kann
  • docs/abnahme-mvp.md abschließend durchgehen, Review-Agent gegen alle Kriterien, Befunde als Issues
  • Devlog-Phasenzusammenfassung: Gesamtstunden, Stunden je Meilenstein, größte Zeitfresser, Abweichung vom Plan
  • CHANGELOG.md für v0.1.0 mit Datum, Version in package.json, Tag v0.1.0, Gitea-Release mit Changelog-Auszug, Anleitung als PDF beigelegt

Akzeptanzkriterien

  • docker run --rm debian:13 mit deploy/install.sh installiert vollständig durch: Postgres läuft, Migration und Seed gelaufen, Dienst antwortet auf /api/gesundheit
  • Im nativen Weg lauscht PostgreSQL auf keinem TCP-Port (ss -ltn zeigt 5432 nicht)
  • Ein zweiter Lauf von deploy/install.sh aktualisiert und löscht keine Daten
  • bash deploy/proxmox/laufzettel.sh --dry-run gibt einen plausiblen, vollständigen pct create-Aufruf aus
  • shellcheck --severity=warning über alle Skripte ohne Befund
  • Im Compose-Weg ist die Datenbank vom Host nicht erreichbar, aus web schon
  • pnpm pruefe:doku grün, v0.1.0 getaggt und als Gitea-Release veröffentlicht
  • Alle Kriterien aus docs/abnahme-mvp.md abgehakt oder als Folge-Issue erfasst

Quelle: docs/issues/019-betrieb-release.md — dort gepflegt, hierher gespiegelt.

**Status:** offen **Meilenstein:** v0.1.0 **Labels:** phase-1, infra, docs **Geschätzt:** 10 h **Tatsächlich:** – ## Ziel Zwei erprobte Wege in den Betrieb und ein sauberes erstes Release. ## Aufgaben - [ ] `deploy/install.sh`: native Installation auf Debian 13 — PostgreSQL 17 mit `listen_addresses = ''` (nur Unix-Socket), Node 24 aus dem NodeSource-Repo, corepack/pnpm, Dienstnutzer `laufzettel` ohne Login, Quellcode nach `/opt/laufzettel`, `pnpm install`, `pnpm build`, `prisma migrate deploy`, `prisma db seed` - [ ] Geheimnisse im Zielsystem erzeugen: `APP_SECRET` per `openssl rand -base64 48`, Zufallspasswörter für Datenbank und Admin; Ablage in `/etc/laufzettel/laufzettel.env` mit Modus 0600 und Eigentümer root - [ ] `laufzettel.service`: systemd-Unit für den Next-standalone-Server, `User=laufzettel`, `EnvironmentFile=`, `NoNewPrivileges=yes`, `ProtectSystem=strict`, `PrivateTmp=yes`, `Restart=on-failure` - [ ] Erneuter Aufruf aktualisiert statt neu anzulegen: `git pull`, `pnpm build`, `migrate deploy`, `systemctl restart`; Geheimnisse und Daten bleiben - [ ] `deploy/proxmox/laufzettel.sh`: One-Liner für die Proxmox-Shell — `set -Eeuo pipefail`, `trap` mit Zeilennummer, farbige Ausgabe, Spinner, Prüfung auf PVE 8/9 und root - [ ] `whiptail`-Dialog Standard gegen Erweitert; Standard: nächste freie CTID, Hostname `laufzettel`, Debian 13, 2 Kerne, 2 GB RAM, 8 GB Platte, unprivilegiert, DHCP auf `vmbr0` - [ ] Debian-Vorlage bei Bedarf per `pveam` holen, `pct create`, starten, `deploy/install.sh` im Container ausführen - [ ] `--dry-run`: gibt alle `pct`-Aufrufe nur aus, ohne etwas anzulegen - [ ] Abschlussbildschirm: URL, Admin-Kennung, erzeugtes Passwort, Hinweis auf Reverse Proxy und `docs/betrieb/` - [ ] `docs/betrieb/`: `inbetriebnahme.md`, `proxmox.md`, `reverse-proxy.md`, `authentik.md`, `sicherung.md` (`pg_dump` über den Dienstnamen bzw. den Unix-Socket) - [ ] Prüfliste für den Lauf auf echtem Proxmox, da ich den `pct`-Teil hier nicht ausführen kann - [ ] `docs/abnahme-mvp.md` abschließend durchgehen, Review-Agent gegen alle Kriterien, Befunde als Issues - [ ] Devlog-Phasenzusammenfassung: Gesamtstunden, Stunden je Meilenstein, größte Zeitfresser, Abweichung vom Plan - [ ] `CHANGELOG.md` für `v0.1.0` mit Datum, Version in `package.json`, Tag `v0.1.0`, Gitea-Release mit Changelog-Auszug, Anleitung als PDF beigelegt ## Akzeptanzkriterien - [ ] `docker run --rm debian:13` mit `deploy/install.sh` installiert vollständig durch: Postgres läuft, Migration und Seed gelaufen, Dienst antwortet auf `/api/gesundheit` - [ ] Im nativen Weg lauscht PostgreSQL auf keinem TCP-Port (`ss -ltn` zeigt 5432 nicht) - [ ] Ein zweiter Lauf von `deploy/install.sh` aktualisiert und löscht keine Daten - [ ] `bash deploy/proxmox/laufzettel.sh --dry-run` gibt einen plausiblen, vollständigen `pct create`-Aufruf aus - [ ] `shellcheck --severity=warning` über alle Skripte ohne Befund - [ ] Im Compose-Weg ist die Datenbank vom Host nicht erreichbar, aus `web` schon - [ ] `pnpm pruefe:doku` grün, `v0.1.0` getaggt und als Gitea-Release veröffentlicht - [ ] Alle Kriterien aus `docs/abnahme-mvp.md` abgehakt oder als Folge-Issue erfasst --- Quelle: `docs/issues/019-betrieb-release.md` — dort gepflegt, hierher gespiegelt.
florian.wilde added this to the v0.1.0 milestone 2026-09-24 20:44:44 +00:00
florian.wilde added the phase-1docsinfra labels 2026-09-24 20:44:44 +00:00
Sign in to join this conversation.