diff --git a/deploy/README.md b/deploy/README.md index 1d8a844..fa00fd2 100644 --- a/deploy/README.md +++ b/deploy/README.md @@ -63,6 +63,13 @@ the same values, there's no separate migration-time config anymore (docs/DECISIO |---|---| | `/data` | The SQLite database file. Will also hold the content-addressed blob store once Phase 1 builds ingestion. This is the only thing that needs backing up. | +The container runs as a fixed non-root user (uid/gid `999`), not root and not Unraid's usual +`nobody:users` (99:100). If `/data`'s host directory doesn't already exist, Docker/Unraid creates +it owned by `nobody:users` with no write access for other users — the container starts, but +uvicorn fails immediately with `sqlite3.OperationalError: unable to open database file`, since it +can't create the SQLite file inside a directory it can't write to. Fix once, before first start: +`chown -R 999:999 ` (e.g. `/mnt/user/appdata/velodrome` on Unraid). + ## Unraid Import `unraid-template.xml` from the Docker tab's "Add Container" template picker — it exposes