Inbox Zero can run on Kubernetes as the same pieces used by Docker Compose:Documentation Index
Fetch the complete documentation index at: https://docs.getinboxzero.com/llms.txt
Use this file to discover all available pages before exploring further.
- A
webDeployment for the Next.js app. - A migration Job that runs Prisma migrations before Helm installs or upgrades the app when managed Postgres is enabled.
- An optional BullMQ
workerDeployment for durable background jobs. - CronJobs for scheduled endpoints like watch renewal, meeting briefs, follow-up reminders, and retention.
- Postgres and Redis, either managed externally or installed in-cluster for a simple self-hosted stack.
- An Ingress in front of the web Service.
Chart Location
The chart lives in the repository at:Values File
The Helm chart does not replace the normal app configuration. Use the Environment Variables reference, Google OAuth guide, Microsoft OAuth guide, and LLM setup guide for the full app configuration. Createvalues.prod.yaml with your public URL, ingress settings, and app configuration. Put app secrets in secretEnv or point the chart at an existing Kubernetes Secret.
inbox-zero-secrets should contain the required app environment variables from the Environment Variables reference. You can use secretEnv instead for simple installs.
For a first install with bundled Postgres and Redis, also provide generated values for the bundled services:
Recommended Production Setup
Use managed Postgres and Redis through existing Kubernetes Secrets:inbox-zero-database should contain DATABASE_URL and DIRECT_URL.
inbox-zero-redis should contain REDIS_URL, UPSTASH_REDIS_URL, and UPSTASH_REDIS_TOKEN.
You can use plain Kubernetes Secrets, External Secrets, Sealed Secrets, SOPS, or a cloud secret controller.
Use existingSecret for app secrets too. See the Environment Variables reference for the full list, including OAuth, LLM, Redis, and QStash variables.
Background Jobs
BullMQ is the default Kubernetes queue mode:INTERNAL_API_KEY.
To use QStash instead, disable the worker:
secretEnv or existingSecret; see the Environment Variables reference.
Smoke Test
After installing, check the rollout:Operational Notes
- Set
NEXT_PUBLIC_BASE_URLto the external HTTPS URL used by users and OAuth providers. - With managed Postgres, Helm runs Prisma migrations in a pre-install/pre-upgrade Job.
- Web pods set
SKIP_DB_MIGRATIONS=truewhen the migration Job is enabled. - With bundled Postgres, the web container runs migrations during startup.
- Bundled Postgres, Redis, and Redis HTTP require explicit secret values. Generate them before installing, for example with
openssl rand -hex 32. - CronJobs call the internal Service, not the public Ingress.
- Cron schedules are configured under
cron.jobs. The defaults follow the Docker self-hosting setup, so some schedules differ from hosted deployment schedules. - The
/api/healthendpoint supports lightweight Kubernetes probes without an API key.