From 809772ae2fef3c8aaa71d3c05a28f2a193cac2fb Mon Sep 17 00:00:00 2001 From: Pascal Oelmann Date: Tue, 5 May 2026 02:39:20 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20deferred-work.md=20=E2=80=94=20was=20sp?= =?UTF-8?q?=C3=A4ter=20noch=20sauber=20gemacht=20werden=20muss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/deferred-work.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/deferred-work.md diff --git a/docs/deferred-work.md b/docs/deferred-work.md new file mode 100644 index 0000000..fc05163 --- /dev/null +++ b/docs/deferred-work.md @@ -0,0 +1,35 @@ +# Deferred Work — Marketing-VPS Stack + +> **Stand:** 2026-05-05 · **Kontext:** Pragmatik-vor-Perfektion-Entscheidung beim initialen Deployment. +> Folgendes ist bewusst zurückgestellt, soll aber vor Live-Schaltung von slimcore.io +> oder spätestens beim Aufsetzen der zweiten Marken-Site abgearbeitet werden. + +## Caddyfile (`infra/marketing-vps/Caddyfile`) + +- [ ] Per-Domain Access-Logs (`/var/log/caddy/.log`, JSON, rotiert) — essentiell für Debugging und DSGVO-Auskünfte +- [ ] Cache-Control pro Asset-Klasse: `/_astro/*` und `/fonts/*` mit `max-age=31536000, immutable`; HTML mit `max-age=300, must-revalidate` +- [ ] `Permissions-Policy: interest-cohort=()` (Souveränitäts-Konsistenz, FLoC-Block) +- [ ] HSTS mit `preload` + Submission an [hstspreload.org](https://hstspreload.org) +- [ ] Globaler `email`-Block für Let's-Encrypt Renewal-Notifications + +## Compose-Stack (`infra/marketing-vps/docker-compose.yml`) + +- [ ] **Uptime-Kuma** unter `status.digiformer.eu` (eigener Caddy-Block, basicauth, eigenes Passwort — nicht „demo") + - DNS-A-Record `status.digiformer.eu` → `178.104.215.120` ✓ (am 2026-05-05 von Pascal gesetzt) +- [ ] Healthcheck auf Caddy-Admin-API (`http://127.0.0.1:2019/config/`) +- [ ] HTTP/3 (`443:443/udp` Port + `experimental_http3` global) +- [ ] Log-Volume + Logrotate — ohne Mount sammelt Caddy intern alles, geht beim Container-Recreate verloren +- [ ] Caddy Admin-API auf `127.0.0.1:2019` (Voraussetzung für Healthcheck) + +## Workflow (`.forgejo/workflows/deploy.yml`) + +- [ ] Demo-Credentials als Org-Secrets `DEMO_USER`/`DEMO_PASS` (nicht im Klartext im Workflow oder Caddyfile) +- [ ] Verifikation curl-t mit Credentials → 200 erwarten, plus `grep -q SlimCore` auf Body +- [ ] `/_astro/*.css`-Smoke-Check — bestätigt, dass das jetzige `dist/` deployed wurde, nicht das alte +- [ ] Self-adapting beim Live-Switch: wenn `DEMO_PASS` leer/ungesetzt → Verifikation läuft ohne Auth + +## Vor Live-Schaltung von slimcore.io + +- [ ] `basic_auth { … }`-Block + `X-Robots-Tag`-Zeile aus `infra/marketing-vps/Caddyfile` entfernen, committen, auf marketing-VPS deployen + `docker exec marketing-caddy caddy reload` +- [ ] Site bei [hstspreload.org](https://hstspreload.org) submitten +- [ ] Sitemap an Google Search Console + Bing Webmaster Tools melden