fix(compose): point the browser at a reachable API address in prod
Tessera CI/CD / Lint & Type Check (push) Successful in 45s
Tessera CI/CD / Tests (push) Successful in 49s
Tessera CI/CD / Build & Publish Images (push) Successful in 7s

NEXT_PUBLIC_API_URL is read by the browser, not by the web container, so
http://api:3001 could never work outside Docker. The test server had been
corrected by hand long ago; the fix never came back here, so the file we
would ship to a customer was the broken one.

Also adopts the server's TESSERA_FORCE_CHANGE default of true, so a fresh
install requires the initial admin password to be changed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-11 15:34:49 +02:00
parent 61948440ab
commit 9ca71ae92f
2 changed files with 34 additions and 2 deletions
@@ -56,3 +56,32 @@ 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.
## Zwischenstand 2026-08-11: Drift abgeglichen, Mechanik weiter offen
Die beiden Dateien sind jetzt identisch. Verglichen wurden sie erst an diesem
Tag zum ersten Mal — es gab genau drei Unterschiede:
| Einstellung | Server | Repository | Uebernommen |
|---|---|---|---|
| `NEXT_PUBLIC_API_URL` | `${APP_URL}` | `http://api:3001` | Server-Fassung ins Repository |
| `TESSERA_FORCE_CHANGE` | Standard `true` | Standard `false` | Server-Fassung ins Repository |
| `TESSERA_ENCRYPTION_KEY` | kein Abbruch | `:?`-Abbruch | Repository-Fassung auf den Server |
Der erste Punkt war der ernste: `http://api:3001` existiert nur im
Compose-Netz. Der Browser eines Kunden sitzt ausserhalb und haette die API nie
erreicht — die Repository-Fassung war fuer eine echte Installation unbrauchbar,
und niemand haette es vor dem ersten Kundentermin gemerkt. Die Korrektur lebte
seit unbekannter Zeit nur auf alpha.
Ablauf: Sicherung als `/opt/tessera/docker-compose.yml.bak.20260811-1530`,
danach die Repository-Fassung auf den Server kopiert und mit
`docker compose config` geprueft (gueltig, alle Variablen aufloesbar). Das
Neuerzeugen der Container bleibt Sache des Users.
**Was den Zettel offen haelt:** abgeglichen ist ein Zustand, keine Loesung. Die
naechste Aenderung an `docker-compose.prod.yml` driftet genauso, weil
`/opt/tessera` weiterhin keine Arbeitskopie ist und der Deploy weiterhin nur
Images holt. Die Entscheidung zwischen den drei Wegen oben steht also
unveraendert an — die Frage nach host-eigenen Anpassungen ist inzwischen
beantwortet: es gab keine, nur zwei Korrekturen, die ins Repository gehoerten.