Skip to main content

Custom Configurations

These variables are present inside your machine’s docker-compose file. Restart the docker containers if you change any variables for them to take effect.
Upgrading from Formbricks 4.x to 5.0? Read the migration guide first. Formbricks v5 makes Hub part of the standard self-hosted runtime and changes how rate limiting is enforced.
For AI_PROVIDER=google, use a Gemini model ID such as gemini-3.5-flash together with Google Cloud credentials. gemini-3.5-flash must use AI_GOOGLE_CLOUD_LOCATION=global, us, or eu; keep regional locations such as europe-west3 or me-central2 only for models Google lists as supported there, such as gemini-2.5-flash. Formbricks uses Google Cloud naming here, even though the underlying SDK still talks to Vertex AI endpoints for Gemini model access. For AI_PROVIDER=openai-compatible, the LLM GA v1 self-hosted path is Qwen served by vLLM through an OpenAI-compatible /v1 endpoint. Docker Compose users can enable the bundled Qwen/vLLM service with COMPOSE_PROFILES=qwen, or point AI_OPENAI_COMPATIBLE_BASE_URL at their own endpoint. Set only the variables for the provider you use; unused provider variables can be omitted.

OAuth and MCP URLs

The MCP server is available on the private/admin app at /api/mcp. OAuth discovery and token issuance are also private/admin app surfaces:
If you use a custom subpath, include that subpath in WEBAPP_URL, NEXTAUTH_URL, and BETTER_AUTH_URL if set. Do not point MCP or OAuth clients at PUBLIC_URL; that domain is reserved for public survey delivery and SDK traffic.

Formbricks Hub

Starting with Formbricks v5, Hub is part of the standard self-hosted runtime. When you run Formbricks with the bundled Docker Compose or Helm assets, the following variables apply:

Cube Analytics

Cube is part of the baseline Formbricks v5 stack and is required. Formbricks generates the backend Cube JWT from CUBEJS_API_SECRET, so CUBEJS_API_TOKEN is not part of the supported setup contract. The bundled Docker Compose Cube service sets CUBEJS_DEFAULT_API_SCOPES=meta,data directly on the Cube container. If you run Cube outside the bundled Compose stack, configure the equivalent Cube service environment there rather than adding it to the Formbricks app environment. For Helm deployments, the chart deploys Cube by default (cube.enabled: true). To use an external Cube cluster instead, set cube.enabled: false, point CUBEJS_API_URL at your endpoint, and supply CUBEJS_API_SECRET through your existing secret management setup. Note: If you want to configure something that is not possible via above, please open an issue on our GitHub repo here or reach out to us on Github Discussions and we’ll try our best to work out a solution with you.