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
Optional Bundled Qwen/vLLM For AI
The Helm chart can optionally deploy a Formbricks-provided Qwen runtime through vLLM. This is disabled by default and requires GPU-capable Kubernetes nodes. To deploy Qwen/vLLM and automatically point the Formbricks app at the in-cluster OpenAI-compatible endpoint:llm.enabled: true, the chart renders the vLLM router and Qwen serving engine, then injects the required
AI_PROVIDER=openai-compatible app environment variables unless you override them in deployment.env.
If you want to deploy the bundled Qwen runtime without changing the Formbricks app AI configuration:
llm.enabled: false when you use Google Vertex, Azure, AWS Bedrock, or an externally managed
OpenAI-compatible endpoint. Configure those providers through deployment.env.
Optional AI Taxonomy Beta
The Helm chart can optionally deploy the standalone taxonomy service. This is disabled by default and does not force the bundled Qwen/vLLM runtime. To deploy taxonomy and reuse the bundled Qwen/vLLM runtime:TAXONOMY_SERVICE_URL, TAXONOMY_SERVICE_TOKEN, and HUB_INTERNAL_API_TOKEN into Hub API.
To use your own OpenAI-compatible LLM endpoint instead, keep llm.enabled: false and set the taxonomy LLM values:
taxonomy-llm-secret secret must contain TAXONOMY_LLM_API_KEY. If your endpoint does not enforce
authentication, store a non-empty dummy value.
After startup, run the authenticated preflight check from inside the taxonomy pod:
/health; /v1/preflight is for
operator validation and requires the internal taxonomy bearer token.
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 |
llm.enabled | Deploys the optional bundled Qwen/vLLM runtime |
llm.autoConfigureApp | Injects Formbricks OpenAI-compatible env vars for bundled Qwen |
taxonomy.enabled | Deploys the optional standalone AI taxonomy service |
postgresql.externalDatabaseUrl | Uses an external PostgreSQL service instead of in-cluster |
redis.externalRedisUrl | Uses an external Redis/Valkey service instead of in-cluster |