How to Install Formbricks on Your Synology NAS

How to Install Formbricks on Your Synology NAS

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.

šŸ’”Note: This guide works perfectly with the latest Formbricks v6.0.2Ā release.

šŸ’”Note: Check out my guide on how to Install Formbricks on Your UGREEN NAS.

  • 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.

Formbricks Synology NAS Set up 1

  • STEP 5

Now click the ā€œCreateā€ button. Follow the instructions in the image below.

Formbricks Synology NAS Set up 2

  • 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

Formbricks Synology NAS Set up 3

  • 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.

Synology Proxy WebSocket

  • STEP 8

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

Formbricks Synology NAS Set up 4

  • STEP 9

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

Formbricks Synology NAS Set up 5

  • STEP 10

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

Formbricks Synology NAS Set up 8 new 2031

  • STEP 11

Now click the ā€œCreateā€ button. Follow the instructions in the image below.

Formbricks Synology NAS Set up 7 new 2031

  • 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

Formbricks Synology NAS Set up 9 new 2031

  • 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.

Formbricks Synology NAS Set up 6

  • 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.

Formbricks Synology NAS Set up 17 new 2031

  • STEP 16

Download (click on the blue link below) then upload the authzed-postgres-bootstrap.shĀ file below in the formbricks folder that you have previously created at STEP 15. Follow the instructions in the image below. šŸ”’Note: Support my work to unlock the password. You can use this password to download any file on mariushosting forever!

šŸ‘‰šŸ»authzed-postgres-bootstrap.sh

Synology Formbricks 6 New instructions 1 2027

  • STEP 17

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 18

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.

Portainer Add Stack NAS 2027

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

Portainer Add Stack NAS 2

  • STEP 19

In the Name field type in formbricks. Follow the instructions in the image below.

Note: Copy Paste the code below in the Portainer Stacks Web editor.

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

  authzed-db-bootstrap:
    image: pgvector/pgvector:pg18
    container_name: Formbricks-Authzed-Bootstrap
    restart: "no"
    entrypoint: ["/bin/sh", "/usr/local/bin/authzed-postgres-bootstrap.sh"]
    environment:
      POSTGRES_ADMIN_URL: postgresql://formbricksuser:formbrickspass@formbricks-db:5432/postgres?sslmode=disable
      AUTHZED_DATABASE_NAME: spicedb
      AUTHZED_DATABASE_USERNAME: spicedb
      AUTHZED_DATABASE_PASSWORD: abe3da279c66792836d87f91798e039d9444e1f9fd940f34d5b6bdaa0b567af5
    volumes:
      - /volume1/docker/formbricks/authzed-postgres-bootstrap.sh:/usr/local/bin/authzed-postgres-bootstrap.sh:ro
    depends_on:
      db:
        condition: service_healthy

  spicedb-migrate:
    image: authzed/spicedb:v1.52.0
    container_name: Formbricks-Authzed-SpiceDB-Migrate
    command: datastore migrate head
    environment:
      SPICEDB_DATASTORE_ENGINE: postgres
      SPICEDB_DATASTORE_CONN_URI: postgresql://spicedb:abe3da279c66792836d87f91798e039d9444e1f9fd940f34d5b6bdaa0b567af5@formbricks-db:5432/spicedb?sslmode=disable
      GOMAXPROCS: "2"
    depends_on:
      authzed-db-bootstrap:
        condition: service_completed_successfully
    restart: "no"

  spicedb:
    image: authzed/spicedb:v1.52.0
    container_name: Formbricks-SpiceDB
    healthcheck:
      test: ["CMD", "/usr/local/bin/grpc_health_probe", "-addr=localhost:50051"]
      interval: 5s
      timeout: 5s
      retries: 12
      start_period: 10s
    command: serve
    environment:
      SPICEDB_DATASTORE_ENGINE: postgres
      SPICEDB_DATASTORE_CONN_URI: postgresql://spicedb:abe3da279c66792836d87f91798e039d9444e1f9fd940f34d5b6bdaa0b567af5@formbricks-db:5432/spicedb?sslmode=disable
      SPICEDB_GRPC_PRESHARED_KEY: 8563d0d3ed3bb10ee34e1bc8157798b543e3c4360f71c0217a89e61f26a521de
      SPICEDB_LOG_FORMAT: json
      SPICEDB_LOG_LEVEL: info
      SPICEDB_TELEMETRY_ENDPOINT: ""
      GOMAXPROCS: "2"
    depends_on:
      spicedb-migrate:
        condition: service_completed_successfully
    restart: on-failure:5

  authzed-initialize:
    image: ghcr.io/formbricks/formbricks:latest
    container_name: Formbricks-Authzed-Initialize
    restart: "no"
    entrypoint: ["formbricks-authzed"]
    command: ["schema", "apply"]
    environment:
      DATABASE_URL: postgresql://formbricksuser:formbrickspass@formbricks-db:5432/formbricks?schema=public
      ENCRYPTION_KEY: unused
      CUBEJS_API_SECRET: unused
      CUBEJS_API_URL: http://localhost
      HUB_API_KEY: unused
      HUB_API_URL: http://localhost
      REDIS_URL: redis://redis:6379
      LOG_LEVEL: info
      AUTHZED_ENABLED: "true"
      AUTHZED_ENDPOINT: spicedb:50051
      AUTHZED_TOKEN: 8563d0d3ed3bb10ee34e1bc8157798b543e3c4360f71c0217a89e61f26a521de
      AUTHZED_SYSTEM_KEY: formbricks
      AUTHZED_INSECURE: "true"
      AUTHZED_CONSISTENCY: fully_consistent
    depends_on:
      spicedb:
        condition: service_healthy
      db:
        condition: service_healthy

  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
    container_name: Formbricks-B
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started
      rustfs:
        condition: service_started
      spicedb:
        condition: service_healthy
      authzed-initialize:
        condition: service_completed_successfully
    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
      EMAIL_VERIFICATION_DISABLED: 1
      PASSWORD_RESET_DISABLED: 0
      SIGNUP_DISABLED: 0
      INVITE_DISABLED: 0
      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
      AUTHZED_ENABLED: "true"
      AUTHZED_ENDPOINT: spicedb:50051
      AUTHZED_TOKEN: 8563d0d3ed3bb10ee34e1bc8157798b543e3c4360f71c0217a89e61f26a521de
      AUTHZED_SYSTEM_KEY: formbricks
      AUTHZED_INSECURE: "true"
      AUTHZED_CONSISTENCY: fully_consistent
    restart: on-failure:5

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 AUTHZED_DATABASE_PASSWORD. (Generate your own Random 64 šŸ…openssl rand -hex 32 length DATABASE_PASSWORD.) āš ļøWarning: This value should be the same for AUTHZED_DATABASE_PASSWORD and SPICEDB_DATASTORE_CONN_URI a total of 3 identical tokens. They are colored in greenĀ in the compose stack.
Note: Before you paste the code above in the Web editor area below, change the value for SPICEDB_GRPC_PRESHARED_KEY. (Generate your own Random 64 šŸ…openssl rand -hex 32 length SPICEDB_GRPC_PRESHARED_KEY.) āš ļøWarning: This value should be the same for SPICEDB_GRPC_PRESHARED_KEY and AUTHZED_TOKEN a total of 3 identical tokens. They are colored in gold in the compose stack.
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. (Generate Your Own Free šŸ…openssl rand -hex 32 CUBEJS_API_SECRET.)
Note: Before you paste the code above in the Web editor area below, change the value for CRON_SECRET. (Generate Your Own Free šŸ…openssl rand -hex 32 CRON SECRET.)
Note: Before you paste the code above in the Web editor area below, change the value for ENCRYPTION_KEY. (Generate Your Own Free šŸ…openssl rand -hex 32 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 17.
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 17.
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 17. āš ļø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.

Formbricks Synology NAS Set up 8 new 2030

  • STEP 20

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.

Synology Formbricks 6 New instructions 2 2027

  • STEP 20

If everything goes right, you will see this message at the top right of your screen: ā€œSuccess Stack successfully deployedā€œ.

Portainer Success Stack NAS

  • STEP 21

Now wait approximately 10-15 minutes. Go to Portainer, left sidebar, and select Containers. Wait until the containers Formbrics-Authzed-Boostrap, Formbricks-Authzed-Initialize, Formbricks-Authzed-SpiceDB-Migrate are marked as exited – code 0. This is a normal behavior. Go straight to the next step.

Synology Formbricks 6 New instructions 32027

  • STEP 22

🟢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 23

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://rustfsbricks.yourname.synology.me In my case it’s https://rustfsbricks.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.

Formbricks Synology NAS Set up 11 new 2031

  • STEP 24

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.

Formbricks Synology NAS Set up 12 new 2031

  • STEP 25

🟢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 26

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.

Formbricks Synology NAS Set up 10 new 2025

  • STEP 27

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

Formbricks Synology NAS Set up 11 new 2030

  • STEP 28

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

Formbricks Synology NAS Set up 12 new 2030

  • STEP 29

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.

Formbricks Synology NAS Set up 13 new 2030

  • STEP 30

Click Login with Email.Ā Follow the instructions in the image below.

Formbricks Synology NAS Set up 14 new 2030

  • STEP 31

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

Formbricks Synology NAS Set up 15 new 2030

  • STEP 32

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

Formbricks Synology NAS Set up 16 new 2025

  • STEP 33

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

Formbricks Synology NAS Set up 17 new 2030

  • STEP 34

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

Formbricks Synology NAS Set up 18 new 2030

  • STEP 35

Your Formbricks dashboard at a glance!

Formbricks Synology NAS Set up 19 new 2030

  • STEP 36

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 19. Go straight to the next STEP.

Formbricks Synology NAS Set up 17 new 2030

  • STEP 37

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

Formbricks Synology NAS Set up 13 new 2031

  • STEP 38

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

Formbricks Synology NAS Set up 14 new 2031

Enjoy Formbricks!

Note: Check the full Formbricks documentation!

šŸ†˜TROUBLESHOOTING

If you encounter issues by using this container, make sure to check out the Common Docker issuesĀ article.

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 Sunday / October 11th, 2026 at 5:08 AM

No sponsors, no corporations, no ads, no subscriptions, no membership tiers, no referral links, no pop-ups, no cookies, no tracking code. Just pure guides for the community from Marius.