Formbricks
Experience Management Suite built on the largest open source survey stack worldwide. Gracefully gather feedback at every step of the customer journey to know what your customers need.
Directory Structure
- .env
- docker-compose.yml
docker-compose.yml
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:
############################################# 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:
# SMTP_HOST:
# SMTP_PORT:
# SMTP_USER:
# SMTP_PASSWORD:
# (Additional option for TLS (port 465) only)
# SMTP_SECURE_ENABLED: 1
# 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 value if you have and want to use a custom URL for the links created by the Link Shortener
# SHORT_URL_BASE:
# 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:
################################################### 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 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:
########################################## 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:
########################################## 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 (OTHER) #############################################
# Set the below to 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)
# DEFAULT_ORGANIZATION_ID:
# DEFAULT_ORGANIZATION_ROLE: admin
services:
postgres:
restart: always
image: postgres:15-alpine
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/
<<: *environment
volumes:
postgres:
driver: local
uploads:Resources
Website: https://formbricks.com/
GitHub: https://github.com/formbricks/formbricks
Docker Hub: https://hub.docker.com/r/formbricks/formbricks
Configuration: https://formbricks.com/docs/self-hosting/docker