forked from formbricks/formbricks
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
435 lines (355 loc) · 15.9 KB
/
Copy path.env.example
File metadata and controls
435 lines (355 loc) · 15.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
########################################################################
# ------------ MANDATORY (CHANGE ACCORDING TO YOUR SETUP) ------------ #
########################################################################
############
# BASICS #
############
WEBAPP_URL=http://localhost:3000
# Required for next-auth. Should be the same as WEBAPP_URL
# If your pplication uses a custom base path, specify the route to the API endpoint in full, e.g. NEXTAUTH_URL=https://example.com/custom-route/api/auth
NEXTAUTH_URL=http://localhost:3000
# Can be used to deploy the application under a sub-path of a domain. This can only be set at build time
# BASE_PATH=
# Encryption keys
# Please set both for now, we will change this in the future
# You can use: `openssl rand -hex 32` to generate one
ENCRYPTION_KEY=
# @see: https://next-auth.js.org/configuration/options#nextauth_secret
# You can use: `openssl rand -hex 32` to generate a secure one
NEXTAUTH_SECRET=
# API Secret for running cron jobs. (mandatory)
# You can use: `openssl rand -hex 32` to generate a secure one
CRON_SECRET=
# Set the minimum log level(debug, info, warn, error, fatal)
LOG_LEVEL=info
# BullMQ workers require REDIS_URL (for example `redis://localhost:6379`) to be set.
# BullMQ worker startup is enabled by default outside tests. Set to 0 to disable.
# BULLMQ_WORKER_ENABLED=1
# Set to 1 on web/API pods that only enqueue jobs while a separate BullMQ worker deployment consumes them.
# BULLMQ_EXTERNAL_WORKER_ENABLED=0
# Number of BullMQ worker instances started per Formbricks server process.
# BULLMQ_WORKER_COUNT=1
# Number of concurrent jobs each BullMQ worker can process.
# BULLMQ_WORKER_CONCURRENCY=1
# Survey publish/close scheduling execution time. These are server-side runtime env vars, so
# self-hosted Docker deployments can change them without rebuilding the image. The editor UI
# receives the configured values from the server to render the selected execution time and timezone.
# SURVEY_SCHEDULING_TIME_ZONE=Europe/Berlin
# SURVEY_SCHEDULING_LOCAL_HOUR=0
# SURVEY_SCHEDULING_LOCAL_MINUTE=0
##############
# DATABASE #
##############
DATABASE_URL='postgresql://postgres:postgres@localhost:5432/formbricks?schema=public'
#################
# HUB (DEV) #
#################
# The dev stack (pnpm db:up / pnpm go) runs Formbricks Hub on port 8080.
# Set explicitly to avoid confusion; override as needed when using docker-compose.dev.yml.
HUB_API_KEY=dev-api-key
HUB_API_URL=http://localhost:8080
HUB_DATABASE_URL=postgresql://postgres:postgres@postgres:5432/hub?sslmode=disable
# Hub image tag used by docker-compose.dev.yml (hub + hub-migrate). Leave unset to use the
# pinned default in the compose file; override here when testing a specific Hub release.
# HUB_IMAGE_TAG=0.8.0
# Hub embeddings are optional. Set a provider and model to enable semantic search embeddings in
# the Hub API and hub-worker. For provider-specific settings, see:
# https://hub.formbricks.com/reference/environment-variables/#embeddings
# Example with Google AI Studio:
# EMBEDDING_PROVIDER=google
# EMBEDDING_MODEL=gemini-embedding-001
# EMBEDDING_PROVIDER_API_KEY=
# Hub sentiment / emotion / translation enrichment (Hub >= 0.7.1) are optional and off unless a
# provider + model is set. They run in the Hub API (enqueue) and hub-worker (classify), so both
# need these — docker-compose.dev.yml forwards them to both. Supported providers: openai,
# google (AI Studio, needs *_PROVIDER_API_KEY), google-gemini (Vertex, needs
# *_GOOGLE_CLOUD_PROJECT/LOCATION + Application Default Credentials instead of an API key).
# NOTE: a provider set without its required credentials crash-loops both Hub containers on
# startup (e.g. provider "google" without an API key) — it does not degrade gracefully.
# For base URLs, concurrency and other provider-specific settings, see:
# https://hub.formbricks.com/reference/environment-variables
# Examples with Google AI Studio (you can reuse the embeddings API key):
# SENTIMENT_PROVIDER=google
# SENTIMENT_MODEL=gemini-2.5-flash
# SENTIMENT_PROVIDER_API_KEY=
# EMOTIONS_PROVIDER=google
# EMOTIONS_MODEL=gemini-2.5-flash
# EMOTIONS_PROVIDER_API_KEY=
# Translation additionally needs a target language (TRANSLATION_DEFAULT_LANGUAGE, or a per-tenant setting):
# TRANSLATION_PROVIDER=google
# TRANSLATION_MODEL=gemini-2.5-flash
# TRANSLATION_PROVIDER_API_KEY=
# TRANSLATION_DEFAULT_LANGUAGE=en-US
##########################
# AI TAXONOMY (BETA) #
##########################
# Optional. Enables the standalone taxonomy service in Docker Compose.
# Docker/self-hosting users can enable it with COMPOSE_PROFILES=taxonomy.
# Use COMPOSE_PROFILES=qwen,taxonomy when taxonomy should use the bundled
# Qwen/vLLM service from this Compose stack.
# TAXONOMY_SERVICE_URL=http://taxonomy:8000
# TAXONOMY_SERVICE_TOKEN=<random-strong-secret>
# HUB_INTERNAL_API_TOKEN=<random-strong-secret>
# Pin a released taxonomy image in production, for example :v0.1.0.
# TAXONOMY_IMAGE_REF=:v0.1.0
#
# Taxonomy cluster labeling and tree generation use an OpenAI-compatible
# chat-completions endpoint by default. The recommended self-hosted path is
# Qwen served by vLLM through an OpenAI-compatible /v1 endpoint; the model must
# reliably return strict JSON for 5-level taxonomy generation.
# TAXONOMY_LLM_PROVIDER=openai-compatible
# TAXONOMY_LLM_MODEL=qwen3-14b-awq
# TAXONOMY_LLM_BASE_URL=http://vllm:8000/v1
# TAXONOMY_LLM_API_KEY=<api-key-or-dummy-value>
#
# Advanced optional override. Defaults to 50000; prefer sizing CPU, memory, and
# LLM capacity for production workloads instead of capping records by default.
# TAXONOMY_MAX_RECORDS=50000
#
# Optional Bedrock provider instead of OpenAI-compatible:
# TAXONOMY_LLM_PROVIDER=bedrock
# TAXONOMY_LLM_MODEL=eu.anthropic.claude-sonnet-4-5-20250929-v1:0
# AWS_REGION=eu-north-1
# AWS_BEARER_TOKEN_BEDROCK=
#
# Optional Gemini on Vertex AI provider:
# TAXONOMY_LLM_PROVIDER=vertex-gemini
# TAXONOMY_LLM_MODEL=gemini-2.5-flash
# TAXONOMY_VERTEX_PROJECT=formbricks-cloud
# TAXONOMY_VERTEX_LOCATION=europe-west3
# TAXONOMY_GOOGLE_CLOUD_CREDENTIALS_JSON=<service-account-json>
####################
# CUBE ANALYTICS #
####################
# Cube semantic-layer API. Required. The bundled Docker stack exposes Cube on port 4000.
CUBEJS_API_URL=http://localhost:4000
# Generate with: openssl rand -hex 32. `pnpm dev:setup` will create/preserve this automatically.
CUBEJS_API_SECRET=
CUBEJS_JWT_ISSUER=formbricks-web
CUBEJS_JWT_AUDIENCE=formbricks-cube
################
# MAIL SETUP #
################
# Necessary if email verification and password reset are enabled.
# See optional configurations below if you want to disable these features.
MAIL_FROM=noreply@example.com
MAIL_FROM_NAME=Formbricks
SMTP_HOST=localhost
SMTP_PORT=1025
# Enable SMTP_SECURE_ENABLED for TLS (port 465)
SMTP_SECURE_ENABLED=0
SMTP_USER=smtpUser
SMTP_PASSWORD=smtpPassword
# If set to 0, the server will not require SMTP_USER and SMTP_PASSWORD(default is 1)
# SMTP_AUTHENTICATED=
# If set to 0, the server will accept connections without requiring authorization from the list of supplied CAs (default is 1).
# SMTP_REJECT_UNAUTHORIZED_TLS=0
########################################################################
# ------------------------------ OPTIONAL -----------------------------#
########################################################################
# Uncomment the variables you would like to use and customize the values.
##############
# S3 STORAGE #
##############
# S3 Storage is required for the file upload in serverless environments
S3_ACCESS_KEY=
S3_SECRET_KEY=
S3_REGION=
S3_BUCKET_NAME=
# Configure a third party S3 compatible storage service endpoint like StorJ leave empty if you use Amazon S3
# e.g., https://gateway.storjshare.io
S3_ENDPOINT_URL=
# Force path style for S3 compatible storage (0 for disabled, 1 for enabled)
S3_FORCE_PATH_STYLE=0
# Set this URL to add a public domain for all your client facing routes(default is WEBAPP_URL)
# PUBLIC_URL=https://survey.example.com
#####################
# Disable Features #
#####################
# Email Verification. If you enable Email Verification you have to setup SMTP-Settings, too.
EMAIL_VERIFICATION_DISABLED=1
# Password Reset. If you enable Password Reset functionality you have to setup SMTP-Settings, too.
PASSWORD_RESET_DISABLED=1
# Password reset token lifetime in minutes. Must be between 5 and 120 if set.
# PASSWORD_RESET_TOKEN_LIFETIME_MINUTES=30
# Development-only helper: log the password reset link to the server console instead of sending reset emails.
# DEBUG_SHOW_RESET_LINK=1
# Disable the Have-I-Been-Pwned breach check performed when a password is set (signup / reset).
# The check is an outbound HTTPS call to api.pwnedpasswords.com; if it can't be reached it fails
# open (password allowed, warning logged). Set this to 1 on air-gapped / closed-network
# deployments to skip the outbound call entirely.
# PASSWORD_HIBP_CHECK_DISABLED=1
# Email login. Disable the ability for users to login with email.
# EMAIL_AUTH_DISABLED=1
# Organization Invite. Disable the ability for invited users to create an account.
# INVITE_DISABLED=1
# Also apply the signup email-domain check to invited users. "1" to enable.
# SIGNUP_DOMAIN_CHECK_ON_INVITES=1
##########
# Other #
##########
# Display privacy policy, imprint and terms of service links in the footer of signup & public pages.
PRIVACY_URL=
TERMS_URL=
IMPRINT_URL=
IMPRINT_ADDRESS=
# Configure Turnstile in signup flow
# TURNSTILE_SITE_KEY=
# TURNSTILE_SECRET_KEY=
# Google reCAPTCHA v3 keys
RECAPTCHA_SITE_KEY=
RECAPTCHA_SECRET_KEY=
# Configure Github Login
GITHUB_ID=
GITHUB_SECRET=
# Configure Google Login
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
# Configure Azure Active Directory Login
AZUREAD_CLIENT_ID=
AZUREAD_CLIENT_SECRET=
AZUREAD_TENANT_ID=
# Configure Formbricks AI at the instance level
# Set the provider used for AI features on this instance.
# Accepted values for AI_PROVIDER: aws, google, azure, openai-compatible
# Set AI_MODEL to the provider-specific model or deployment name and configure the matching provider settings below.
# AI_PROVIDER=google
# AI_MODEL=gemini-3.5-flash
# Google Cloud settings for Gemini models
# For gemini-3.5-flash, use global, us, or eu. Regional locations such as europe-west3 or me-central2
# only work for models that Google lists as supported there, such as gemini-2.5-flash.
# Credentials are optional when Application Default Credentials are available.
# AI_GOOGLE_CLOUD_PROJECT=
# AI_GOOGLE_CLOUD_LOCATION=
# AI_GOOGLE_CLOUD_CREDENTIALS_JSON=
# AI_GOOGLE_CLOUD_APPLICATION_CREDENTIALS=
# Amazon Bedrock credentials
# AI_AWS_REGION=
# AI_AWS_ACCESS_KEY_ID=
# AI_AWS_SECRET_ACCESS_KEY=
# AI_AWS_SESSION_TOKEN=
# Azure AI / Microsoft Foundry credentials
# AI_AZURE_BASE_URL=
# AI_AZURE_RESOURCE_NAME=
# AI_AZURE_API_KEY=
# AI_AZURE_API_VERSION=v1
# OpenAI-compatible provider (self-hosted Qwen on a vLLM OpenAI-compatible /v1 server)
# Supported for self-hosted LLM GA v1: Qwen models served via vLLM only.
#
# Docker Compose users can either run their own endpoint and set AI_OPENAI_COMPATIBLE_BASE_URL
# to that URL, or enable the bundled Qwen/vLLM service with COMPOSE_PROFILES=qwen and:
# AI_PROVIDER=openai-compatible
# AI_MODEL=qwen3-14b-awq
# AI_OPENAI_COMPATIBLE_BASE_URL=http://vllm:8000/v1
# AI_OPENAI_COMPATIBLE_API_KEY=
# AI_OPENAI_COMPATIBLE_PROVIDER_NAME=vllm
# AI_OPENAI_COMPATIBLE_SUPPORTS_STRUCTURED_OUTPUTS=1
# AI_OPENAI_COMPATIBLE_HEADERS_JSON=
# AI_OPENAI_COMPATIBLE_QUERY_PARAMS_JSON=
#
# Optional bundled Qwen/vLLM Docker Compose overrides.
# QWEN_VLLM_IMAGE=vllm/vllm-openai:v0.14.0
# QWEN_MODEL_ID=Qwen/Qwen3-14B-AWQ
# QWEN_SERVED_MODEL_NAME=qwen3-14b-awq
# QWEN_MAX_MODEL_LEN=8192
# QWEN_MAX_NUM_SEQS=8
# QWEN_GPU_MEMORY_UTILIZATION=0.9
# QWEN_VLLM_HOST=127.0.0.1
# QWEN_VLLM_PORT=8000
# OpenID Connect (OIDC) configuration
# OIDC_CLIENT_ID=
# OIDC_CLIENT_SECRET=
# OIDC_ISSUER=
# OIDC_DISPLAY_NAME=
# OIDC_SIGNING_ALGORITHM=
# Configure SAML SSO
# SAML_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/formbricks-saml
# Configure this when you want to ship JS & CSS files from a complete URL instead of the current domain
# ASSET_PREFIX_URL=
# Oauth credentials for Notion Integration
NOTION_OAUTH_CLIENT_ID=
NOTION_OAUTH_CLIENT_SECRET=
# Stripe Billing Variables
STRIPE_PUBLISHABLE_KEY=
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
# Oauth credentials for Google sheet integration
GOOGLE_SHEETS_CLIENT_ID=
GOOGLE_SHEETS_CLIENT_SECRET=
GOOGLE_SHEETS_REDIRECT_URL=
# Oauth credentials for Airtable integration
AIRTABLE_CLIENT_ID=
# Oauth credentials for Slack integration
SLACK_CLIENT_ID=
SLACK_CLIENT_SECRET=
# Enterprise License Key
ENTERPRISE_LICENSE_KEY=
# Internal Environment (production, staging) - used for internal staging environment
# ENVIRONMENT=production
# Automatically assign new users to a specific organization and role within that organization
# Insert an existing organization id or generate a valid CUID for a new one at https://www.getuniqueid.com/cuid (e.g. cjld2cjxh0000qzrmn831i7rn)
# (Role Management is an Enterprise feature)
# AUTH_SSO_DEFAULT_TEAM_ID=
# AUTH_SKIP_INVITE_FOR_SSO=
# Send new users to Brevo
# BREVO_API_KEY=
# BREVO_LIST_ID=
# Ignore Rate Limiting across the Formbricks app
# RATE_LIMITING_DISABLED=1
# Disable telemetry reporting (usage stats sent to Formbricks). Ignored when an EE license is active.
# TELEMETRY_DISABLED=1
# Allow webhook URLs to point to internal/private network addresses (e.g. localhost, 192.168.x.x)
# WARNING: Only enable this if you understand the SSRF risks. Useful for self-hosted instances
# that need to send webhooks to internal services.
# DANGEROUSLY_ALLOW_WEBHOOK_INTERNAL_URLS=1
# OpenTelemetry OTLP endpoint (base URL, exporters append /v1/traces and /v1/metrics)
# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
# OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
# OTEL_SERVICE_NAME=formbricks
# OTEL_RESOURCE_ATTRIBUTES=deployment.environment=development
# Export Pino logs via OTLP too (off by default; also needs OTEL_EXPORTER_OTLP_ENDPOINT)
# OTEL_LOGS_ENABLED=1
# OTEL_TRACES_SAMPLER=parentbased_traceidratio
# OTEL_TRACES_SAMPLER_ARG=1
# Unsplash API Key
UNSPLASH_ACCESS_KEY=
# The below is used for Next Caching (uses In-Memory from Next Cache if not provided)
REDIS_URL=redis://localhost:6379
# The below is used for Rate Limiting (uses In-Memory LRU Cache if not provided) (You can use a service like Webdis for this)
# REDIS_HTTP_URL:
# Chatwoot
# CHATWOOT_BASE_URL=
# CHATWOOT_WEBSITE_TOKEN=
# Formbricks-in-Formbricks: dogfood in-app surveys inside the app itself.
# Set FORMBRICKS_WORKSPACE_ID to the Workspace ID that hosts your surveys to mount
# the survey widget in the authenticated app. FORMBRICKS_APP_URL is the Formbricks
# instance serving the widget (defaults to https://app.formbricks.com).
FORMBRICKS_WORKSPACE_ID=x6dnhn4fdu32iy5obuzdnkj2
FORMBRICKS_APP_URL=https://app.formbricks.com
# Enable Prometheus metrics
# PROMETHEUS_ENABLED=
# PROMETHEUS_EXPORTER_PORT=
# The SENTRY_DSN is used for error tracking and performance monitoring with Sentry.
# SENTRY_DSN=
# The SENTRY_AUTH_TOKEN variable is picked up by the Sentry Build Plugin.
# It's used automatically by Sentry during the build for authentication when uploading source maps.
# SENTRY_AUTH_TOKEN=
# The SENTRY_ENVIRONMENT is the environment which the error will belong to in the Sentry dashboard
# SENTRY_ENVIRONMENT=
# Configure the minimum role for user management from UI(owner, manager, disabled)
# USER_MANAGEMENT_MINIMUM_ROLE="manager"
# Configure the maximum age for the session in seconds. Default is 86400 (24 hours)
# SESSION_MAX_AGE=86400
# Audit logs options. Default 0.
# AUDIT_LOG_ENABLED=0
# If the ip should be added in the log or not. Default 0
# AUDIT_LOG_GET_USER_IP=0
# Optional Cube.js database overrides. The official local docker-compose.dev.yml stack points Cube at the
# local `postgres` service automatically; set these only when running Cube yourself or changing bundled defaults.
# CUBEJS_DB_HOST=postgres
# CUBEJS_DB_PORT=5432
# CUBEJS_DB_NAME=postgres
# CUBEJS_DB_USER=postgres
# CUBEJS_DB_PASS=postgres
# Lingo.dev API key for translation generation
LINGO_API_KEY=your_api_key_here