feat(betrieb): native Installation, Proxmox-Einzeiler und Abnahme
Zwei Wege in den Betrieb, beide so weit gefahren, wie es hier moeglich war. deploy/install.sh richtet Debian 13 in neun Schritten ein: PostgreSQL 17 hoert nur am Unix-Socket, der Dienstnutzer hat kein Login, die Geheimnisse entstehen im Zielsystem und liegen 0600 bei root. Die Umgebungsdatei wird nie ueberschrieben -- auch nicht beim Aktualisieren, sonst enden alle Sitzungen und die verschluesselten Bind-Passwoerter waeren unlesbar. deploy/proxmox/laufzettel.sh legt den Container an und ruft install.sh darin auf. Der pct-Teil ist ungetestet, weil kein PVE-Host zur Verfuegung stand; die Gegenprobe steht als Pruefliste in docs/betrieb/proxmox.md, das Folge-Issue ist #024. Die Abnahme gegen alle 61 Kriterien hat drei Zusagen ohne Deckung gefunden, alle behoben: der Healthcheck des Webdienstes konnte nie bestehen (busybox loest localhost nach ::1 auf, Next lauscht nur auf IPv4), die CI-Pipeline konnte in keinem Job gruen werden (kein LDAP-Dienst, kein gestarteter Server, kein shellcheck), und der README nannte fuer die Entwicklungsdatenbank den falschen Port. Closes #19
This commit is contained in:
@@ -30,7 +30,7 @@ der Wechsel eine Datenänderung und keine Migration.
|
||||
corepack enable pnpm
|
||||
pnpm install
|
||||
cp .env.example .env # APP_SECRET und Passwörter ausfüllen
|
||||
pnpm db:up # PostgreSQL auf 127.0.0.1:5433
|
||||
pnpm db:up # PostgreSQL auf 127.0.0.1:5434
|
||||
pnpm db:migrate
|
||||
pnpm db:seed
|
||||
pnpm dev # http://localhost:3000
|
||||
@@ -104,8 +104,9 @@ nc -z localhost 5432 && echo "FEHLER: offen" || echo "dicht"
|
||||
docker compose exec web nc -z postgres 5432 && echo "von innen erreichbar"
|
||||
```
|
||||
|
||||
Für die Entwicklung gibt es `docker-compose.dev.yml`, das PostgreSQL auf `5433` öffnet. Diese
|
||||
Datei ist nicht für den Betrieb gedacht.
|
||||
Für die Entwicklung gibt es `docker-compose.dev.yml`, das PostgreSQL auf `5434` öffnet — umstellbar
|
||||
über `DEV_DB_PORT`. 5432 ist oft lokal belegt und 5433 von einem anderen Projekt, daher dieser Port.
|
||||
Diese Datei ist nicht für den Betrieb gedacht.
|
||||
|
||||
### Reverse Proxy
|
||||
|
||||
@@ -127,8 +128,11 @@ Zurückspielen:
|
||||
gunzip -c sicherung-2026-09-24.sql.gz | docker compose exec -T postgres psql -U laufzettel laufzettel
|
||||
```
|
||||
|
||||
Gesichert werden muss nur die Datenbank — die App hält keinen veränderlichen Zustand auf der
|
||||
Platte. Das Volume heißt `laufzettel_datenbank`.
|
||||
Gesichert werden müssen **zwei** Dinge: die Datenbank (das Volume heißt `laufzettel_datenbank`; die
|
||||
App selbst hält keinen veränderlichen Zustand auf der Platte) **und die Geheimnisse aus der `.env`**.
|
||||
Ohne das alte `APP_SECRET` sind nach dem Zurückspielen alle gespeicherten LDAP-Bind-Passwörter
|
||||
unlesbar — und das merkt man erst beim nächsten Abgleich. Einzelheiten in
|
||||
[`docs/betrieb/sicherung.md`](docs/betrieb/sicherung.md).
|
||||
|
||||
## Anmeldung
|
||||
|
||||
@@ -207,7 +211,9 @@ Compose-Stand ab, statt mit Standardwerten zu starten.
|
||||
macht daraus ein PDF; jedem Release liegt es bei
|
||||
- [Architektur und Entscheidungen](docs/architektur.md)
|
||||
- [Austauschformat für Vorlagen](docs/vorlagen-format.md) — wie eine Vorlage als JSON aussieht
|
||||
- [Anbindung an authentik](docs/betrieb/authentik.md) — Inbetriebnahme, Proxmox und Reverse Proxy folgen mit #019
|
||||
- [Betrieb](docs/betrieb/) — [Inbetriebnahme mit Compose](docs/betrieb/inbetriebnahme.md),
|
||||
[nativ im Proxmox-LXC](docs/betrieb/proxmox.md), [Reverse Proxy](docs/betrieb/reverse-proxy.md),
|
||||
[Anbindung an authentik](docs/betrieb/authentik.md), [Sichern und Zurückspielen](docs/betrieb/sicherung.md)
|
||||
- [Konventionen](CLAUDE.md) — Sprache, Schichtung, feste Regeln
|
||||
- [Änderungen](CHANGELOG.md) · [Entwicklungstagebuch](docs/devlog.md)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user