From 137b892480633fd43c0f8b47f579d271dcd7f159 Mon Sep 17 00:00:00 2001 From: fabi Date: Wed, 12 Aug 2026 22:23:33 +0200 Subject: [PATCH] docs(runbook): the .env template no longer implies edits that compose overrides MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The template said `EXPORT_PATH=/exports # NOT pinned by compose`, which has been false for as long as the pin has existed — and it sits three lines under MEDIA_PATH, which is correctly described as pinned, so the contrast reads as deliberate. An operator moving exports to a separate volume (the remedy §13 now recommends for a full disk) would edit `.env`, see nothing change, and have no reason to suspect the compose file. All four pinned vars are now listed together with what the pin means: change it there, not here. DATABASE_MAX_CONNECTIONS carries the extra note that its value is boot-fatal when unparseable, which is why it is pinned at all. --- DEPLOYMENT_RUNBOOK.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/DEPLOYMENT_RUNBOOK.md b/DEPLOYMENT_RUNBOOK.md index 55e4205..f6fc127 100644 --- a/DEPLOYMENT_RUNBOOK.md +++ b/DEPLOYMENT_RUNBOOK.md @@ -189,14 +189,22 @@ DATABASE_URL=postgres://eventsnap:@db:5432/eventsnap ADMIN_PASSWORD_HASH='' # ── Paths — must match the volume mounts ────────────────────────────────── -MEDIA_PATH=/media # pinned by compose anyway, but keep consistent -EXPORT_PATH=/exports # NOT pinned by compose — see the trap in §7.3 +# All four of these are PINNED in docker-compose.yml under `app.environment`, which overrides +# `env_file`. Keep them consistent here for readability, but understand that editing them in +# `.env` changes nothing — the pin is what the container gets. Change the pin. +MEDIA_PATH=/media +EXPORT_PATH=/exports +APP_PORT=3000 # ── Sizing (see the two corrections below) ──────────────────────────────── # 15, matching .env.example, the `db` sizing comment in docker-compose.yml and the code # default. An earlier draft of this runbook said 30: that does not fit the 1G memory limit # compose allots `db`, and 30 simultaneous queries cannot run on 2 vCPU anyway — they queue # on the CPU instead of on the pool. Raise it only alongside more cores AND a bigger limit. +# +# ALSO PINNED IN COMPOSE (see above), and pinned for a sharper reason than the paths: an +# unparseable value here is boot-FATAL rather than falling back to the default, so a stray +# quote or a trailing inline comment in `.env` would crash-loop the app behind a live Caddy. DATABASE_MAX_CONNECTIONS=15 COMPRESSION_WORKER_CONCURRENCY=2