Deploy Formbricks on Kubernetes using the current OCI Helm chart published from theDocumentation Index
Fetch the complete documentation index at: https://formbricks.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
charts/formbricks
directory in the Formbricks repository.
Formbricks v5 self-hosting expects Hub to be part of the runtime. The chart handles that by default. Use the
migration guide before upgrading an existing 4.x deployment.
Prerequisites
Ensure you have the following before proceeding:- a running Kubernetes cluster
- Helm 3 installed locally
- a public hostname for
formbricks.webappUrl - a plan for PostgreSQL and Redis/Valkey, either in-cluster or managed externally
- an edge rate-limiting plan for the v5-covered routes: the chart’s Envoy bundle or an equivalent external edge solution
1. Install The Chart
Create A Minimal values.yaml
2. Configure Secrets And External Services
Using Generated Secrets
The default chart path keepssecret.enabled: true, which lets the chart generate the required application
secrets for you.
Using Managed PostgreSQL And Redis
For production workloads, many teams prefer managed services:Using External Secrets
If your cluster already uses an external secret manager, enableexternalSecret and point it at your existing
SecretStore. Ensure the resulting app secret exposes the values your deployment needs, including DATABASE_URL,
REDIS_URL, and HUB_API_KEY.
3. v5-Specific Deployment Notes
Hub Is Mandatory
Formbricks v5 does not supporthub.enabled=false. Keep the default hub.enabled=true behavior in place.
Use hub.image.tag, hub.resources, and hub.existingSecret only when you need to pin or customize the Hub
deployment details.
Envoy Bundle Modes
The chart supports three edge patterns for the v5-covered routes:- Bundled Envoy controller: set
envoy.enabled=trueandenvoy.controller.enabled=true - Existing cluster Envoy controller: set
envoy.enabled=trueandenvoy.controller.enabled=false - Equivalent external edge protection: keep using your platform’s own ingress or gateway layer if it already provides equivalent rate-limiting coverage
Cube
Cube is part of the baseline Formbricks v5 stack and is bundled with the chart by default (cube.enabled: true). To run an external Cube cluster instead:
- set
cube.enabled: falseto skip the bundled Cube deployment - point the app at your external endpoint via
deployment.env.CUBEJS_API_URL - supply
CUBEJS_API_SECRETviadeployment.envordeployment.envFromif you disable generated secrets
4. Upgrade The Deployment
For normal chart upgrades:- Hub remains enabled
HUB_API_KEYis present- your edge rate-limiting plan is in place
- any required
AI_*variables are added CUBEJS_API_SECRETis configured (the generated app secret supplies it by default; provide an external endpoint if you setcube.enabled: false)
5. Key Values
| Field | Description |
|---|---|
formbricks.webappUrl | Public base URL for the Formbricks app |
deployment.image.tag | Formbricks image tag override |
hub.enabled | Must stay true in Formbricks v5 |
hub.image.tag | Hub image tag override |
envoy.enabled | Enables chart-managed Envoy Gateway resources |
envoy.controller.enabled | Installs the bundled Envoy controller when true |
envoyRedis.enabled | Deploys a dedicated Redis backend for Envoy rate limiting |
postgresql.externalDatabaseUrl | Uses an external PostgreSQL service instead of in-cluster |
redis.externalRedisUrl | Uses an external Redis/Valkey service instead of in-cluster |