fix(repo): a fresh media volume is writable by the backend (#914) #915

Merged
claude-bot merged 1 commit from fix/media-volume-owner into main 2026-09-29 01:56:27 +00:00
Collaborator

Closes #914.

The problem. On a fresh install, the media volume's mount point is owned by root, because no image created /app/media. Every upload then fails with a 500.

The fix. backend-base now creates /app/media, owned by appuser, next to /app/backups. Existing volumes are unaffected.

Checked on a backend-prod image with a fresh named volume: /app/media is appuser:appuser and writable.

🤖 Generated with Claude Code

Closes #914. **The problem.** On a fresh install, the `media` volume's mount point is owned by root, because no image created `/app/media`. Every upload then fails with a 500. **The fix.** `backend-base` now creates `/app/media`, owned by `appuser`, next to `/app/backups`. Existing volumes are unaffected. **Checked on a `backend-prod` image with a fresh named volume:** `/app/media` is `appuser:appuser` and writable. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(repo): a fresh media volume is writable by the backend (#914)
All checks were successful
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 1m4s
CI / Bot/backend version sync (pull_request) Successful in 29s
CI / Backend lint (ruff) (pull_request) Successful in 1m18s
CI / Docker image build (pull_request) Successful in 21s
CI / Does this change touch the recording path? (pull_request) Successful in 31s
CI / Bot tests and audit (pull_request) Successful in 2m10s
CI / Feedback site tests (pull_request) Successful in 2m3s
CI / Backend migration, tests, and audit (pull_request) Successful in 21m5s
CI / Frontend tests, audit, and build (pull_request) Successful in 23m37s
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Successful in 14m42s
CI / End-to-end journeys (desktop, phone, keyboard-only) (pull_request) Successful in 20m20s
f7bb9570f1
The media named volume mounts at /app/media, which no backend image
created, so Docker made the mount point root's on first use and every
upload 500'd with PermissionError. Create it in backend-base, owned by
appuser, as /app/backups already is. Existing volumes are unaffected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign in to join this conversation.
No description provided.