Skip to content

v0.1.1 — docker volume permissions fix

Choose a tag to compare

@pouriamrt pouriamrt released this 18 Apr 19:40
· 19 commits to main since this release

Patch release fixing a container-permissions bug in v0.1.0.

What broke in v0.1.0

docker run ghcr.io/pouriamrt/claude-mesh/relay:v0.1.0 init failed with `SqliteError: unable to open database file (SQLITE_CANTOPEN)` on a fresh named volume. Root cause: the distroless nonroot user (UID 65532) couldn't write to `/data` because a freshly-initialized named volume inherited root:root ownership.

Fix

Dockerfile now stages a pre-chowned `/seed-data` directory in the build stage and COPYs it into `/data` in the final image. Docker's volume-initialization semantics mean fresh named volumes now inherit nonroot ownership on first use, so better-sqlite3 can open the DB.

Upgrade

docker pull ghcr.io/pouriamrt/claude-mesh/relay:v0.1.1
docker stop mesh-relay && docker rm mesh-relay
docker run -d --name mesh-relay --restart unless-stopped \
  -p 8443:8443 -v mesh-data:/data \
  ghcr.io/pouriamrt/claude-mesh/relay:v0.1.1

If you previously used the `--user 0:0` workaround from the bug thread, drop that flag on the new image.

Workaround for anyone stuck on v0.1.0

Run with `--user 0:0` for both the init and the long-running server (loses the nonroot hardening but unblocks the database create):

docker run --rm -it --user 0:0 -v mesh-data:/data \
  ghcr.io/pouriamrt/claude-mesh/relay:v0.1.0 init
docker run -d --name mesh-relay --user 0:0 -p 8443:8443 \
  -v mesh-data:/data ghcr.io/pouriamrt/claude-mesh/relay:v0.1.0