Repository navigation
Description
Summary
apps/rybbit/docker-compose.yml's clickhouse service (via ../clickhouse-26.5.yml) does not set CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1. Upstream's own docker-compose.yml (rybbit-io/rybbit) does set it, with this comment on the clickhouse service:
- CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1
# Lets the backend provision the least-privilege `rybbit_query` user
# (custom SQL queries / dashboards) with SQL at startup.Why this matters
The backend's provisionQueryUser() (server/src/db/clickhouse/queryUser.ts in rybbit-io/rybbit) runs on every startup and requires the main ClickHouse connection to have access_management to create/alter the rybbit_query user and its settings profile. The source comment is explicit:
Requires the main connection to have access_management (the bundled compose sets
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1); otherwise the steps fail, the error is logged, and custom queries fail closed until the user is created by hand.
The failure is caught (try/catch) and non-fatal — the app doesn't crash, core dashboards/sites/session-replay still work — but the "Custom SQL queries" / dashboard-cards feature (which depends on the rybbit_query user existing with SELECT on events) silently fails closed, logging:
Could not provision ClickHouse user "rybbit_query" (the main ClickHouse user needs access_management). Custom SQL queries and dashboards will fail until it exists with SELECT on <db>.events — see docs: self-hosting-advanced → Custom SQL queries
What I checked
- Confirmed by reading
apps/rybbit/docker-compose.ymlandapps/clickhouse-26.5.ymlin this repo (today) — neither setsCLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT. - Confirmed by reading
server/src/db/clickhouse/queryUser.tsin a real rybbit-io/rybbitv2.9.1checkout (upgraded a self-hosted instance from a pre-2.0 snapshot, in place, as part of migrating it onto Flightdeck). - Not yet reproduced against an actual Flightdeck deploy of
apps/rybbit— this is from code inspection, not a live repro. Filing so it can be verified and fixed if confirmed, per your own request.
Suggested fix
clickhouse-26.5.yml is a generic, multi-app template, so setting this globally there would grant every app's default ClickHouse user elevated self-management rights it doesn't need. The override probably belongs in apps/rybbit/docker-compose.yml itself, e.g. re-declaring the clickhouse service there with just:
services:
clickhouse:
environment:
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1(merged with the included clickhouse-26.5.yml service definition via include:).
Also noticed, same app, possibly separate issues
- Upstream's current
docker-compose.ymlpinsclickhouse/clickhouse-server:26.3.17.4; this catalog pins26.5r — worth confirming that's intentional/tested rather than just a newer tag nobody's re-checked against. - Upstream also has
CLICKHOUSE_QUERY_PASSWORD,DEPLOYMENT,LITE_DASHBOARD,OPENROUTER_API_KEY,OPENROUTER_MODEL,CLUSTER_WORKERSenv vars not wired intoapps/rybbit's vault-env/internal-env — all optional with safe fallbacks upstream, so lower priority, but flagging since they were found in the same pass.
Activity
ineedjet commentedon Oct 10, 2026
Tried deploying this fix (v1.4.1) against a real target just now and it doesn't work —
docker composerejects the config outright, before even reachingpull/up:```
$ cd apps/rybbit && docker compose pull
services.clickhouse conflicts with imported resource
```
(Docker Compose 2.40.3 on the target host.)
Root cause: `apps/rybbit/docker-compose.yml` re-declares `services.clickhouse` directly (just the new `environment:` key) to patch the service that `../clickhouse-26.5.yml` already defines via `include:`. Compose doesn't allow a service from an `include:`'d file to be overridden by re-declaring the same service name in the including file — that's reserved/treated as a conflict, not a merge. (This is different from merging multiple `-f` files, which does allow it.)
No actual harm done — the command fails before touching anything, so nothing on the target changed. But the fix as shipped can't actually be deployed. Re-opening until there's a form of this that
docker composeaccepts (possiblyextends:instead of a bare re-declaration, though I haven't verified what shape works - happy to test a candidate if useful).ineedjet commentedon Oct 10, 2026
🧠 [rubykatzen/flightdeck]: Confirmed and root-caused — Docker Compose only allows overriding an
include:-d service as of v5.0.0; anything before that (including the v2.40.3 on the target host) rejects it withservices.clickhouse conflicts with imported resource, verified against a real v2.40.3 binary. Fix in #228: moveCLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1directly intoclickhouse-26.5.yml's own environment block instead of overriding the service fromapps/rybbit/docker-compose.yml- no service redeclaration, so the conflict class doesn't apply.🧠🔧✅
ineedjet commentedon Oct 11, 2026
Fixed in #228 (merged, see 0f26ba7). Closing.