OpenLogs

All tools

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)

Read from github.com/heyform/heyform/blob/705c8d6/LICENSE

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

heyform/heyform

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

Config check passed docker compose config exited 0 on this exact file on 2026-10-22.
2.self-hosting.md Version 1
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

  1. 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.

  2. 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.

  3. 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.

  4. Start it (github.com/heyform/docs/blob/b9056fb/content/5.open-source/2.self-hosting.md)
    docker compose up -d
  5. 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

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)