Files
formbricks/docker/docker-compose.yml

236 lines
8.4 KiB
YAML

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:
# Redis URL for caching, rate limiting, and audit logging
# To use external Redis/Valkey: remove the redis service below and update this URL
REDIS_URL: redis://redis:6379
# 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 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:
# The SENTRY_ENVIRONMENT is used to identify the environment in Sentry.
# SENTRY_ENVIRONMENT:
################################################### OPTIONAL (STORAGE) ###################################################
# 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
########################################## OPTIONAL (AUDIT LOGGING) ###########################################
# Set the below to 1 to enable audit logging.
# 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
# Redis/Valkey service for caching, rate limiting, and audit logging
# Remove this service if you want to use an external Redis/Valkey instance
redis:
restart: always
image: valkey/valkey@sha256:12ba4f45a7c3e1d0f076acd616cb230834e75a77e8516dde382720af32832d6d
command: valkey-server --appendonly yes
volumes:
- redis:/data
ports:
- "6379:6379"
formbricks:
restart: always
image: ghcr.io/formbricks/formbricks:latest
depends_on:
- postgres
- redis
ports:
- 3000:3000
volumes:
- ./saml-connection:/home/nextjs/apps/web/saml-connection
<<: *environment
volumes:
postgres:
driver: local
redis:
driver: local