diff --git a/stacks/skaldsong/compose.yaml b/stacks/skaldsong/compose.yaml index 97458c0..888421b 100644 --- a/stacks/skaldsong/compose.yaml +++ b/stacks/skaldsong/compose.yaml @@ -105,6 +105,14 @@ services: # is NOT bind-mounted → state wiped on every recreate. SKALDSONG_HOST_SQLITE_PATH: /app/state/db/skaldsong-ui.db SKALDSONG_HOST_RUNS_ROOT: /app/state/runs + # The state dirs below are root:docker 2775 (setgid, group-writable) since the 2026-09-14 docker-tree + # normalisation (playbooks/normalize-docker-tree.yaml), not lkraven-owned as first deployed. The app runs as + # uid 1000 with gid 1000 only, so SQLite could not create its -journal beside the db (every write 500'd, + # found 2026-10-05 at v0.40.2). Joining the host's docker GID makes the bind-mounted dirs writable and + # survives the next re-own. 112 = ana-docker's docker gid (this stack runs only there; new hosts pin 851). + # No docker socket is mounted here, so the membership grants file access on these two dirs only. + group_add: + - "112" volumes: # db/ and runs/ are separate bind-mounts so runs/ can later move to # a bigger volume without touching DB state.