Blocker behoben: Ich hatte ein dauerhaftes API-Token vorausgesetzt - das gibt es in OpenCRM nicht. Zugangstoken leben 15 Minuten, der Gegenbuch-Container waere nach dem ersten Durchlauf gestorben. Aufgefallen erst durch die Frage des Betreibers, woher er den Token nimmt. Loesung: Das Gegenbuch meldet sich bei jedem Lauf selbst an, mit einem eigenen Benutzerkonto, dessen Rolle ausschliesslich audit:read traegt. Damit kann es nur Pruefwerte lesen - keine Kundendaten, keine Aenderungen. CRM_TOKEN bleibt fuer Tests moeglich, ist aber nicht mehr der Normalweg. Fehlerfaelle (falsches Passwort, Anmelde-Bremse, CRM nicht erreichbar) werden unterschieden und im Klartext gemeldet. .env.example nennt jetzt zu jedem Schalter die gueltigen Werte - bisher liess sich nur raten, ob es prod oder production heisst. Einschliesslich des Falls "erst nur Staging testen, Prod spaeter dazunehmen". Beide READMEs um "Zugang einrichten" ergaenzt: Rolle mit nur audit:read, Benutzer damit, Zugangsdaten in die .env. Mit dem Hinweis, dass jede Anmeldung im Audit-Log erscheint - gewollt, denn so faellt auch auf, wenn das Gegenbuch aufhoert zu arbeiten. Verifiziert gegen eine Attrappe, die wie das echte CRM eine Anmeldung verlangt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
75 lines
3.0 KiB
Bash
75 lines
3.0 KiB
Bash
# ============================================================
|
||
# Gegenbuch für OpenCRM
|
||
# ============================================================
|
||
# Diese Datei gehört auf den Gegenbuch-Rechner – NICHT auf den CRM-Server.
|
||
#
|
||
# Was hier passiert: Der Rechner holt regelmäßig einen kurzen Kontrollwert von
|
||
# OpenCRM ab und schreibt ihn in ein Buch, das nur hier liegt. Wird später im
|
||
# CRM etwas nachträglich verändert, widerspricht das dem Buch.
|
||
|
||
|
||
# ============================================================
|
||
# Welche Bücher sollen laufen?
|
||
# ============================================================
|
||
# Gültige Werte: prod | staging | prod,staging | (leer = keins)
|
||
# Genau so geschrieben – nicht "production" oder "test".
|
||
#
|
||
# Nur Staging testen: COMPOSE_PROFILES=staging
|
||
# Später Prod dazunehmen: COMPOSE_PROFILES=prod,staging
|
||
# Danach: docker compose up -d (der laufende Dienst bleibt unberührt)
|
||
COMPOSE_PROFILES=staging
|
||
|
||
# Steht in den Einträgen des Buchs. Beliebiger Text, nur Kosmetik.
|
||
NOTAR_EMAIL=gegenbuch@example.de
|
||
|
||
|
||
# ============================================================
|
||
# Produktion
|
||
# ============================================================
|
||
# Adresse der OpenCRM-Instanz, von der geholt wird.
|
||
# Gültig: vollständige URL mit https:// und OHNE Schrägstrich am Ende.
|
||
PROD_CRM_URL=https://crm.example.de
|
||
|
||
# Zugang: ein eigenes Benutzerkonto im CRM, das NUR das Recht "audit:read" hat.
|
||
# Wie man es anlegt, steht in der README unter "Zugang einrichten".
|
||
#
|
||
# Das Gegenbuch meldet sich damit bei jedem Durchlauf selbst an. Ein fest
|
||
# hinterlegtes Token gibt es bewusst nicht – Zugangstoken laufen nach
|
||
# 15 Minuten ab und wären beim nächsten Durchlauf längst ungültig.
|
||
PROD_CRM_EMAIL=gegenbuch@deine-domain.de
|
||
PROD_CRM_PASSWORD=
|
||
|
||
# Wie oft geprüft wird, in Sekunden.
|
||
# Gültig: ganze Zahl > 0. Üblich: 3600 (stündlich), 900 (viertelstündlich)
|
||
# Kürzer heißt: kleineres Zeitfenster, in dem eine Änderung unbemerkt bliebe.
|
||
PROD_INTERVAL=3600
|
||
|
||
# Beim ALLERERSTEN Start einmalig setzen, danach wieder leeren.
|
||
# Gültige Werte: true | (leer)
|
||
# Grund: Die erste Eintragung legt fest, was als Ausgangszustand gilt – das
|
||
# soll nicht versehentlich passieren.
|
||
PROD_GENESIS_ACK=
|
||
|
||
# Normalerweise leer lassen.
|
||
# Gültige Werte: true | (leer)
|
||
# Nur nötig, wenn das Datenverzeichnis verlorenging (z. B. gelöscht) UND du
|
||
# geklärt hast, warum. Siehe README, Abschnitt "Wenn das Gedächtnis fehlt".
|
||
PROD_ADOPT_ACK=
|
||
|
||
# Wo das Buch liegt – relativ zu diesem Verzeichnis.
|
||
# DIESES VERZEICHNIS GEHÖRT INS BACKUP (enthält Buch und Signaturschlüssel).
|
||
PROD_DIR=./data/prod
|
||
|
||
|
||
# ============================================================
|
||
# Test / Staging
|
||
# ============================================================
|
||
# Gleiche Regeln wie oben, eigenes Konto und eigenes Verzeichnis.
|
||
STAGING_CRM_URL=https://staging.example.de
|
||
STAGING_CRM_EMAIL=gegenbuch@deine-domain.de
|
||
STAGING_CRM_PASSWORD=
|
||
STAGING_INTERVAL=3600
|
||
STAGING_GENESIS_ACK=
|
||
STAGING_ADOPT_ACK=
|
||
STAGING_DIR=./data/staging
|