The image is pre-built and requires minimal setup—just download it and start the container.Documentation Index
Fetch the complete documentation index at: https://formbricks.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Requirements
Make sure Docker and Docker Compose are installed on your system. These are usually included in tools like Docker Desktop and Rancher Desktop.docker compose without the hyphen is now the primary method of using docker-compose, according to the
Docker documentation.Start
-
Create a New Directory for Formbricks
Open a terminal and run the following commands to create and enter a new directory for Formbricks:
-
Download the Docker-Compose File
Get the docker-compose file from the Formbricks repository by running:
-
Generate NextAuth Secret
You need a NextAuth secret for session signing and encryption. Run one of the commands below based on your operating system:
For Linux:
For macOS:
-
Generate Encryption Key
Next, you need to generate an Encryption Key. This will be used for authenticating and verifying 2 Factor Authentication. Run one of the commands below based on your operating system:
For Linux:
For macOS:
-
Generate Cron Secret
You require a Cron secret to secure API access for running cron jobs. Run one of the commands below based on your operating system:
For Linux:
For macOS:
-
Start the Docker Setup
Now, you’re ready to run Formbricks with Docker. Use the command below to start Formbricks along with a PostgreSQL database using Docker Compose:
The
-dflag runs the containers in the background, so they keep running even after you close the terminal. - Open Formbricks in Your Browser Once the setup is running, open http://localhost:3000 in your browser to access Formbricks. The first time you visit, you’ll see a setup wizard. Follow the steps to create your first user and start using Formbricks.
Update
Please take a look at our migration guide for version specific steps to update Formbricks.-
Pull the latest Formbricks image
-
Stop the Formbricks stack
-
Re-start the Formbricks stack with the updated image
Optional: Adding RustFS for File Storage
RustFS provides S3-compatible object storage for file uploads in Formbricks. If you want to enable features like image uploads, survey file uploads, or custom logos, you can run RustFS alongside Formbricks while keeping the existingS3_* environment variables.
For a broader overview of file storage options and required environment variables, see our File Uploads
Configuration guide.
Quick Start: Using docker-compose.dev.yml
The fastest way to test file uploads locally is to use the includeddocker-compose.dev.yml, which already
starts RustFS and auto-creates the formbricks bucket.
-
Start the local stack
From the repository root:
This starts PostgreSQL, Valkey (Redis), Mailhog, RustFS, a permissions helper, and a one-time bucket bootstrap job.
-
Access the RustFS console
Open http://localhost:9001 in your browser and sign in with:
- Username:
devrustfs - Password:
devrustfs123
- Username:
-
Configure Formbricks
Update your
.envfile or environment variables: - Verify uploads After uploading a file in Formbricks, open http://localhost:9001 and navigate to Buckets → formbricks to confirm the object was stored successfully.
The development compose file also runs a
rustfs-init job so you do not need to create the bucket manually.Manual RustFS Setup (Custom Configuration)
Recommended: Prefer
docker-compose.dev.yml for local development unless you
need to fold RustFS into an existing custom Compose stack.docker-compose.yml, use a pinned RustFS image plus two helper
services:
.env file next to your docker-compose.yml instead of
hardcoding them in Compose:
Restrict the
.env file to 0600 and do not commit it to source control. For production, prefer the
one-click setup script, which creates a separate least-privilege service
account automatically.Tips & Common Gotchas
-
Permission denied on
/data: Ensure the mounted directory or volume is owned by UID10001. Therustfs-permshelper handles this for Compose-managed volumes. -
Storage medium matters: Prefer local SSD or NVMe storage for
rustfs-data, use XFS on dedicated host-managed disks where possible, and avoid NFS or other network filesystems for RustFS data. -
Connection refused: Ensure the
rustfscontainer is running and port9000is reachable from the Formbricks container. -
Bucket not found: Confirm that
rustfs-initcompleted successfully or create the bucket manually withmc. -
Auth failed: Confirm that
S3_ACCESS_KEYandS3_SECRET_KEYmatch the RustFS credentials configured on the server. -
Backups: Back up the
rustfs-datavolume regularly, especially for single-server deployments. - Console exposure: Do not expose the RustFS console port publicly in production. Keep it on a private network or behind admin-only controls.
-
Health check: From the Formbricks container:
Production Setup with Traefik
For production deployments, use the one-click setup script, which automatically configures:- RustFS behind Traefik on a dedicated
files.yourdomain.comsubdomain - Automatic SSL certificate generation via Let’s Encrypt
- CORS configuration scoped to your Formbricks domain
- Rate limiting middleware
- Separate RustFS admin and Formbricks service credentials
- A
rustfs-initjob that creates the bucket and access policy
Even in the one-click flow, bundled RustFS remains a convenience-oriented single-server deployment. For
higher availability, stricter operational requirements, or larger storage footprints, prefer external object
storage or a dedicated RustFS deployment managed separately from Formbricks.
Debug
If you encounter any issues, you can check the logs of the container with this command:CTRL + C.
Customizing environment variablesTo edit any of the available environment variables, check out our Configuration section!