Heyform
Form builder for surveys and data collection that you host yourself.
- Replaces
-
Paid online form services, such as Typeform.
All open-source alternatives to Typeform
- Difficulty
-
Difficulty: Medium
3 services (1 database or broker: keydb), 3 volume mounts, no env values to set, no elevated host access. Heuristic score 3 of 11: medium.
- Stack
TypeScript (language)
- Deployment
docker_compose
- Requirements
Not stated.
- License
-
AGPL-3.0(OSI-approved open source) - Business model
-
Unknown
The README at the pinned commit does not state a business model, so it stays unknown.
Source: github.com/heyform/heyform/blob/705c8d6/README.md, read on .
- Repository
GitHub stats
- Stars
- 9,047
- Forks
- 723
- Open issues and pull requests
- 8
- Last push
- 2026-10-22
- Latest release
- v3.0.4
- Released
- 2026-10-15
From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as AGPL-3.0.
Compose file
networks:
keydb:
mongo:
services:
heyform:
image: heyform/community-edition:latest
restart: always
volumes:
# Persist uploaded images
- ./assets:/app/static/upload
depends_on:
- mongo
- keydb
ports:
- '9157:9157'
environment:
APP_HOMEPAGE_URL: http://127.0.0.1:9157
SESSION_KEY: key1
FORM_ENCRYPTION_KEY: key2
MONGO_URI: 'mongodb://mongo:27017/heyform'
REDIS_HOST: keydb
REDIS_PORT: 6379
mongo:
image: percona/percona-server-mongodb:4.4
restart: always
volumes:
# Persist MongoDB data
- mongodb_data:/data/db
keydb:
image: eqalpha/keydb:x86_64_v6.3.3
restart: always
command: keydb-server --appendonly yes --protected-mode no
volumes:
# Persist KeyDB data
- keydb:/data
volumes:
mongodb_data:
keydb:
From a separate packaging repository: github.com/heyform/docs/blob/b9056fb/content/5.open-source/2.self-hosting.md.
Compose example from the project's own docs: heyform/docs:content/5.open-source/2.self-hosting.md.
Install
- Docker with the Compose plugin (github.com/heyform/docs/blob/b9056fb/content/5.open-source/2.self-hosting.md#L69-L112)
A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
- Save the code block as docker-compose.yml (github.com/heyform/docs/blob/b9056fb/content/5.open-source/2.self-hosting.md)
Use the compose file shown above.
- What the compose file check ran with (github.com/heyform/docs/blob/b9056fb/content/5.open-source/2.self-hosting.md#L69-L112)
This compose file is copied unchanged from the code block in https://github.com/heyform/docs/blob/b9056fb59ff07b4adc73133b384362a6640e1ab3/content/5.open-source/2.self-hosting.md#L69-L112. The check ran on that block alone. The self-hosting guide shows this docker-compose.yml with all dependencies and environment variables.
- Start it (github.com/heyform/docs/blob/b9056fb/content/5.open-source/2.self-hosting.md)
docker compose up -d - Open the app (github.com/heyform/docs/blob/b9056fb/content/5.open-source/2.self-hosting.md)
Open http://localhost:9157. The compose file publishes host port 9157 for the heyform service.
Compose file check: config_ok on 2026-10-22.
Gotchas and maintenance
Gotchas
- Some images use the latest tag or no tag. Images without a pinned version: heyform: heyform/community-edition:latest. A later pull can get a different version. (github.com/heyform/docs/blob/b9056fb/content/5.open-source/2.self-hosting.md, checked 2026-10-22)
- The compose file publishes host ports. Host ports: 9157 (heyform). A port without a host address listens on all host network interfaces. (github.com/heyform/docs/blob/b9056fb/content/5.open-source/2.self-hosting.md, checked 2026-10-22)
- The compose file mounts host folders. Host paths mounted into containers: ./assets at /app/static/upload (heyform). (github.com/heyform/docs/blob/b9056fb/content/5.open-source/2.self-hosting.md, checked 2026-10-22)
Signals
- Open issues and pull requests: 8
- Last push: 2026-10-22 (0 days before this page was built)
- Latest release: v3.0.4 on 2026-10-15 (7 days before this page was built)