Commit Graph
7 Commits
Author SHA1 Message Date
Harlekin 4d36525d8e pgbouncer ausdruecklich auf Port 6432
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Neuere Fassungen von edoburu/pgbouncer lauschen auf 5432 statt auf 6432. Der
Dienst lief damit einwandfrei, aber der Healthcheck fragte 6432 ab, blieb ohne
Antwort und meldete "unhealthy" - woraufhin web und worker gar nicht erst
starteten. DATABASE_URL haette danach dasselbe Problem gehabt.

LISTEN_PORT steht jetzt fest auf 6432. Das haelt ausserdem sichtbar
auseinander, ob eine Verbindung ueber den Pool geht oder mit
DIRECT_DATABASE_URL an ihm vorbei.
2026-09-04 09:50:51 +02:00
Harlekin dc34774223 Host-Port ueber die .env statt in der compose.yaml
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Wer die Anwendung auf einem anderen Port erreichen will, musste bisher die
compose.yaml aendern - eine verfolgte Datei. Jeder `git pull` lief danach in
"local changes would be overwritten", und die Aenderung ging beim Verwerfen
verloren.

Jetzt steht der Host-Port als WEB_PORT in der .env, die ohnehin nicht verfolgt
wird. Ohne Angabe bleibt es bei 3000.
2026-09-04 09:46:25 +02:00
Harlekin f12d88c223 Cloudflare Tunnel nur noch auf Anforderung
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Der Tunnel war fest im Stack und damit Voraussetzung, obwohl er nur eine von
mehreren Moeglichkeiten ist, die Anwendung von aussen erreichbar zu machen. Wer
einen eigenen Reverse Proxy betreibt, brauchte ihn nie - und wollte womoeglich
gerade nicht von einem fremden Dienst abhaengen.

Er steht jetzt in einem Profil und startet nur mit
`docker compose --profile cloudflare up -d`. Ohne Angabe bleibt er aus, und der
Stack laeuft mit acht Diensten.
2026-09-04 09:41:11 +02:00
Harlekin 10f0d846a0 Kein Pull-Versuch fuer selbst gebaute Images
`docker compose up` fragt zuerst in einer Registry nach, auch wenn das Image
lokal gebaut wird, und warnt dann "pull access denied". Mit `pull_policy: never`
nimmt Compose gleich das lokale Image.

Betrifft vor allem den Start-Knopf in Dockge, der `up -d` ohne vorheriges
`build` ausfuehrt.
2026-09-04 09:36:48 +02:00
Harlekin 8b0d2d5345 Images im Stack bauen statt aus einer Registry ziehen
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Die drei eigenen Images standen als ghcr.io-Adressen mit einem Platzhalter im
Namen. Gebaut haetten sie nur GitHub Actions, und das Repository liegt nicht
auf GitHub - die Images gab es also nirgends, und wer den Platzhalter uebersah,
bekam "repository name must be lowercase".

Jetzt stehen die Bau-Anweisungen in der compose.yaml selbst. Das ist auch fuer
Dockge das richtige: dessen Editor zeigt nur diese eine Datei, eine
compose.override.yml waere unsichtbar gewesen und haette spaeter niemand mehr
erklaeren koennen.

Dazu ein Hinweis im Kopf der Datei, dass PORT und Healthchecks den Port *im*
Container meinen. Wer die Anwendung auf dem Host anders erreichen will, aendert
nur die linke Zahl bei ports.
2026-09-04 09:31:03 +02:00
Harlekin e0b03ea336 Gedankenstriche durch Bindestriche ersetzt
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die
README; an keiner Stelle Bedeutung, nur Zeichensetzung.
2026-09-04 08:54:52 +02:00
Harlekin f77a589dda Betrieb: Dockge-Stack, Images, Prüfung
compose.yaml aus docs/11-betrieb.md, ergänzt um Healthchecks für db-backup und
offsite-backup. Das Dokument verlangt für jeden Dienst einen, die abgedruckte
Fassung hatte für die beiden keinen, und ohne ihn zeigt Dockge nur "läuft",
auch wenn seit Wochen nichts mehr gesichert wird.

Die Migration läuft im Startkommando von web, nicht in einem Init-Container.
Die Prisma-CLI samt Schema-Engine liegt dafür unter /app/migrator im Image:
ein Container, der nur startet, wenn gerade eine Registry erreichbar ist, wäre
auf einem Homeserver die falsche Bauart.

Alle drei Images gebaut und laufen gegen eine echte Postgres-Instanz geprüft:
web wendet Migrationen an und liefert /api/health aus, worker schreibt sein
Lebenszeichen, pdf rendert ein echtes PDF.

Die CI prüft Lint, Typen, Tests und E2E gegen den Standalone-Server, also so,
wie der Container startet, und hält das Bündel-Budget aus
docs/09-performance-und-ux.md ein.

Phase 0 aus TASKS.md ist damit abgehakt.
2026-09-01 00:02:00 +02:00