From af9686545291fca49f878bfbc4995a8fa91ccef6 Mon Sep 17 00:00:00 2001 From: Schalli Date: Tue, 11 Aug 2026 14:38:56 +0200 Subject: [PATCH] docs: backlog the compose drift between repo and test server /opt/tessera is not a working copy -- the compose file there is maintained by hand, and the deploy path only pulls images. Two consequences showed up on the same day: the renamed encryption key never reached the container although it was in the server .env, and the "refuse to start without a key" guard does not apply on alpha at all, because it only exists in the repository file. The item deliberately stops short of proposing a fix to apply: it first asks why the file is hand-maintained, since it may carry host-specific settings the repository lacks, and moving to a checkout blindly would break the running system. Co-Authored-By: Claude Opus 5 (1M context) --- ...-08-11-compose-datei-auf-server-driftet.md | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .planning/todos/pending/2026-08-11-compose-datei-auf-server-driftet.md diff --git a/.planning/todos/pending/2026-08-11-compose-datei-auf-server-driftet.md b/.planning/todos/pending/2026-08-11-compose-datei-auf-server-driftet.md new file mode 100644 index 0000000..8609c79 --- /dev/null +++ b/.planning/todos/pending/2026-08-11-compose-datei-auf-server-driftet.md @@ -0,0 +1,58 @@ +--- +created: 2026-08-11 +title: Compose-Datei auf dem Testserver ist eine handgepflegte Kopie und driftet vom Repository ab +area: infra +severity: major +trigger: bevor eine zweite Installation (Kunde oder Produktivsystem) aufgesetzt wird +files: + - docker-compose.yml + - docker-compose.prod.yml + - /opt/tessera/docker-compose.yml (auf 192.168.13.12, nicht im Repository) +--- + +## Problem + +`/opt/tessera` auf dem Testserver (192.168.13.12) ist **keine** Git-Arbeitskopie — +dort liegt eine von Hand gepflegte `docker-compose.yml`. Der Deploy-Weg holt nur +die Images aus der Registry; Aenderungen an den Compose-Dateien im Repository +kommen dort nie an. + +Am 2026-08-11 konkret aufgefallen: Der umbenannte Verschluesselungsschluessel +(`TESSERA_ENCRYPTION_KEY`, Commit f574884) wurde in die `.env` auf dem Server +eingetragen, kam aber nicht im Container an, weil die dortige Compose-Datei die +Variable gar nicht durchreicht. Die Anwendung fiel deshalb auf den alten Namen +zurueck und protokollierte die Veraltet-Warnung. Behoben durch eine +Hand-Aenderung an der Server-Datei — was das Problem genau wiederholt. + +Zweiter, wichtigerer Effekt: die im selben Zug eingebaute Absicherung "Stack +startet nicht ohne Schluessel" (Commit 7bda56d) greift auf alpha **nicht**, weil +sie nur in der Repository-Datei steht. Beide Dateien laufen seit dem 2026-08-11 +inhaltlich auseinander, und niemand merkt es, bis etwas nicht tut. + +Fuer eine Kundeninstallation heisst das: aufgesetzt wird nach dem Repository, +alpha laeuft nach seiner eigenen Kopie. Was auf alpha funktioniert, ist damit +kein Beleg dafuer, dass die ausgelieferte Konfiguration funktioniert — und +genau dafuer ist ein Testsystem da. + +## Solution + +Noch offen, drei denkbare Wege — Entscheidung gehoert vor die Umsetzung: + +1. **`/opt/tessera` zur Arbeitskopie machen.** `git clone`, danach zieht ein + `git pull` Compose-Datei und Deploy-Anleitung mit. Einfachster Weg, aber der + Server braucht dann Lesezugriff auf das Repository, und lokale Anpassungen + (die es geben mag) muessen vorher sichtbar gemacht werden. +2. **Compose-Datei als Artefakt ausliefern.** Die CI legt die passende Datei zu + jedem Image-Build ab, der Server holt sie zusammen mit den Images. Sauberste + Trennung, meiste Arbeit. +3. **Unterschiede bewusst machen.** Die Server-Datei bleibt handgepflegt, aber + ein Abgleich-Skript meldet Abweichungen zur Repository-Version. Loest das + Problem nicht, macht es aber sichtbar. + +Vor der Entscheidung zu klaeren: **warum** die Datei dort ueberhaupt von Hand +gepflegt wird. Moeglicherweise enthaelt sie Anpassungen, die im Repository +fehlen (Ports, Netzwerke, Volumes fuer den konkreten Host) — die muessten dann +erst ins Repository, sonst bricht Weg 1 oder 2 den laufenden Betrieb. + +Eine Sicherung der aktuellen Server-Datei liegt als +`/opt/tessera/docker-compose.yml.bak.20260811` daneben.