Deploying Typebot - Open-Source Conversational Form Builder A developer published a step-by-step guide for self-hosting Typebot, an open-source conversational form and chatbot builder, on a Linux server using Docker Compose. The deployment stacks PostgreSQL, Redis, Traefik for reverse proxy and TLS termination, and Mailpit for email, with host-mounted volumes for persistence and an ENCRYPTION_SECRET used to encrypt stored credentials and bot content. The setup yields a working Typebot instance with a published bot embedded on a sample page. Typebot https://typebot.io/ is an open-source, visually-driven conversational form and chatbot builder. It serves as a self-hosted alternative to hosted form and chatbot builders, giving you full data ownership and control over integrations and embedding. This guide deploys Typebot on a Linux server using Docker Compose with PostgreSQL, Redis, and Traefik for reverse proxy and TLS termination. By the end, you'll have a working Typebot instance with a published bot embedded on a sample page. Before you begin, you need to: sudo privileges. builder.example.com and viewer.example.com . To prevent data loss during container restarts or updates, the deployment relies on host-mounted volumes for PostgreSQL, Redis, and TLS certificates. Docker Compose reads secrets, URLs, and credentials from a .env file in the project directory and substitutes them into the service definitions at startup. 1. Create a project directory for the Typebot deployment: bash $ mkdir -p ~/typebot/{pgdata,redisdata,letsencrypt,data} The command creates four subdirectories: pgdata : Persists PostgreSQL database files. redisdata : Stores Redis data used by Typebot's Redis-backed features, such as sign-in rate limiting and media uploads. letsencrypt : Stores Traefik ACME certificates for automatic HTTPS renewal. data : Stores Mailpit local email data. 2. Navigate to the project directory: bash $ cd ~/typebot 3. Generate a strong random encryption secret that is used to encrypt sensitive data such as credentials and bot content: bash $ openssl rand -base64 24 Copy the output. Use this value for the ENCRYPTION SECRET variable in the next steps when creating the .env file. Store this value securely and never change it once the deployment starts handling real data. Typebot uses ENCRYPTION SECRET to encrypt stored credentials, and rotating it makes any previously encrypted data unreadable. 4. Create a .env file to store the environment variables: bash $ nano .env 5. Add the following variables: DOMAIN BUILDER=builder.example.com DOMAIN VIEWER=viewer.example.com LETSENCRYPT EMAIL=admin@example.com ENCRYPTION SECRET=YOUR GENERATED SECRET POSTGRES DB=typebot POSTGRES USER=typebot POSTGRES PASSWORD=STRONG DATABASE PASSWORD DATABASE URL=postgresql://${POSTGRES USER}:${POSTGRES PASSWORD}@postgres:5432/${POSTGRES DB} REDIS URL=redis://redis:6379 NEXTAUTH URL=https://${DOMAIN BUILDER} NEXT PUBLIC VIEWER URL=https://${DOMAIN VIEWER} ADMIN EMAIL=admin@example.com DEFAULT WORKSPACE PLAN=UNLIMITED DISABLE SIGNUP=false SMTP HOST=mailpit SMTP PORT=1025 SMTP SECURE=false NEXT PUBLIC SMTP FROM="Typebot Notifications