Developer Tools Azure

Formbricks on Ubuntu 24.04 on Azure User Guide

| Product: Formbricks on Ubuntu 24.04 LTS on Azure

Overview

Formbricks is an open source experience management and survey platform, a self hosted alternative to Typeform, Qualtrics and Google Forms. Build link surveys, website and in app surveys and email surveys in a drag and drop editor, collect and analyse responses, and manage contacts and segments, all through a modern web interface and a documented API. The cloudimg image runs the official Formbricks self hosted stack the supported way, as the upstream container alongside a bundled PostgreSQL and cache, orchestrated by Docker Compose under systemd and fronted by nginx. Every image is pinned by digest and captured into the VM, so your instance starts in seconds. A unique owner administrator, application secrets, database password and Management API key are generated for each VM on first boot, before the port is reachable, and the owner is pre seeded so nobody can claim your instance before you sign in. Backed by 24/7 cloudimg support.

Formbricks is a trademark of its respective owner. This image is produced by cloudimg and is not affiliated with, endorsed by, or sponsored by Formbricks. It ships the free and open source AGPL 3.0 self hosted core, unmodified, with no enterprise key set.

The Formbricks survey editor showing a Net Promoter Score question with a number rating scale and a live preview pane

What is included:

  • Formbricks v5.1.4 (the AGPL 3.0 self hosted core), shipped unmodified and pinned by image digest
  • The official self hosted stack: a bundled PostgreSQL and cache, plus the Apache 2.0 Formbricks Hub API and the Apache 2.0 Cube analytics service, all reachable only inside a private Docker network (never published to a host port)
  • Docker Engine (Docker CE) with Formbricks published to the loopback interface only, fronted by nginx on port 80
  • formbricks.service, formbricks-firstboot.service and nginx.service as systemd units, enabled and active on boot
  • A unique application secret, encryption key, cron secret, database password and Management API key, plus a pre seeded owner administrator, generated per VM on first boot and never baked into the image
  • Open sign up disabled and the sign up endpoint blocked, so nobody can seize your instance
  • A clean, empty instance on first boot: no default account, no shipped secret, no prior data
  • 24/7 cloudimg support

Prerequisites

An active Azure subscription, an SSH key pair, and a VNet plus subnet in the target region. The image runs five containers (Formbricks, PostgreSQL, a cache, Hub and Cube), so Standard_B2s (2 vCPU / 4 GiB RAM) is the practical minimum; choose Standard_B2ms (8 GiB) or larger for production teams and heavier response volumes. NSG inbound: allow 22/tcp from your management network and 80/tcp (and 443/tcp once you add TLS) for the web interface. Formbricks serves plain HTTP on port 80; for production, put it behind TLS with your own domain (see the final section).

Step 1 - Deploy from the Azure Marketplace

  1. In the Azure portal, choose Create a resource and search the Marketplace for the cloudimg Formbricks offer.
  2. Select the plan, then Create.
  3. On the Basics tab pick your subscription, resource group and region, name the VM, and select Standard_B2s (or larger).
  4. Choose SSH public key authentication with admin username azureuser and provide your public key.
  5. On the Networking tab, allow inbound 22/tcp from your management network and 80/tcp for the web interface.
  6. Review and create. When the VM is running, note its public IP address.

Step 2 - Deploy from the Azure CLI

az vm create \
  --resource-group my-formbricks-rg \
  --name formbricks \
  --image cloudimg:formbricks:default:latest \
  --size Standard_B2s \
  --admin-username azureuser \
  --generate-ssh-keys \
  --public-ip-sku Standard
az vm open-port --resource-group my-formbricks-rg --name formbricks --port 80 --priority 900

Step 3 - Connect to your VM

Replace <vm-ip> with your VM's public IP address:

ssh azureuser@<vm-ip>

Step 4 - Confirm the services are running

Formbricks, its bundled PostgreSQL and cache, the Hub and Cube services, and nginx all come up automatically on first boot. Confirm the core services are active:

sudo systemctl is-active docker formbricks nginx

Expected output:

active
active
active

The stack runs as five containers on a private Docker network. PostgreSQL, the cache, Hub and Cube are never published to a host port; only Formbricks is published, and only to the loopback interface, with nginx in front on port 80.

systemctl reporting docker, formbricks and nginx active, and the five containers (formbricks, postgres, redis, hub, cube) running and healthy under Docker Compose

Step 5 - Secure by default: the owner is pre seeded

On a fresh Formbricks instance the first account created owns it, and the setup wizard is open until someone completes it. On a public server that is a risk: whoever reaches it first would own your instance. The cloudimg image closes this. On first boot, before the port is reachable, a unique owner administrator is created with a per VM password, so the organization is already claimed. Open sign up is disabled (it is off by default in self hosted Formbricks) and blocked at nginx, and the setup wizard is closed, so new members join by invitation only.

You can see the whole posture at a glance. Self service sign up and the setup wizard are refused, a wrong Management API key is rejected, and only the per VM key is accepted:

curl -s -o /dev/null -w 'POST /auth/signup -> HTTP %{http_code}\n' -X POST http://127.0.0.1/auth/signup
curl -s -o /dev/null -w 'GET  /setup       -> HTTP %{http_code}\n' http://127.0.0.1/setup

Expected output (self registration and the setup wizard are both blocked):

POST /auth/signup -> HTTP 403
GET  /setup       -> HTTP 404

A POST to the sign up endpoint returns HTTP 403 and the setup wizard returns HTTP 404, a wrong API key returns HTTP 401, and the per VM API key returns HTTP 200

Step 6 - Read your unique credentials

Your per VM owner administrator, application secrets and Management API key are written to a root only file:

sudo cat /root/formbricks-credentials.txt

The file holds the Formbricks URL, the admin email (admin@formbricks.local), the per VM admin password and the per VM Management API key. Keep it safe.

The per VM access notes, with the Formbricks URL, admin email, and the admin password and API key masked

Step 7 - Sign in to Formbricks

Open http://<vm-ip>/ in your browser. You are met with the Formbricks login screen: there is no anonymous access and no open sign up. Choose Login with Email and sign in with the admin email and the password from the credentials file.

The Formbricks login screen with a Login with Email button: nothing is accessible until you sign in with the per VM admin email and password

Step 8 - Explore your surveys

After signing in you land on the Surveys list for your workspace. From here you can create a survey, filter by status and type, and open any survey to see its responses and summary. The left sidebar gives you Surveys, Contacts, Feedback Records, Dashboards and Settings.

The Formbricks Surveys list showing several surveys with their status, type and response counts, and the workspace sidebar

Step 9 - Create and edit a survey

Choose New Survey to start from a template or a blank survey. In the editor you add and reorder questions by drag and drop, with question types for ratings, multiple choice, open text, NPS, matrix and more, and a live preview alongside. Configure styling, languages, logic and follow ups, then publish the survey to get a shareable link or embed it on your website or app.

The Formbricks survey editor with a rating question, the question configuration panel showing the scale and labels, and a live preview of the survey

Step 10 - Workspace settings and the Management API

Under Settings you manage your workspace name, survey languages, appearance, integrations and team access, and under the organization you manage teams, domain and API Keys. Create a scoped API key here to drive Formbricks from your own scripts with the documented Management API. The cloudimg image also pre generates a per VM key in the credentials file so you can call the API right away:

curl -H "x-api-key: fbk_<your-api-key>" http://<vm-ip>/api/v1/management/me

The Formbricks workspace settings page with the settings sidebar, including API Keys under the organization section

Step 11 - Check the stack health from the command line

Formbricks exposes an unauthenticated liveness endpoint, and a readiness endpoint that reports whether the database and other dependencies are reachable. They are handy for monitoring:

curl -s http://127.0.0.1/health

Expected output (a healthy app):

{"status":"ok"}

The public liveness endpoint reporting status ok, and the readiness endpoint returning HTTP 200 with the dependencies up

Step 12 - Invite your team and enable email

Because open sign up is disabled, add colleagues from Settings, Organization, Members while signed in as the owner. To send those invitations and email surveys, configure an SMTP server: set the SMTP_* values in /etc/formbricks/formbricks.env and restart the stack:

# Edit /etc/formbricks/formbricks.env and set:
#   SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, MAIL_FROM
sudo systemctl restart formbricks

Step 13 - Production: your own domain with TLS

Formbricks serves plain HTTP on port 80. For production, point a DNS record at the VM, put Formbricks behind TLS, and set the application URL to your https domain so survey links and authentication callbacks use the right origin. A common approach is to add a certificate to nginx with Certbot:

sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d surveys.<your-domain>

Then set WEBAPP_URL and NEXTAUTH_URL in /etc/formbricks/formbricks.env to https://surveys.<your-domain> and restart with sudo systemctl restart formbricks. See the Formbricks documentation for the full production checklist.

Support

Every cloudimg image includes 24/7 support. If you have any questions about deploying or operating Formbricks on Azure, contact the cloudimg team through the Azure Marketplace listing or at www.cloudimg.co.uk.