2026-01-27 20:12:57 +00:00
|
|
|
# documentation: https://formbricks.com/docs/self-hosting/setup/docker
|
2024-07-26 15:27:20 +00:00
|
|
|
# slogan: Open Source Survey Platform
|
2025-08-17 16:23:57 +00:00
|
|
|
# category: analytics
|
2026-01-27 20:12:57 +00:00
|
|
|
# tags: form, builder, forms, survey
|
2024-02-20 14:07:12 +00:00
|
|
|
# logo: svgs/formbricks.png
|
2024-03-12 14:09:24 +00:00
|
|
|
# port: 3000
|
2023-11-28 11:05:14 +00:00
|
|
|
|
|
|
|
|
services:
|
|
|
|
|
formbricks:
|
2026-01-27 20:12:57 +00:00
|
|
|
image: ghcr.io/formbricks/formbricks:4.5.0 # Released on Jan 5 2026
|
2023-11-28 11:05:14 +00:00
|
|
|
environment:
|
2025-08-10 08:10:22 +00:00
|
|
|
- SERVICE_URL_FORMBRICKS_3000
|
|
|
|
|
- WEBAPP_URL=$SERVICE_URL_FORMBRICKS
|
2023-11-28 11:05:14 +00:00
|
|
|
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgresql:5432/${POSTGRESQL_DATABASE:-formbricks}
|
2024-07-26 15:27:20 +00:00
|
|
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
2024-11-29 14:07:47 +00:00
|
|
|
- NEXTAUTH_SECRET=$SERVICE_BASE64_NEXTAUTH
|
2025-08-10 08:10:22 +00:00
|
|
|
- NEXTAUTH_URL=$SERVICE_URL_FORMBRICKS
|
2024-11-29 14:07:47 +00:00
|
|
|
- ENCRYPTION_KEY=$SERVICE_BASE64_ENCRYPTION
|
|
|
|
|
- CRON_SECRET=$SERVICE_BASE64_CRON
|
2024-07-26 15:27:20 +00:00
|
|
|
- ENTERPRISE_LICENSE_KEY=${ENTERPRISE_LICENSE_KEY}
|
2023-11-28 11:05:14 +00:00
|
|
|
- MAIL_FROM=${MAIL_FROM:-test@example.com}
|
|
|
|
|
- SMTP_HOST=${SMTP_HOST:-test.example.com}
|
|
|
|
|
- SMTP_PORT=${SMTP_PORT:-587}
|
|
|
|
|
- SMTP_USER=${SMTP_USER:-test}
|
|
|
|
|
- SMTP_PASSWORD=${SMTP_PASSWORD:-test}
|
|
|
|
|
- SMTP_SECURE_ENABLED=${SMTP_SECURE_ENABLED:-0}
|
2024-07-26 15:27:20 +00:00
|
|
|
- SMTP_REJECT_UNAUTHORIZED_TLS=${SMTP_REJECT_UNAUTHORIZED_TLS:-1}
|
2023-11-28 11:05:14 +00:00
|
|
|
- SHORT_URL_BASE=${SHORT_URL_BASE}
|
|
|
|
|
- EMAIL_VERIFICATION_DISABLED=${EMAIL_VERIFICATION_DISABLED:-1}
|
|
|
|
|
- PASSWORD_RESET_DISABLED=${PASSWORD_RESET_DISABLED:-1}
|
2024-07-26 15:27:20 +00:00
|
|
|
- EMAIL_AUTH_DISABLED=${EMAIL_AUTH_DISABLED:-0}
|
2023-11-28 11:05:14 +00:00
|
|
|
- INVITE_DISABLED=${INVITE_DISABLED:-0}
|
2024-07-26 15:27:20 +00:00
|
|
|
- ASSET_PREFIX_URL=${ASSET_PREFIX_URL}
|
|
|
|
|
- UNSPLASH_ACCESS_KEY=${UNSPLASH_ACCESS_KEY}
|
2023-11-28 11:05:14 +00:00
|
|
|
- GITHUB_ID=${GITHUB_ID}
|
|
|
|
|
- GITHUB_SECRET=${GITHUB_SECRET}
|
|
|
|
|
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
|
|
|
|
|
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
|
2024-07-26 15:27:20 +00:00
|
|
|
- AZUREAD_CLIENT_ID=${AZUREAD_CLIENT_ID}
|
|
|
|
|
- AZUREAD_CLIENT_SECRET=${AZUREAD_CLIENT_SECRET}
|
|
|
|
|
- AZUREAD_TENANT_ID=${AZUREAD_TENANT_ID}
|
|
|
|
|
- OIDC_CLIENT_ID=${OIDC_CLIENT_ID}
|
|
|
|
|
- OIDC_CLIENT_SECRET=${OIDC_CLIENT_SECRET}
|
|
|
|
|
- OIDC_ISSUER=${OIDC_ISSUER}
|
|
|
|
|
- OIDC_DISPLAY_NAME=${OIDC_DISPLAY_NAME}
|
|
|
|
|
- OIDC_SIGNING_ALGORITHM=${OIDC_SIGNING_ALGORITHM}
|
|
|
|
|
- NOTION_OAUTH_CLIENT_ID=${NOTION_OAUTH_CLIENT_ID}
|
|
|
|
|
- NOTION_OAUTH_CLIENT_SECRET=${NOTION_OAUTH_CLIENT_SECRET}
|
|
|
|
|
- GOOGLE_SHEETS_CLIENT_ID=${GOOGLE_SHEETS_CLIENT_ID}
|
|
|
|
|
- GOOGLE_SHEETS_CLIENT_SECRET=${GOOGLE_SHEETS_CLIENT_SECRET}
|
|
|
|
|
- GOOGLE_SHEETS_REDIRECT_URL=${GOOGLE_SHEETS_REDIRECT_URL}
|
|
|
|
|
- AIRTABLE_CLIENT_ID=${AIRTABLE_CLIENT_ID}
|
|
|
|
|
- SLACK_CLIENT_ID=${SLACK_CLIENT_ID}
|
|
|
|
|
- SLACK_CLIENT_SECRET=${SLACK_CLIENT_SECRET}
|
|
|
|
|
- PRIVACY_URL=${PRIVACY_URL}
|
|
|
|
|
- TERMS_URL=${TERMS_URL}
|
|
|
|
|
- IMPRINT_URL=${IMPRINT_URL}
|
|
|
|
|
- RATE_LIMITING_DISABLED=${RATE_LIMITING_DISABLED:-0}
|
|
|
|
|
- OPENTELEMETRY_LISTENER_URL=${OPENTELEMETRY_LISTENER_URL}
|
2026-01-27 20:12:57 +00:00
|
|
|
- 'REDIS_URL=redis://valkey:6379'
|
2024-07-26 15:27:20 +00:00
|
|
|
- DEFAULT_ORGANIZATION_ID=${DEFAULT_ORGANIZATION_ID}
|
2024-11-29 14:07:47 +00:00
|
|
|
- DEFAULT_ORGANIZATION_ROLE=${DEFAULT_ORGANIZATION_ROLE:-owner}
|
2026-01-27 20:12:57 +00:00
|
|
|
- S3_ACCESS_KEY=$SERVICE_USER_MINIO
|
|
|
|
|
- S3_SECRET_KEY=${SERVICE_PASSWORD_MINIO}
|
|
|
|
|
- S3_REGION=us-east-1
|
|
|
|
|
- S3_BUCKET_NAME=formbricks
|
|
|
|
|
- S3_ENDPOINT_URL=$MINIO_SERVER_URL # This has to be publically accessible by frombricks frontend, using http://minio:9000 doesn't work!!
|
|
|
|
|
- 'S3_FORCE_PATH_STYLE=1'
|
2023-11-28 11:05:14 +00:00
|
|
|
volumes:
|
|
|
|
|
- formbricks-uploads:/apps/web/uploads/
|
|
|
|
|
depends_on:
|
|
|
|
|
postgresql:
|
|
|
|
|
condition: service_healthy
|
2026-01-27 20:12:57 +00:00
|
|
|
valkey:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
minio:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
|
2023-11-28 11:05:14 +00:00
|
|
|
healthcheck:
|
2024-05-17 08:11:55 +00:00
|
|
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
2023-11-28 11:05:14 +00:00
|
|
|
interval: 2s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 15
|
|
|
|
|
|
|
|
|
|
postgresql:
|
2024-11-29 14:07:47 +00:00
|
|
|
image: pgvector/pgvector:pg16
|
2023-11-28 11:05:14 +00:00
|
|
|
volumes:
|
|
|
|
|
- formbricks-postgresql-data:/var/lib/postgresql/data
|
|
|
|
|
environment:
|
|
|
|
|
- POSTGRES_USER=${SERVICE_USER_POSTGRESQL}
|
|
|
|
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
|
|
|
|
- POSTGRES_DB=${POSTGRESQL_DATABASE:-formbricks}
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
|
|
|
|
interval: 5s
|
|
|
|
|
timeout: 20s
|
|
|
|
|
retries: 10
|
2026-01-27 20:12:57 +00:00
|
|
|
|
|
|
|
|
valkey:
|
|
|
|
|
image: valkey/valkey:8-alpine
|
|
|
|
|
command: valkey-server --appendonly yes
|
|
|
|
|
volumes:
|
|
|
|
|
- formbricks-valkey:/data
|
|
|
|
|
healthcheck:
|
|
|
|
|
test:
|
|
|
|
|
- CMD-SHELL
|
|
|
|
|
- 'valkey-cli ping | grep PONG'
|
|
|
|
|
interval: 5s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 5
|
|
|
|
|
start_period: 3s
|
|
|
|
|
|
|
|
|
|
minio:
|
|
|
|
|
image: ghcr.io/coollabsio/minio:RELEASE.2025-10-15T17-29-55Z # Released on 15 October 2025
|
|
|
|
|
command: server /data --console-address ":9001"
|
|
|
|
|
environment:
|
|
|
|
|
- MINIO_SERVER_URL=$MINIO_SERVER_URL
|
|
|
|
|
- MINIO_BROWSER_REDIRECT_URL=$MINIO_BROWSER_REDIRECT_URL
|
|
|
|
|
- MINIO_ROOT_USER=$SERVICE_USER_MINIO
|
|
|
|
|
- MINIO_ROOT_PASSWORD=$SERVICE_PASSWORD_MINIO
|
|
|
|
|
volumes:
|
|
|
|
|
- formbricks-minio-data:/data
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "mc", "ready", "local"]
|
|
|
|
|
interval: 5s
|
|
|
|
|
timeout: 20s
|
|
|
|
|
retries: 10
|
|
|
|
|
|
|
|
|
|
minio-init:
|
|
|
|
|
image: minio/mc:latest
|
|
|
|
|
depends_on:
|
|
|
|
|
minio:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
entrypoint: >
|
|
|
|
|
sh -c "
|
|
|
|
|
mc alias set local http://minio:9000 ${SERVICE_USER_MINIO} ${SERVICE_PASSWORD_MINIO} &&
|
|
|
|
|
mc mb -p local/formbricks || true &&
|
|
|
|
|
mc anonymous set private local/formbricks
|
|
|
|
|
"
|
|
|
|
|
restart: "no"
|
|
|
|
|
exclude_from_hc: true
|