Commit Graph
8 Commits
Author SHA1 Message Date
steffen 14f8081525 Harden runtime image: distroless/cc-debian12 instead of python:3.12-slim
Three-stage build. A python:3.12-slim-bookworm stage installs Flask and
stages the interpreter's link libraries; the runtime is
gcr.io/distroless/cc-debian12 with /usr/local copied over, so we ship a
current Python without the shell, apt, perl and tar that make up most of a
slim image's post-exploitation toolkit.

Bookworm on the build side so glibc matches the debian12 runtime. We
deliberately do not use gcr.io/distroless/python3-debian12 — its pinned
interpreter carries a larger CVE count than the slim image it would replace.

The container now runs as nonroot (65532), so /data is created and chowned
in the build stage: registry.db, databases/, uploads/ and inbox/ are written
there at startup and there is no shell left to fix ownership at runtime.
CMD becomes an exec-form ENTRYPOINT for the same reason.

Note for deploys: docker-compose.yml bind-mounts ./data:/data, and a
host-owned directory will need to be writable by uid 65532.
2026-08-26 16:12:19 +00:00
Steffen Skui 1db617b94e README: expand multi-person section (household use, automatic in Grafana) 2026-07-21 22:06:45 +02:00
Steffen Skui 19f6402b80 Add AHDX app screenshots (import + databases pages) 2026-07-21 22:03:12 +02:00
Steffen Skui a0ef60fa71 Fix Grafana on Linux: named volume for data; re-sync password on login 2026-07-21 21:54:49 +02:00
Steffen Skui b98c4a6a6e README: use <host-ip>:port instead of localhost 2026-07-21 21:42:20 +02:00
Steffen Skui 2068e31d27 README: real clone URLs for GitHub and Gitea 2026-07-21 21:39:29 +02:00
Steffen Skui 149a45803e Add dashboard screenshots (Ola, Kari, workout route) 2026-07-21 21:30:19 +02:00
Steffen Skui 850c13777c AHDX: Apple Health exporter with SQLite + Grafana dashboard (MIT) 2026-07-21 21:23:34 +02:00