---
title: "Deploy Formbricks Experience Management | Open Source Typeform Alternative"
description: "Self Host Formbricks. In-app surveys, NPS, CSAT, and feedback collection"
category: "Analytics"
url: https://railway.com/deploy/formbricks-survey-platform
---

# Deploy Formbricks Experience Management | Open Source Typeform Alternative

Self Host Formbricks. In-app surveys, NPS, CSAT, and feedback collection

**[Deploy Formbricks Experience Management | Open Source Typeform Alternative on Railway](https://railway.com/template/formbricks-survey-platform)**

- **Creator:** Heimdall
- **Category:** Analytics
- **Total deploys:** 12

## Template content

### pgvector https://devicons.railway.app/postgres

- **Image:** pgvector/pgvector:pg18
- **Start command:** `/bin/sh -c "unset PGPORT; docker-entrypoint.sh postgres --port=5432"`
- **Public domain:** Yes

### Redis https://cdn.sanity.io/images/sy1jschh/production/0ce0bfdcfbdbf69662b1116671f97c2dd788b655-157x157.svg

- **Image:** redis:8.2.1
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

### MinIO

- **Image:** minio/minio:latest
- **Start command:** ` /bin/sh -c 'minio server /bitnami/minio/data --console-address :9001 & MINIO_PID=$!; sleep 8; mc alias set local http://localhost:9000 "$MINIO_ROOT_USER" "$MINIO_ROOT_PASSWORD" && mc mb --ignore-existing local/formbricks && mc anonymous set download local/formbricks; wait $MINIO_PID'`
- **Public domain:** Yes

### Formbricks https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/formbricks.svg

- **Image:** ghcr.io/formbricks/formbricks:latest
- **Health check:** /health
- **Public domain:** Yes

## Documentation

![Formbricks logo](https://formbricks.com/_next/static/media/formbricks-logo-header-open-source-form-infrastructure.0fba6299.svg)

# Deploy and Host Formbricks on Railway

Deploy Formbricks on Railway to self-host a privacy-first survey and experience management platform. Formbricks is an open-source alternative to Typeform, SurveyMonkey, and Qualtrics that gives you full control over your survey data with unlimited responses.

This Railway template pre-configures Formbricks with PostgreSQL (pgvector-enabled) for data storage and Redis for caching and rate limiting, giving you a production-ready survey platform in minutes.

## Getting Started with Formbricks on Railway

After deployment completes, open your Railway-generated public URL. Formbricks redirects to the setup wizard at `/setup/intro` where you create your admin account and organization. No default credentials are used — you set your own email and password during first-time setup.

Once registered, create your first survey from the dashboard. Choose between link surveys (shareable URLs), website surveys (embedded via JavaScript snippet), or in-app surveys (integrated with your product via the Formbricks SDK). The survey builder offers 20+ question types including NPS, CES, CSAT, open text, and multi-choice with skip logic and conditional branching.

New user signups are disabled by default — additional team members join via invite links from the admin dashboard.

![Formbricks dashboard screenshot](https://camo.githubusercontent.com/de5f75f144bbea149a9810ddc180cae60089fc0f9b70fd1b2cab49c949795114/68747470733a2f2f6769746875622d70726f64756374696f6e2d757365722d61737365742d3632313064662e73332e616d617a6f6e6177732e636f6d2f3637353036352f3234393434313936372d63636238396561332d383262342d346266322d386432632d3532383732316563333133622e706e67)

## About Hosting Formbricks

Formbricks is an open-source experience management suite built on Next.js, designed for product teams that need granular control over user feedback collection. It handles the full survey lifecycle — creation, targeting, distribution, and analytics — in a single self-hosted platform.

- **In-app surveys** with precise user targeting based on attributes, events, and segments
- **Website surveys** embeddable via a lightweight JavaScript snippet
- **Link surveys** with custom branding and shareable URLs
- **20+ question types** including NPS, CES, CSAT, matrix, ranking, and file upload
- **Skip logic and conditional branching** for dynamic survey flows
- **Built-in analytics** with response summaries, charts, and CSV/JSON export
- **Webhooks and integrations** with Slack, Notion, Google Sheets, Airtable, and Zapier
- **Multi-language support** for international survey distribution

The template deploys three services: Formbricks (Next.js app), PostgreSQL with pgvector for vector-enabled data storage, and Redis for caching and rate limiting.

## Why Deploy Formbricks on Railway

- Unlimited survey responses with no per-response fees
- Full data ownership — survey data never leaves your infrastructure
- One-click deploy with PostgreSQL and Redis pre-configured
- Automatic HTTPS and custom domain support
- Scale resources independently per service

## Common Use Cases for Self-Hosted Formbricks

- **Product feedback loops** — embed in-app NPS and feature satisfaction surveys triggered by specific user actions
- **Customer research** — distribute branded link surveys for user interviews, market research, and beta testing programs
- **Employee engagement** — run anonymous pulse surveys and eNPS tracking across distributed teams
- **GDPR-compliant data collection** — self-host in your own region to meet data residency and privacy requirements

## Dependencies for Self-Hosted Formbricks

- **Formbricks** — `ghcr.io/formbricks/formbricks:latest` — Next.js survey application
- **PostgreSQL** — `pgvector/pgvector:pg17` — database with vector extension support
- **Redis** — `redis:8.2.1` (Railway-managed) — caching and rate limiting

### Environment Variables Reference for Formbricks on Railway

| Variable | Description | Example |
|----------|-------------|---------|
| `WEBAPP_URL` | Public-facing app URL | `https://${{RAILWAY_PUBLIC_DOMAIN}}` |
| `NEXTAUTH_URL` | NextAuth callback URL (same as WEBAPP_URL) | `https://${{RAILWAY_PUBLIC_DOMAIN}}` |
| `DATABASE_URL` | PostgreSQL connection string | `postgresql://postgres:...@Postgres:5432/formbricks` |
| `NEXTAUTH_SECRET` | Session signing and encryption key | `${{secret(32)}}` |
| `ENCRYPTION_KEY` | 2FA and link survey URL encryption | `${{secret(64)}}` |
| `CRON_SECRET` | API secret for cron job endpoints | `${{secret(32)}}` |
| `REDIS_URL` | Redis connection string | `redis://default:...@Redis:6379` |

### Deployment Dependencies

- **Runtime:** Node.js 18+, Next.js 16
- **Docker Hub:** [formbricks/formbricks](https://hub.docker.com/r/formbricks/formbricks) (archived — now on GHCR)
- **GitHub:** [formbricks/formbricks](https://github.com/formbricks/formbricks) — 13k+ stars
- **Docs:** [formbricks.com/docs/self-hosting](https://formbricks.com/docs/self-hosting/overview)

## Hardware Requirements for Self-Hosting Formbricks

| Resource | Minimum | Recommended |
|----------|---------|-------------|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 2 GB | 4 GB |
| Storage | 8 GB SSD | 20 GB SSD |
| Runtime | Docker | Docker Compose |

## Self-Hosting Formbricks with Docker

Pull the official image from GitHub Container Registry:

```
docker pull ghcr.io/formbricks/formbricks:latest
```

Run Formbricks with Docker Compose using the official configuration:

```
services:
  postgres:
    image: pgvector/pgvector:pg17
    volumes:
      - postgres:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: your-secure-password
      POSTGRES_DB: formbricks

  redis:
    image: valkey/valkey:latest
    command: valkey-server --appendonly yes
    volumes:
      - redis:/data

  formbricks:
    image: ghcr.io/formbricks/formbricks:latest
    ports:
      - "3000:3000"
    environment:
      WEBAPP_URL: https://your-domain.com
      NEXTAUTH_URL: https://your-domain.com
      DATABASE_URL: postgresql://postgres:your-secure-password@postgres:5432/formbricks?schema=public
      NEXTAUTH_SECRET: your-nextauth-secret
      ENCRYPTION_KEY: your-encryption-key
      CRON_SECRET: your-cron-secret
      REDIS_URL: redis://redis:6379
    depends_on:
      - postgres
      - redis

volumes:
  postgres:
  redis:
```

Generate secrets with `openssl rand -hex 32` for `NEXTAUTH_SECRET`, `ENCRYPTION_KEY`, and `CRON_SECRET`.

## How Much Does Formbricks Cost to Self-Host?

Formbricks is open-source under AGPLv3 with unlimited responses when self-hosted — no per-response fees or usage caps. The cloud version offers a free tier with 250 responses/month and paid plans starting at $30/month. Enterprise features (SSO, role management, advanced targeting) require a separate license key. On Railway, your only cost is infrastructure — typically $5–15/month for a small to medium survey deployment.

## Formbricks vs Typeform

| Feature | Formbricks | Typeform |
|---------|-----------|----------|
| Open Source | Yes (AGPLv3) | No |
| Self-Hosting | Full Docker support | Not available |
| Pricing | Free (self-hosted) | From $25/mo |
| In-App Surveys | Native SDK | Limited |
| Response Limits | Unlimited | 10/mo (free) |
| Data Ownership | Full control | Cloud only |
| Skip Logic | Yes | Yes |
| Integrations | Slack, Notion, Sheets, Zapier | 120+ native |

Formbricks is purpose-built for product teams needing in-app feedback with precise user targeting. Typeform excels at standalone conversational forms with high completion rates but lacks self-hosting and charges per response.

## FAQ

**What is Formbricks and why should you self-host it?**
Formbricks is an open-source experience management platform for creating surveys, collecting feedback, and analyzing responses. Self-hosting gives you unlimited responses, full data ownership, and compliance with data residency requirements like GDPR — all without per-response fees.

**What does this Railway template deploy for Formbricks?**
This template deploys three services: the Formbricks Next.js application (`ghcr.io/formbricks/formbricks:latest`), PostgreSQL with pgvector extension (`pgvector/pgvector:pg17`) for data storage, and Railway-managed Redis for caching and rate limiting. All services are pre-configured to communicate over Railway's private network.

**Why does Formbricks need PostgreSQL with pgvector on Railway?**
Formbricks requires the pgvector extension for vector similarity search, which powers upcoming AI-driven features including intelligent survey analysis and response clustering. Standard PostgreSQL without pgvector will fail during database migrations.

**How do I embed Formbricks surveys in my website or app?**
After creating a survey in the dashboard, go to the survey settings and choose your distribution channel. For website surveys, copy the JavaScript snippet and add it to your site's `` tag. For in-app surveys, install the Formbricks SDK (`@formbricks/js`) and initialize it with your environment ID and API host URL pointing to your Railway deployment.

**Can I use Formbricks for NPS and customer satisfaction surveys?**
Yes. Formbricks includes dedicated NPS (Net Promoter Score), CSAT (Customer Satisfaction), and CES (Customer Effort Score) question types with built-in analytics dashboards that calculate scores automatically and track trends over time.

**How do I enable email notifications in self-hosted Formbricks on Railway?**
Set the SMTP environment variables (`SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASSWORD`, `MAIL_FROM`) in the Formbricks service on Railway. Without SMTP configured, email verification and password reset are disabled by default — the template ships with `EMAIL_VERIFICATION_DISABLED=1` and `PASSWORD_RESET_DISABLED=1`.


## Similar templates

- [Matomo Analytics + MariaDB](https://railway.com/deploy/matomo-analytics-mariadb) — Privacy-friendly analytics with MariaDB and persistent volumes.
- [Bugsink](https://railway.com/deploy/bugsink) — Self-hosted Error Tracking. Sentry-SDK compatible
- [SubTrackr](https://railway.com/deploy/bscottsubtrackr) — Self-hosted Subscription Tracker

Open this page in a browser: https://railway.com/deploy/formbricks-survey-platform
