version: "3.3" x-environment: &environment environment: ######################################################## REQUIRED ######################################################## # The url of your Formbricks instance used in the admin panel # Set this to your public-facing URL, e.g., https://example.com WEBAPP_URL: # Required for next-auth. Should be the same as WEBAPP_URL NEXTAUTH_URL: # PostgreSQL DB for Formbricks to connect to DATABASE_URL: "postgresql://postgres:postgres@postgres:5432/formbricks?schema=public" # NextJS Auth # @see: https://next-auth.js.org/configuration/options#nextauth_secret # You can use: `openssl rand -hex 32` to generate one NEXTAUTH_SECRET: # Encryption Key is used for 2FA & Single use URLs for Link Surveys # You can use: $(openssl rand -hex 32) to generate one ENCRYPTION_KEY: # API Secret for running cron jobs. # 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 ############################################# OPTIONAL (ENTERPRISE EDITION) ############################################# # Enterprise License Key (More info at: https://formbricks.com/docs/self-hosting/license) # Required to access Enterprise-only features # ENTERPRISE_LICENSE_KEY: ############################################# OPTIONAL (EMAIL CONFIGURATION) ############################################# # Email Configuration # MAIL_FROM: # MAIL_FROM_NAME: # SMTP_HOST: # SMTP_PORT: # SMTP_USER: # SMTP_PASSWORD: # SMTP_AUTHENTICATED: # (Additional option for TLS (port 465) only) # SMTP_SECURE_ENABLED: # 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 (APP CONFIGURATION) ############################################## # Set the below to 0 to enable Email Verification for new signups (will required Email Configuration) EMAIL_VERIFICATION_DISABLED: 1 # Set the below to 0 to enable Password Reset (will required Email Configuration) PASSWORD_RESET_DISABLED: 1 # Set the below to 1 to disable logins with email # EMAIL_AUTH_DISABLED: # Set the below to 1 to disable invites # INVITE_DISABLED: # Set the below if you want to ship JS & CSS files from a complete URL instead of the current domain # ASSET_PREFIX_URL: # Set the below to your Unsplash API Key for their Survey Backgrounds # UNSPLASH_ACCESS_KEY: # Set the below to 0 to disable cron jobs # DOCKER_CRON_ENABLED: 1 # Set the below to your public domain (default is WEBAPP_URL) # PUBLIC_URL: # The SENTRY_DSN is used for error tracking and performance monitoring with Sentry. # SENTRY_DSN: # It's used for authentication when uploading source maps to Sentry, to make errors more readable. # SENTRY_AUTH_TOKEN: ################################################### OPTIONAL (STORAGE) ################################################### # Set the below to set a custom Upload Directory # UPLOADS_DIR: # Set S3 Storage configuration (required for the file upload in serverless environments like Vercel) # S3_ACCESS_KEY: # S3_SECRET_KEY: # S3_REGION: # S3_BUCKET_NAME: # Set a third party S3 compatible storage service endpoint like StorJ leave empty if you use Amazon S3 # S3_ENDPOINT_URL= # Force path style for S3 compatible storage (0 for disabled, 1 for enabled) S3_FORCE_PATH_STYLE: 0 ############################################# OPTIONAL (OAUTH CONFIGURATION) ############################################# # Set the below from Cloudflare Turnstile if you want to enable turnstile in signups # TURNSTILE_SITE_KEY: # TURNSTILE_SECRET_KEY: # Set the below keys to enable recaptcha V3 for survey responses bot protection(only available in the Enterprise Edition) # RECAPTCHA_SITE_KEY= # RECAPTCHA_SECRET_KEY= # Set the below from GitHub if you want to enable GitHub OAuth # GITHUB_ID: # GITHUB_SECRET: # Set the below from Google if you want to enable Google OAuth # GOOGLE_CLIENT_ID: # GOOGLE_CLIENT_SECRET: # Set the below from Azure Active Directory Login if you want to enable Azure AD OAuth # AZUREAD_CLIENT_ID: # AZUREAD_CLIENT_SECRET: # AZUREAD_TENANT_ID: # Set the below to OpenID Connect Provider if you want to enable OIDC # OIDC_CLIENT_ID: # OIDC_CLIENT_SECRET: # OIDC_ISSUER: # OIDC_DISPLAY_NAME: # OIDC_SIGNING_ALGORITHM: # Set the below to SAML Provider if you want to enable SAML # SAML_DATABASE_URL: "postgresql://postgres:postgres@postgres:5432/formbricks-saml?sslmode=disable" ########################################## OPTIONAL (THIRD PARTY INTEGRATIONS) ########################################### # Oauth credentials for Notion Integration # NOTION_OAUTH_CLIENT_ID: # NOTION_OAUTH_CLIENT_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: ############################################### OPTIONAL (LEGAL INFORMATION) ################################################ # Set the below to have your own Privacy Page URL on auth & link survey page # PRIVACY_URL: # Set the below to have your own Terms Page URL on auth & link survey page # TERMS_URL: # Set the below to have your own Imprint Page URL on auth & link survey page # IMPRINT_URL: # Set the below to have your own Address on email footer # IMPRINT_ADDRESS: ########################################## OPTIONAL (SERVER CONFIGURATION) ########################################### # Set the below to 1 to disable Rate Limiting across Formbricks # RATE_LIMITING_DISABLED: 1 # Set the below to send OpenTelemetry data for tracing # OPENTELEMETRY_LISTENER_URL: http://localhost:4318/v1/traces # Set the below to use Redis for Next Caching (default is In-Memory from Next Cache) # REDIS_URL: # Set the below to use for Rate Limiting (default us In-Memory LRU Cache) # REDIS_HTTP_URL: ########################################## OPTIONAL (AUDIT LOGGING) ########################################### # Set the below to 1 to enable audit logging. The audit log requires Redis to be configured with the REDIS_URL env variable. # AUDIT_LOG_ENABLED: 1 # Set the below to get the ip address of the user from the request headers # AUDIT_LOG_GET_USER_IP: 1 ############################################# OPTIONAL (OTHER) ############################################# # signup is disabled by default for self-hosted instances, users can only signup using an invite link, in order to allow signup from SSO(without invite), set the below to 1 # AUTH_SKIP_INVITE_FOR_SSO=1 # Set the below to automatically assign new users to a specific team, insert an existing team id # (Role Management is an Enterprise feature) # AUTH_SSO_DEFAULT_TEAM_ID= # 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 services: postgres: restart: always image: pgvector/pgvector:pg17 volumes: - postgres:/var/lib/postgresql/data environment: # Postgres DB Super User Password # Replace the below with your own secure password & Make sure the password matches the password field in DATABASE_URL above - POSTGRES_PASSWORD=postgres formbricks: restart: always image: ghcr.io/formbricks/formbricks:latest depends_on: - postgres ports: - 3000:3000 volumes: - uploads:/home/nextjs/apps/web/uploads/ - ./saml-connection:/home/nextjs/apps/web/saml-connection <<: *environment volumes: postgres: driver: local uploads: driver: local