Gegenbuch: Daten im Projektverzeichnis statt in Docker-Volumes
Projektkonvention wie beim Hauptstack: Bind-Mount auf tools/audit-notary/data/<instanz>/ statt benannter Volumes. Wichtiger Nebeneffekt, der vorher fehlte: Das Verzeichnis war nicht von der Versionsverwaltung ausgenommen - Signaturschluessel und Gegenbuch waeren beim naechsten Commit im Repository gelandet. Jetzt ist der Inhalt ignoriert, waehrend die Verzeichnisse selbst ueber .gitkeep bestehen bleiben. Letzteres ist noetig, weil Docker fehlende Bind-Mount-Ziele als root anlegt und der Container als UID 1000 laeuft - der erste Start waere sonst am Schreibrecht gescheitert. Verifiziert mit echtem docker compose gegen eine CRM-Attrappe: Buch, Schluessel, Beobachtungsspeicher und status.txt landen unter tools/audit-notary/data/prod/, Normalbetrieb exit 0. Testcontainer, Image, Attrappe und .env danach entfernt; nur die drei .gitkeep bleiben. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+12
@@ -36,6 +36,18 @@ data/factory-defaults/*
|
||||
data/backups/*
|
||||
!data/backups/.gitkeep
|
||||
|
||||
# Gegenbuch (laeuft auf eigener Maschine): enthaelt das Buch selbst, den
|
||||
# Signaturschluessel und den Beobachtungsspeicher. Nichts davon gehoert ins
|
||||
# Repository - der Schluessel schon gar nicht.
|
||||
tools/audit-notary/data/*
|
||||
!tools/audit-notary/data/.gitkeep
|
||||
!tools/audit-notary/data/prod/
|
||||
tools/audit-notary/data/prod/*
|
||||
!tools/audit-notary/data/prod/.gitkeep
|
||||
!tools/audit-notary/data/staging/
|
||||
tools/audit-notary/data/staging/*
|
||||
!tools/audit-notary/data/staging/.gitkeep
|
||||
|
||||
# Factory-Defaults-Drop-Box (Export-ZIPs zwischen dev/prod hin und her)
|
||||
factory-exports/*
|
||||
!factory-exports/.gitkeep
|
||||
|
||||
@@ -125,6 +125,12 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
exit 0; **Eintrag nachtraeglich veraendert → Alarm exit 2**; **Eintraege
|
||||
geloescht (maxId geschrumpft) → Alarm exit 2**; Siegel verschwunden →
|
||||
Alarm. Testartefakte und Image geloescht.
|
||||
- **Daten im Projektverzeichnis, keine Docker-Volumes** (Projektkonvention):
|
||||
Bind-Mount auf `tools/audit-notary/data/<instanz>/`. Der Inhalt ist per
|
||||
`.gitignore` ausgenommen – dort liegt der Signaturschluessel –, die
|
||||
Verzeichnisse selbst bestehen ueber `.gitkeep`. Ohne das haette Docker sie
|
||||
beim ersten Start als `root` angelegt und der Container (UID 1000) haette
|
||||
nicht schreiben koennen.
|
||||
- Behoben beim Bauen: `useradd -u 1000 || true` verschluckte, dass UID 1000
|
||||
im Node-Image bereits vergeben ist – der Container startete gar nicht.
|
||||
Jetzt laeuft er als der vorhandene Benutzer `node`.
|
||||
|
||||
@@ -55,10 +55,24 @@ Das Token kann ausschließlich Prüfwerte lesen: keine Kundendaten, keine
|
||||
Der Signaturschlüssel wird beim ersten Start **auf dem Gegenbuch-Rechner
|
||||
erzeugt** und verlässt ihn nie.
|
||||
|
||||
### Was ins Backup gehört
|
||||
### Wo die Daten liegen
|
||||
|
||||
Das Datenverzeichnis (`./data/prod` bzw. `./data/staging`). Darin liegen das
|
||||
Buch, der Schlüssel und der Beobachtungsspeicher. Geht es verloren, beginnt die
|
||||
Im Projektverzeichnis, nicht in Docker-Volumes:
|
||||
|
||||
```
|
||||
tools/audit-notary/data/prod/
|
||||
buch/ das Gegenbuch selbst (ein Git-Repository)
|
||||
schluessel/ Signaturschlüssel – wird beim ersten Start erzeugt
|
||||
beobachtungen.jsonl was zuletzt gesehen wurde
|
||||
status.txt Ergebnis des letzten Durchlaufs
|
||||
```
|
||||
|
||||
Der Inhalt ist vom Repository ausgenommen – der Signaturschlüssel gehört dort
|
||||
nicht hinein. Die Verzeichnisse selbst sind über `.gitkeep` vorhanden, damit
|
||||
sie nach einem `git clone` schon existieren und Docker sie nicht als `root`
|
||||
anlegt.
|
||||
|
||||
**Ins Backup gehört genau dieses Verzeichnis.** Geht es verloren, beginnt die
|
||||
Beobachtung von vorn – und der nächste Lauf sagt das ausdrücklich, statt „alles
|
||||
gut" zu melden.
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
Hier liegen die Gegenbuch-Daten (je Instanz ein Unterverzeichnis):
|
||||
|
||||
data/prod/ Buch, Signaturschlüssel, Beobachtungsspeicher, status.txt
|
||||
data/staging/ dasselbe für die Testinstanz
|
||||
|
||||
Der Inhalt wird bewusst NICHT im Repository geführt – er enthält den
|
||||
Signaturschlüssel. Dieses Verzeichnis gehört ins Backup.
|
||||
@@ -0,0 +1,3 @@
|
||||
Gegenbuch-Daten der Produktivinstanz.
|
||||
Inhalt wird nicht im Repository gefuehrt (enthaelt den Signaturschluessel).
|
||||
Dieses Verzeichnis gehoert ins Backup.
|
||||
@@ -0,0 +1,2 @@
|
||||
Gegenbuch-Daten der Testinstanz.
|
||||
Inhalt wird nicht im Repository gefuehrt.
|
||||
Reference in New Issue
Block a user