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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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 mitlisten_addresses = ''(nur Unix-Socket), Node 24 aus dem NodeSource-Repo, corepack/pnpm, Dienstnutzerlaufzettelohne Login, Quellcode nach/opt/laufzettel,pnpm install,pnpm build,prisma migrate deploy,prisma db seedAPP_SECRETperopenssl rand -base64 48, Zufallspasswörter für Datenbank und Admin; Ablage in/etc/laufzettel/laufzettel.envmit Modus 0600 und Eigentümer rootlaufzettel.service: systemd-Unit für den Next-standalone-Server,User=laufzettel,EnvironmentFile=,NoNewPrivileges=yes,ProtectSystem=strict,PrivateTmp=yes,Restart=on-failuregit pull,pnpm build,migrate deploy,systemctl restart; Geheimnisse und Daten bleibendeploy/proxmox/laufzettel.sh: One-Liner für die Proxmox-Shell —set -Eeuo pipefail,trapmit Zeilennummer, farbige Ausgabe, Spinner, Prüfung auf PVE 8/9 und rootwhiptail-Dialog Standard gegen Erweitert; Standard: nächste freie CTID, Hostnamelaufzettel, Debian 13, 2 Kerne, 2 GB RAM, 8 GB Platte, unprivilegiert, DHCP aufvmbr0pveamholen,pct create, starten,deploy/install.shim Container ausführen--dry-run: gibt allepct-Aufrufe nur aus, ohne etwas anzulegendocs/betrieb/docs/betrieb/:inbetriebnahme.md,proxmox.md,reverse-proxy.md,authentik.md,sicherung.md(pg_dumpüber den Dienstnamen bzw. den Unix-Socket)pct-Teil hier nicht ausführen kanndocs/abnahme-mvp.mdabschließend durchgehen, Review-Agent gegen alle Kriterien, Befunde als IssuesCHANGELOG.mdfürv0.1.0mit Datum, Version inpackage.json, Tagv0.1.0, Gitea-Release mit Changelog-Auszug, Anleitung als PDF beigelegtAkzeptanzkriterien
docker run --rm debian:13mitdeploy/install.shinstalliert vollständig durch: Postgres läuft, Migration und Seed gelaufen, Dienst antwortet auf/api/gesundheitss -ltnzeigt 5432 nicht)deploy/install.shaktualisiert und löscht keine Datenbash deploy/proxmox/laufzettel.sh --dry-rungibt einen plausiblen, vollständigenpct create-Aufruf ausshellcheck --severity=warningüber alle Skripte ohne Befundwebschonpnpm pruefe:dokugrün,v0.1.0getaggt und als Gitea-Release veröffentlichtdocs/abnahme-mvp.mdabgehakt oder als Folge-Issue erfasstQuelle:
docs/issues/019-betrieb-release.md— dort gepflegt, hierher gespiegelt.