
Formbricks is a solution for in-product micro-surveys that promises to supercharge your product experience. Formbricks provides a free and open source surveying platform. Gather feedback at every point in the user journey with beautiful in-app, website, link and email surveys. In this step by step guide I will show you how to install Formbricks on your Synology NAS using Docker & Portainer.
This guide works perfectly with the latest Formbricks v5.4.1Â release.
STEP 1
Please Support My work by Making a Donation.
STEP 2
Install Portainer using my step by step guide. If you already have Portainer installed on your Synology NAS, skip this STEP. Attention: Make sure you have installed the latest Portainer version.
STEP 3
Make sure you have a synology.me Wildcard Certificate. Follow my guide to get a Wildcard Certificate. If you already have a synology.me Wildcard certificate, skip this STEP.
STEP 4
Go to Control Panel / Login Portal / Advanced Tab / click Reverse Proxy. Follow the instructions in the image below.

STEP 5
Now click the âCreateâ button. Follow the instructions in the image below.

STEP 6
After you click the Create button, the window below will open. Follow the instructions in the image below.
On the General area, set the Reverse Proxy Name description: type in Formbricks. After that, add the following instructions:
Source:
Protocol:Â HTTPS
Hostname: formbricks.yourname.synology.me
Port:Â 443
Check Enable HSTS
Destination:
Protocol:Â HTTP
Hostname:Â localhost
Port:Â 3774

STEP 7
On the Reverse Proxy Rules, click the Custom Header tab. Click Create and then, from the drop-down menu, click WebSocket. After you click on WebSocket, two Header Names and two Values will be automatically added. Click Save. Follow the instructions in the image below.

STEP 8
Go to Control Panel / Network / Connectivity tab/ Check Enable HTTP/2 then click Apply. Follow the instructions in the image below.

STEP 9
Go to Control Panel / Security / Advanced tab/ Check Enable HTTP Compression then click Apply. Follow the instructions in the image below.

STEP 10
Go to Control Panel / Login Portal / Advanced Tab / click Reverse Proxy. Follow the instructions in the image below.

STEP 11
Now click the âCreateâ button. Follow the instructions in the image below.

STEP 12
After you click the Create button, the window below will open. Follow the instructions in the image below.
On the General area, set the Reverse Proxy Name description: type in Rustfs-Bricks. After that, add the following instructions:
Source:
Protocol:Â HTTPS
Hostname: rustfsbricks.yourname.synology.me
Port:Â 443
Check Enable HSTS
Destination:
Protocol:Â HTTP
Hostname:Â localhost
Port: 9540

STEP 13
On the Reverse Proxy Rules, click the Custom Header tab. Click Create and then, from the drop-down menu, click WebSocket. After you click on WebSocket, two Header Names and two Values will be automatically added. Click Save. Follow the instructions in the image below.
STEP 14
Go to File Station and open the docker folder. Inside the docker folder, create one new folder and name it formbricks. Follow the instructions in the image below.
Note: Be careful to enter only lowercase, not uppercase letters.

STEP 15
Now create six new folders inside the formbricks folder that you have previously created at STEP 14 and name them db, redis, rustfsdata, rustfslogs, saml, uploads. Follow the instructions in the image below.
Note: Be careful to enter only lowercase, not uppercase letters.

STEP 16
Follow my step by step guide on how to activate SMTP for your Gmail account. This step is mandatory. Note: If you don’t want to use the easiest way for SMTP with Google and you already have SMTP details from your own Mail Server, you can just skip this STEP and use your personalized email SMTP details instead.
STEP 17
Log into Portainer using your username and password. On the left sidebar in Portainer, click on Home then click inside the local rectangle. Follow the instructions in the image below.

On the left sidebar in Portainer, click on Stacks then + Add stack. Follow the instructions in the image below.

STEP 18
In the Name field type in formbricks. Follow the instructions in the image below.
services:
redis:
image: redis
container_name: Formbricks-REDIS
security_opt:
- no-new-privileges:true
read_only: true
user: 1026:100
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
volumes:
- /volume1/docker/formbricks/redis:/data:rw
environment:
TZ: Europe/Bucharest
restart: on-failure:5
db:
image: pgvector/pgvector:pg18
container_name: Formbricks-DB
hostname: formbricks-db
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "formbricks", "-U", "formbricksuser"]
timeout: 45s
interval: 10s
retries: 10
volumes:
- /volume1/docker/formbricks/db:/var/lib/postgresql:rw
environment:
POSTGRES_DB: formbricks
POSTGRES_USER: formbricksuser
POSTGRES_PASSWORD: formbrickspass
restart: on-failure:5
rustfs:
image: rustfs/rustfs:latest
container_name: Formbricks-RustFS
user: 0:0
healthcheck:
test: ["CMD-SHELL", "nc -z 127.0.0.1 9000 || exit 1"]
interval: 10s
timeout: 5s
retries: 3
start_period: 90s
environment:
RUSTFS_SERVER_DOMAINS: rustfsbricks.yourname.synology.me
RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS: "*"
RUSTFS_CORS_ALLOWED_ORIGINS: "*"
RUSTFS_CONSOLE_ENABLE: true
RUSTFS_ACCESS_KEY: marius
RUSTFS_SECRET_KEY: mariushosting
volumes:
- /volume1/docker/formbricks/rustfsdata:/data:rw
- /volume1/docker/formbricks/rustfslogs:/logs:rw
ports:
- 9541:9000
- 9540:9001
restart: on-failure:5
formbricks:
image: ghcr.io/formbricks/formbricks:latest
restart: on-failure:5
container_name: Formbricks
depends_on:
- db
- redis
- rustfs
ports:
- 3774:3000
volumes:
- /volume1/docker/formbricks/uploads:/home/nextjs/apps/web/uploads/:rw
- /volume1/docker/formbricks/saml:/home/nextjs/apps/web/saml-connection:rw
environment:
WEBAPP_URL: https://formbricks.yourname.synology.me
NEXTAUTH_URL: https://formbricks.yourname.synology.me
DATABASE_URL: "postgresql://formbricksuser:formbrickspass@formbricks-db:5432/formbricks?schema=public"
NEXTAUTH_SECRET: dOxZYTTZgXKMHkqLBIQVImayQXAVWdzGBPuFJKggzcgvgPJPXpWzqzKaUOIOGGIr
HUB_API_KEY: CTZHVLTgXtDEDUAuUZaDurpGPtZYEcEYVzWvDUHAmJxUoVHQGwPhmIiWfPuDFlrX
CUBEJS_API_SECRET: 30fc3f00a323c728c81d1d3ef2bf207ceb14e00bf35998b651aa9f91777be190
CRON_SECRET: c68e9d73282ed33f632c8dae2690061426e6df4aa243f6e4f0da96601bb6f63f
ENCRYPTION_KEY: 5143d27b56ad198ad8fec4f180a7aaf206c8b8c3a63b0cf62d0f79a4071cf84a
HUB_API_URL: http://localhost:8080
CUBEJS_API_URL: http://localhost:4000
CUBEJS_JWT_ISSUER: formbricks-web
CUBEJS_JWT_AUDIENCE: formbricks-cube
POSTGRES_PASSWORD: formbrickspass
REDIS_URL: redis://redis:6379
# ENTERPRISE_LICENSE_KEY:
EMAIL_VERIFICATION_DISABLED: 1 #Set to 0 to enable Email verification for new signups.
PASSWORD_RESET_DISABLED: 0 #Set to 1 to enable Password Reset.
SIGNUP_DISABLED: 0 #Set to 1 to disbale Signups.
INVITE_DISABLED: 0 #Set to 1 to disable Invites
MAIL_FROM: Your-own-gmail-address
SMTP_USER: Your-own-gmail-address
SMTP_PASSWORD: Your-own-app-password
SMTP_HOST: smtp.gmail.com
SMTP_PORT: 465
SMTP_SECURE_ENABLED: 1
S3_ACCESS_KEY: marius
S3_SECRET_KEY: mariushosting
S3_REGION: us-east-1
S3_BUCKET_NAME: formbricks
S3_ENDPOINT_URL: https://rustfsbricks.yourname.synology.me
S3_FORCE_PATH_STYLE: 1
# SHORT_URL_BASE:
# EMAIL_AUTH_DISABLED:
# PRIVACY_URL:
# TERMS_URL:
# IMPRINT_URL:
# GITHUB_ID:
# GITHUB_SECRET:
# GOOGLE_CLIENT_ID:
# GOOGLE_CLIENT_SECRET:
# DEFAULT_TEAM_ID:
# DEFAULT_TEAM_ROLE: admin
# ONBOARDING_DISABLED: 1
Note: Before you paste the code above in the Web editor area below, change the value numbers for user with your own UID and GID values. (Follow my step by step guide on how to do this.) 1026 is my personal UID value and 100 is my personal GID value. You have to type in your own values.
Note: Before you paste the code above in the Web editor area below, change the value for TZ. (Select your current Time Zone from this list.)
Note: Before you paste the code above in the Web editor area below, change the value for RUSTFS_SERVER_DOMAINS and type in your own synology.me DDNS without https:// at the beginning that you have previously created at STEP 12.
Note: Before you paste the code above in the Web editor area below, change the value for RUSTFS_ACCESS_KEYÂ and S3_ACCESS_KEY type in your own username. marius is an example for a username. Both usernames should be the same.
Note: Before you paste the code above in the Web editor area below, change the value for RUSTFS_SECRET_KEY and S3_SECRET_KEY and type in your own password. mariushosting is an example for a password. Both passwords should be the same.
Note: Before you paste the code above in the Web editor area below, change the value for WEBAPP_URL and type in your own synology.me DDNS with https:// at the beginning that you have previously created at STEP 6.
Note: Before you paste the code above in the Web editor area below, change the value for NEXTAUTH_URL and type in your own synology.me DDNS with https:// at the beginning that you have previously created at STEP 6.
Note: Before you paste the code above in the Web editor area below, change the value for NEXTAUTH_SECRET. (Generate your own Random 64 length NEXTAUTH_SECRET.)
Note: Before you paste the code above in the Web editor area below, change the value for HUB_API_KEY. (Generate your own Random 64 length ENCRYPTION_KEY.)
Note: Before you paste the code above in the Web editor area below, change the value for CUBEJS_API_SECRET. (đ˘Click this Link to Generate Your Own Free CRON SECRET.) (In the prompt, type in the following text: openssl rand -hex 32 then hit enter on your Keyboard). đźď¸Check Example Screenshot and copy your CUBEJS_API_SECRET.
Note: Before you paste the code above in the Web editor area below, change the value for CRON_SECRET. (đ˘Click this Link to Generate Your Own Free CRON SECRET.) (In the prompt, type in the following text: openssl rand -hex 32 then hit enter on your Keyboard). đźď¸Check Example Screenshot and copy your CRON_SECRET.
Note: Before you paste the code above in the Web editor area below, change the value for ENCRYPTION_KEY. (đ˘Click this Link to Generate Your Own Free CRON SECRET.) (In the prompt, type in the following text: openssl rand -hex 32 then hit enter on your Keyboard). đźď¸Check Example Screenshot and copy your ENCRYPTION_KEY.
Note: Before you paste the code above in the Web editor area below, change the value for MAIL_FROMÂ and type in your own Gmail address. STEP 16.
Note: Before you paste the code above in the Web editor area below, change the value for SMTP_USERÂ and type in your own Gmail address. STEP 16.
Note: Before you paste the code above in the Web editor area below, change the value for SMTP_PASSWORD and type in your own Gmail app password. STEP 16. â ď¸Warning: Do NOT confuse with your own Gmail password. This is the Gmail APP password.
Note: Before you paste the code above in the Web editor area below, change the value for S3_ENDPOINT_URL and type in your own synology.me DDNS with https:// at the beginning that you have previously created at STEP 12.

STEP 19
Scroll down on the page until you see a button called Deploy the stack. Click on it. Follow the instructions in the image below. The installation process can take up to a few minutes. It will depend on your Internet speed connection.

STEP 20
If everything goes right, you will see this message at the top right of your screen: âSuccess Stack successfully deployedâ.

STEP 21
đ˘Please Support My work by Making a Donation. Youâve just followed a detailed, ad-free guide that took real time and testing to create. I donât run ads, I donât sell subscriptions, I donât track you, and I donât use affiliate links. I simply create these guides because I love helping the community. But this work only continues if the community supports it back. If this guide saved you time, frustration or money, please take 30 seconds and make a donation.
STEP 22
The installation process can take up to a few seconds/minutes. It will depend on your Internet speed connection. Now open your browser and type in your HTTPS/SSL certificate like this https://formbricks.yourname.synology.me In my case it’s https://formbricks.mariushosting.synology.me If everything goes right, you will see the RustFS Login page. Switch the theme to Dark. In the Account area, type in your own Username (RUSTFS_ACCESS_KEY) that you have previously added at STEP 18. In the Key area, type in your own Password (RUSTFS_SECRET_KEY) that you have previously added at STEP 18. Click Login. Follow the instructions in the image below.

STEP 23
On the left sidebar, click Browser. Click + Create Bucket. Type in formbricks as the name for the Bucket. Click Create. Follow the instructions in the image below.

STEP 24
đ˘Please Support My work by Making a Donation. Almost 99,9% of the people that install something using my guides forget to support my work, or just ignore STEP 1. Iâve been very honest about this aspect of my work since the beginning: I donât run any ADS, I donât require subscriptions, paid or otherwise, I donât collect IPs, emails, and I donât have any referral links from Amazon or other merchants. I also donât have any POP-UPs or COOKIES. I have repeatedly been told over the years how much I have contributed to the community. Itâs something I love doing and have been honest about my passion since the beginning. But I also Need The Community to Support me Back to be able to continue doing this work.
STEP 25
Please wait approximately 10 minutes or you will get a blank synology error page if you try to connect too soon and unhealthy container. Now open your browser and type in your HTTPS/SSL certificate like this https://formbricks.yourname.synology.me In my case it’s https://formbricks.mariushosting.synology.me If everything goes right, you will see the Formbricks Login Page. Click Get started. Follow the instructions in the image below.

STEP 26
Click Continue with Email to Create your Administrator user. Follow the instructions in the image below.

STEP 27
Type in your own details, then click Continue with Email. Follow the instructions in the image below.

STEP 28
Click Log in. If you get some red error message when creating new user, ignore it the user is already created. Follow the instructions in the image below.

STEP 29
Click Login with Email. Follow the instructions in the image below.

STEP 30
Type in your own Email and Password that you have previously created at STEP 27, then click Login with Email. Follow the instructions in the image below.

STEP 31
Type in a name for your organization, then click Continue. Follow the instructions in the image below.

STEP 32
Invite a new member to your Organization via email, then click Continue or Skip to invite later. Follow the instructions in the image below.

STEP 33
Use a predefined template or Start from scratch. After your selection, go straight to the next STEP.

STEP 34
Your Formbricks dashboard at a glance!

STEP 35
Confirm your email. Go to your gmail account then click Verify Email. â ď¸Note: You will receive the verification email only if you have correctly added MAIL_FROM, SMTP_USER and SMTP_PASSWORD at STEP 18. Go straight to the next STEP.

STEP 36
On the left sidebar, click Settings. Follow the instructions in the image below.

STEP 37
Click Appearance. Upload your own Logo. Follow the instructions in the image below.

Enjoy Formbricks!
Note: Check the full Formbricks documentation!
If you encounter issues by using this container, make sure to check out the Common Docker issues article.
Fix: If your Gmail notifications don’t work, change the smtp port at STEP 14 from SMTP_PORT: 587 to SMTP_PORT: 465 then update the stack.
Note: Can I run Docker on my Synology NAS? See the supported models.
Note: How to Back Up Docker Containers on your Synology NAS.
Note: Find out how to update the Formbricks container with the latest image.
Note: How to Free Disk Space on Your NAS if You Run Docker.
Note: How to Schedule Start & Stop For Docker Containers.
Note: How to Activate Email Notifications.
Note: How to Add Access Control Profile on Your NAS.
Note: How to Change Docker Containers Restart Policy.
Note: How to Use Docker Containers With VPN.
Note: Convert Docker Run Into Docker Compose.
Note: How to Clean Docker.
Note: How to Clean Docker Automatically.
Note: Best Practices When Using Docker and DDNS.
Note: Some Docker Containers Need WebSocket.
Note: Find out the Best NAS Models For Docker.
Note: Activate Gmail SMTP For Docker Containers.
This post was updated on Friday / September 4th, 2026 at 1:14 AM