# documentation: https://formbricks.com/docs/self-hosting/configuration # slogan: Open Source Survey Platform # tags: form, builder, forms, survey, open source, experience, management, self-hosted, docker # logo: svgs/formbricks.png # port: 3000 services: formbricks: image: ghcr.io/formbricks/formbricks:latest environment: - SERVICE_FQDN_FORMBRICKS_3000 - WEBAPP_URL=$SERVICE_FQDN_FORMBRICKS - DATABASE_URL=postgres://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgresql:5432/${POSTGRESQL_DATABASE:-formbricks} - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL} - NEXTAUTH_SECRET=$SERVICE_BASE64_64_NEXTAUTH - NEXTAUTH_URL=$SERVICE_FQDN_FORMBRICKS - ENCRYPTION_KEY=$SERVICE_BASE64_64_ENCRYPTION - CRON_SECRET=$SERVICE_BASE64_64_CRON - ENTERPRISE_LICENSE_KEY=${ENTERPRISE_LICENSE_KEY} - 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} - SMTP_REJECT_UNAUTHORIZED_TLS=${SMTP_REJECT_UNAUTHORIZED_TLS:-1} - SHORT_URL_BASE=${SHORT_URL_BASE} - EMAIL_VERIFICATION_DISABLED=${EMAIL_VERIFICATION_DISABLED:-1} - PASSWORD_RESET_DISABLED=${PASSWORD_RESET_DISABLED:-1} - EMAIL_AUTH_DISABLED=${EMAIL_AUTH_DISABLED:-0} - INVITE_DISABLED=${INVITE_DISABLED:-0} - ASSET_PREFIX_URL=${ASSET_PREFIX_URL} - UNSPLASH_ACCESS_KEY=${UNSPLASH_ACCESS_KEY} - GITHUB_ID=${GITHUB_ID} - GITHUB_SECRET=${GITHUB_SECRET} - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID} - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET} - 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} - REDIS_URL=${REDIS_URL} - REDIS_HTTP_URL=${REDIS_HTTP_URL} - DEFAULT_ORGANIZATION_ID=${DEFAULT_ORGANIZATION_ID} - DEFAULT_ORGANIZATION_ROLE=${DEFAULT_ORGANIZATION_ROLE:-admin} volumes: - formbricks-uploads:/apps/web/uploads/ depends_on: postgresql: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"] interval: 2s timeout: 10s retries: 15 postgresql: image: postgres:16-alpine 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