HeyForm
Open-source form builder for conversational surveys, quizzes, and polls
Alternative to: typeform, google forms, jotform, tally
HeyForm is an open-source form builder that lets anyone create engaging conversational forms for surveys, questionnaires, quizzes, and polls without writing code. It supports a wide range of question types, conditional logic, custom themes, webhook and Zapier/Make.com integrations, and built-in analytics for completion and drop-off rates. Self-hosting the community edition gives you full ownership of your form data instead of relying on HeyForm's hosted SaaS.
HeyForm Docker Compose example
Self-host HeyForm on your own server, homelab, or VPS starting from this Docker Compose example.
It runs HeyForm in Docker containers using the official heyform/community-edition:latest, mongo:latest, redis:latest images, with persistent volumes and automatic restarts preconfigured.
Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.
services:
heyform:
image: heyform/community-edition:latest
restart: unless-stopped
depends_on:
- mongo
- redis
volumes:
- assets:/app/static/upload
environment:
# Public URL where users reach HeyForm. Must match the externally reachable address (scheme + host, no trailing slash).
APP_HOMEPAGE_URL: "changeme"
# Secret used to sign login sessions. Set to a long random string.
SESSION_KEY: "changeme"
# Key used to encrypt form submission data. Set to a long random string.
FORM_ENCRYPTION_KEY: "changeme"
# How long a login session stays valid.
SESSION_MAX_AGE: "15d"
# MongoDB connection string (points at the bundled mongo service).
MONGO_URI: "mongodb://mongo:27017/heyform"
# Redis host used for the background job queue (points at the bundled redis service).
REDIS_HOST: "redis"
# Redis port.
REDIS_PORT: "6379"
# Redis database index.
REDIS_DB: "0"
# Sender address for outgoing email (verification codes, workspace invites). Example: HeyForm <noreply@example.com>
SMTP_FROM: ""
# SMTP server hostname.
SMTP_HOST: ""
# SMTP server port.
SMTP_PORT: ""
# SMTP username.
SMTP_USER: ""
# SMTP password.
SMTP_PASSWORD: ""
mongo:
image: mongo:latest
restart: unless-stopped
volumes:
- mongo_data:/data/db
redis:
image: redis:latest
restart: unless-stopped
volumes:
- redis_data:/data
volumes:
assets:
mongo_data:
redis_data:
Values set to changeme are required — replace them with your own
values before starting HeyForm.
Prefer a managed setup? WinterFlow installs, configures, and updates HeyForm for you using this same Docker Compose configuration.