Files
Laufzettel/docs/issues/019-betrieb-release.md
Florian Wilde 9027229b55
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
docs(abnahme): Release v0.1.0 festhalten und Abnahme abschliessen
Tag und Gitea-Release stehen, das Anleitungs-PDF haengt daran. Damit sind 60 der
61 Abnahmekriterien abgehakt; offen bleibt allein der Lauf des
Proxmox-Einzeilers auf einem echten PVE-Host (#38).
2026-10-03 00:18:42 +02:00

3.7 KiB
Raw Permalink Blame History

#019 M14 – Betriebswege und Release v0.1.0

Status: erledigt Meilenstein: v0.1.0 Labels: phase-1, infra, docs Geschätzt: 10 h Tatsächlich: 5 h 25 min

Ziel

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

Abgeschlossen am 2026-09-26. Veröffentlicht als v0.1.0, Squash-Commit d97aebe, Anleitung als PDF beigelegt. Von den 61 Abnahmekriterien sind 60 abgehakt; offen bleibt allein der Lauf des Proxmox-Einzeilers auf einem echten PVE-Host, siehe #024.

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

  • Die Anleitung als PDF (pnpm docs:pdf) dem Gitea-Release als Datei beilegen — im Repo liegt sie nicht, sie entsteht aus den Kapiteln und Bildern

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