fix(deployment): run Caddy non-root under all users, add process supervision, fix healthcheck

- docker-entrypoint.sh: always start both Caddy and Python instead of exiting
  early for non-root containers; drop Caddy's privileges via gosu (never runs
  as root); supervise both processes with `wait -n` and tear down the
  container if either one dies
- Caddyfile: add `admin off`; enforce MAX_UPLOAD_SIZE via `request_body
  max_size` on /api/* instead of relying on an unused env var
- docker-compose.yml: use explicit MAX_UPLOAD_SIZE=30MB unit
- Dockerfile: merge COPY+chown into a single `COPY --chown` layer for
  src/; fix HEALTHCHECK Python one-liner (literal \n was causing a
  SyntaxError on every check, so the container never reported healthy)
This commit is contained in:
dido committed 2026-09-22 14:59:24 +03:00
1 parent 9a70ae1578
commit 27f2314c96
5 files changed
+89 -42

No files matched your search

+2 -2
View File
@@ -14,8 +14,8 @@ services:
- LOG_LEVEL=INFO
# Configure users: format is username:password,username2:password2
- WEBSSH_USERS=admin:admin
# Max upload size (supports format like "100M" for 100MB or "50M" for 50MB)
- MAX_UPLOAD_SIZE=30M
# Max upload size, enforced by both Caddy and the backend (e.g. "30MB", "512KB")
- MAX_UPLOAD_SIZE=30MB
# Session Recording Configuration
- RECORDING_ENABLED=true
- RECORDING_RETENTION_DAYS=30