Railway

Deploy TypeBot

Open source conversational form builder, self-hosted on Railway

Deploy TypeBot

Just deployed

/data

Just deployed

/data

/var/lib/postgresql/data

Just deployed

typebot-files

Bucket

Just deployed

Deploy and Host Typebot on Railway

Typebot is an open-source conversational form builder. Instead of a page of input boxes, you design a chat that asks one question at a time on a drag-and-drop canvas, then publish it as a hosted page, an embedded bubble, a popup or a React component. Every answer becomes a variable, so later steps can branch on earlier ones, call your API, write to Google Sheets or ask an LLM — which is what separates it from a static form tool.

Self-host Typebot on Railway and you get the whole product, with no response caps and no per-seat billing. This template runs both halves as upstream intends: the builder (baptistearno/typebot-builder) is the authenticated editor, API and results dashboard, and the viewer (baptistearno/typebot-viewer) is the public runtime your visitors chat with. Behind them sit Postgres, Redis, a Mailpit inbox so login codes work the moment the deploy finishes, a storage bucket for uploaded media, and a files gateway serving that bucket's public assets.

Typebot builder, viewer, file gateway, Mailpit, Postgres and Redis on Railway

Getting Started with Typebot on Railway

Set ADMIN_EMAIL on the builder to your own address, deploy, and open the builder's URL. There are no default credentials: Typebot signs you in with a six-digit emailed code, and the first account using ADMIN_EMAIL owns an unlimited workspace. That address also bypasses DISABLE_SIGNUP, which ships as true, so the instance is closed from first boot while you still get in — everyone else joins by invitation under Settings & Members.

The code goes to the bundled Mailpit inbox, not a real mailbox: open the Mailpit service's URL, sign in with the MP_UI_AUTH credentials, and read the six digits from the newest message. Paste them in to reach your workspace. Click Create a typebot, pick Start from a template, and choose Lead Generation for a working flow. Hit Publish, open the link under Share, and run your own bot as a visitor — then check Results, where those answers should appear as a row. That is the quickest proof the whole stack is wired correctly. For real email, point SMTP_HOST at your own provider or set MP_SMTP_RELAY_* on Mailpit.

Typebot flow editor showing a lead generation conversation

Published Typebot chat collecting a name, email and enquiry

Typebot submissions table listing a captured lead

About Hosting Typebot

Typebot is two Next.js applications over one Postgres database, which is why the template runs them as separate services. The builder holds everything private — the canvas, your integration credentials, the results table and the API — and only signed-in users reach it. The viewer holds nothing private; it serves published bots and writes answers to the same database, so a bot on a busy site scales independently of your editor.

Key capabilities:

  • Input blocks for text, email, phone, number, date, buttons, picture choice, rating, file upload and Stripe payments
  • Logic blocks — conditions, variables, scripting, redirects, jumps — so a bot branches on any earlier answer
  • Integrations with OpenAI and other LLM providers, Google Sheets, Zapier, Make and HTTP requests
  • Embeds as container, bubble or popup, plus React, Next.js, WordPress, Webflow and Shopify
  • Theming to fonts, colours, avatars and CSS, and results with completion rates and CSV export

Each supporting service does one job. Postgres stores bots, published versions, sessions and answers. Redis backs the per-IP throttle on sign-in requests; without it that throttle silently does not exist. Mailpit makes passwordless login work with no external setup. The bucket holds uploaded media, and the files service signs reads of it so browsers load public bot media without the bucket being open.

Why Deploy Typebot on Railway

Railway removes the infrastructure work self-hosting normally adds:

  • Postgres, Redis and object storage provisioned and wired by the template
  • Private networking, so only the web apps are publicly exposed
  • HTTPS domains issued automatically, custom domains a DNS record away
  • Both apps pinned to matching versions, so an upgrade never splits them
  • Scaling per service, independently of the others

Common Use Cases

  • Lead capture and qualification — a chat that scores the lead, branches on budget, and posts qualified enquiries to your CRM
  • Product onboarding and NPS — ask new users a few in-app questions and route detractors to a support flow
  • Support triage — collect account, category and description before a ticket exists, then hand off with context or pass the answers to an LLM to classify

Dependencies for Typebot

  • baptistearno/typebot-builder:3.18.0 — editor, API, results dashboard
  • baptistearno/typebot-viewer:3.18.0 — public runtime for published bots
  • gridalpha/typebot-railway — the files service, a Node gateway signing reads of public bucket objects
  • axllent/mailpit:latest — SMTP server and inbox for login codes
  • Railway managed Postgres 18, Redis and an object storage bucket

Environment Variables Reference

VariableServicePurpose
ADMIN_EMAILbuilderOwner account; unlimited workspace, bypasses DISABLE_SIGNUP
DISABLE_SIGNUPbuildertrue closes public registration; invited users still join
ENCRYPTION_SECRETbuilder, viewer32 chars, encrypts integration credentials — must match
SMTP_HOSTbuilder, viewerMail server for login codes
MP_UI_AUTHmailpitCredentials protecting the web inbox

Deployment Dependencies

Hardware Requirements for Self-Hosting Typebot

ResourceMinimumRecommended
CPU2 vCPU total4 vCPU
RAM2 GB total4 GB
Storage1 GB Postgres10 GB + object storage
RuntimeNode.js 24Node.js 24

Both apps are modest at idle; the viewer grows with traffic, running a conversation step per message.

Self-Hosting Typebot with Docker

Upstream ships a Compose file, pulled here with its starter environment file:

wget https://raw.githubusercontent.com/baptisteArno/typebot.io/latest/docker-compose.yml
wget https://raw.githubusercontent.com/baptisteArno/typebot.io/latest/.env.example -O .env

ENCRYPTION_SECRET must be exactly 32 characters and identical on both apps, or credentials saved by one cannot be read by the other. Generate one with:

openssl rand -base64 24 | tr -d '\n'; echo

Fill in NEXTAUTH_URL and NEXT_PUBLIC_VIEWER_URL, configure a sign-in method, then run docker compose up -d. The builder listens on 8080 and the viewer on 8081, both plain HTTP, so a TLS-terminating reverse proxy is required in front. This Railway template skips that: both apps, the database, Redis, storage and mail arrive connected on HTTPS.

How Much Does Typebot Cost to Self-Host?

Typebot is source-available under the Functional Source License: any use is permitted except offering Typebot itself as a competing commercial service, so self-hosting for your own business, your clients' projects or internal tooling is allowed, and the code turns Apache 2.0 after two years. There is no licence fee and no response limit when you self-host — on Railway you pay for infrastructure only.

FAQ

What is Typebot?

An open-source builder for conversational forms and chatbots. You design a flow of questions and logic on a canvas, publish it, and embed it as a page, bubble or popup.

What does this Railway template deploy?

Six services: the Typebot builder and viewer, Postgres, Redis, a Mailpit inbox, and a gateway serving public uploads from a managed object storage bucket.

Why does the template include Postgres and object storage?

Postgres holds your bots, their published versions, live sessions and every answer. Object storage makes image, video and file-upload blocks work; without it those assets would sit on a container's disk and vanish on the next deploy.

Do the builder and viewer need the same version?

Yes. They share one schema and one ENCRYPTION_SECRET, and only the builder runs migrations, so this template pins both images to the same tag. Upgrade them together.

How do I log in if there are no default credentials?

Typebot has no passwords. Enter the address you set as ADMIN_EMAIL, then read the six-digit code from the bundled Mailpit inbox using the MP_UI_AUTH credentials. Point SMTP_HOST at a real provider to get codes in a normal mailbox instead.

How do I embed a self-hosted Typebot on my website?

Publish the bot, open the Share tab, and copy a generated snippet — HTML/JavaScript, React, Next.js, WordPress, Webflow, Shopify or Framer. Each points at your own viewer URL, so no traffic reaches typebot.io.

Can I connect Typebot to OpenAI or Google Sheets on a self-hosted instance?

Yes. Every integration block works when self-hosting; you supply your own API keys or OAuth credentials and they are encrypted at rest with ENCRYPTION_SECRET.


Template Content

More templates in this category

View Template
N8N Main + Worker
Deploy and Host N8N with Inactive worker.

jakemerson
119
View Template
Evolution API with n8n
Build a WhatsApp automation platform with Evolution API, n8n & Postgres.

codestorm
80
View Template
Postgres Backup
Cron-based PostgreSQL backup to bucket storage

Railway Templates
870