docs: docker-compose example + self-hosting guide#850
Conversation
External user (#766) tried docker-compose against the published ghcr.io/lobu-ai/lobu-app image, missing required env (ENCRYPTION_KEY, BETTER_AUTH_SECRET) and unable to debug because the boot error logged as empty `{}`. PR #843 fixed the error logging. This commit fills the remaining gap: a working sample compose, a self-hosting doc that spells out what's actually required vs optional, and a .env.example that no longer claims ANTHROPIC_API_KEY is required. Image itself is unchanged (already generic enough). Documents the provider-agnostic reality: 17 providers in config/providers.json, no env-var required at boot for any of them, runtime provisioning via admin UI works fine. Refs #766.
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
End-to-end smoke test against the published ghcr.io/lobu-ai/lobu-app image (PR #850's sample compose) surfaced two issues: 1. `/var/lib/postgresql/data` mount fails on pgvector:pg18-trixie — PG18+ rejects /data subdir as "unused mount/volume" and refuses to start. The correct mount is the parent dir /var/lib/postgresql. This was in the user's original #766 compose and I broke it during #850; reverting. 2. The published image is amd64-only — Apple Silicon users hit "no matching manifest for linux/arm64" on `docker compose up`. Add a commented-out `platform: linux/amd64` line they can uncomment to run via Rosetta, plus a note in docs/DOCKER.md. Multi-arch build is a follow-up. E2E verified after these fixes: containers boot cleanly, migrations applied, 16 providers loaded, `GET /healthz` → `{"status":"ok"}`, `GET /` returns the admin SPA HTML. Refs #766.
Summary
Closes the documentation gap that surfaced in #766. Adds:
docker-compose.example.ymlat repo root — copy, generate two secrets,docker compose up -d, done.docs/DOCKER.md— what's actually required at boot vs nice-to-have, boot-error troubleshooting, provider story, production checklist..env.examplerewritten — drops the misleading "CLAUDE CONFIGURATION (Required)" header, replaces it with a clear "Required to boot" section listing onlyDATABASE_URL,ENCRYPTION_KEY,BETTER_AUTH_SECRET. All LLM provider keys explicitly marked optional.Why now
External user (#766) tried to
docker-compose upagainstghcr.io/lobu-ai/lobu-appand hit{"level":"error","msg":"Failed to start server","error":{}}— empty error. PR #843 fixed the empty-error logging. This commit fills the remaining gap: they should not have needed to debug a server error to find out thatENCRYPTION_KEYexists. Now they don't.Notable corrections
The old
.env.exampleclaimedANTHROPIC_API_KEYwas "Required" — it's not. The server boots fine without any provider keys, and per-provider keys can be added at runtime via the admin UI. Reality (verified by readingpackages/server/src/server.ts:main()):DATABASE_URLENCRYPTION_KEYBETTER_AUTH_SECRETlobu runlocal CLI mode)ANTHROPIC_API_KEY/OPENAI_API_KEY/ etc.Test plan
docker compose -f docker-compose.example.yml config.cpthe example, generate the two secrets,docker compose up -d, openlocalhost:8787, sign in. (Untested locally — flagging so a reviewer or follow-up can confirm before sharing the file externally.).env.examplestill parseable as.env(no syntax surprises).Refs #766.