OpenLogs

All tools

HedgeDoc

Collaborative Markdown editor where several people edit one note together.

Replaces

Paid collaborative document editing services, such as Google Docs.

All open-source alternatives to Google Docs

Difficulty

Difficulty: Hard

4 services (1 database or broker: postgres), 5 volume mounts, 5 env values to set, no elevated host access. Heuristic score 7 of 11: hard. A source checkout is needed, so the rating is at least medium.

Stack

TypeScript (language), PostgreSQL (database)

Deployment

docker_compose

Requirements

Not stated.

License

AGPL-3.0 (OSI-approved open source)

Read from github.com/hedgedoc/hedgedoc/blob/f98ea9c/LICENSE

Business model

Unknown

The README at the pinned commit does not state a business model, so it stays unknown.

Source: github.com/hedgedoc/hedgedoc/blob/f98ea9c/README.md, read on .

Repository

hedgedoc/hedgedoc

GitHub stats

Stars
7,490
Forks
609
Open issues and pull requests
275
Last push
2026-10-22
Latest release
1.12.0
Released
2026-08-21

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.
docker-compose.yml Version 1
services:
  backend:
    image: ghcr.io/hedgedoc/hedgedoc/backend:2.0.0-alpha.3
    volumes:
      - $PWD/.env:/usr/src/app/backend/.env
      - hedgedoc_uploads:/usr/src/app/backend/uploads

  frontend:
    image: ghcr.io/hedgedoc/hedgedoc/frontend:2.0.0-alpha.3
    environment:
      HD_BASE_URL: "${HD_BASE_URL}"
      HD_INTERNAL_API_URL: http://backend:3000
      HOSTNAME: "0.0.0.0"

  db:
    image: postgres:16
    environment:
      POSTGRES_USER: "${HD_DATABASE_USERNAME}"
      POSTGRES_PASSWORD: "${HD_DATABASE_PASSWORD}"
      POSTGRES_DB: "${HD_DATABASE_NAME}"
    volumes:
      - hedgedoc_postgres:/var/lib/postgresql/data

  proxy:
    image: caddy:latest
    restart: unless-stopped
    environment:
      HD_BASE_URL: "${HD_BASE_URL}"
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - $PWD/Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data

volumes:
  caddy_data:
  hedgedoc_uploads:
  hedgedoc_postgres:

From the app's own repository: github.com/hedgedoc/hedgedoc/blob/f98ea9c/docs/content/files/setup-docker/docker-compose.yml.

Compose file from hedgedoc/hedgedoc, used inside a checkout of that repository (documented setup B).

Install

  1. Docker with the Compose plugin and git (github.com/hedgedoc/hedgedoc/blob/f98ea9c/docs/content/tutorials/setup.md)

    A host with Docker, the Docker Compose plugin and git. This entry needs a checkout of the project repository.

  2. Get the source at commit f98ea9c (github.com/hedgedoc/hedgedoc/blob/f98ea9c/docs/content/tutorials/setup.md)
    git init hedgedoc
    cd hedgedoc
    git remote add origin https://github.com/hedgedoc/hedgedoc.git
    git sparse-checkout init --cone
    git sparse-checkout set docs/content/files/setup-docker
    git fetch --depth 1 --filter=blob:none origin f98ea9c4079dea39a54ed6d20e9521a3039dbff7
    git checkout FETCH_HEAD
  3. Go to the folder the docs use (github.com/hedgedoc/hedgedoc/blob/f98ea9c/docs/content/tutorials/setup.md)
    cd docs/content/files/setup-docker
  4. The compose file in the checkout: docs/content/files/setup-docker/docker-compose.yml (shown here for reading) (github.com/hedgedoc/hedgedoc/blob/f98ea9c/docs/content/files/setup-docker/docker-compose.yml)

    Use the compose file shown above.

  5. Copy config.env to .env (github.com/hedgedoc/hedgedoc/blob/f98ea9c/docs/content/tutorials/setup.md)
    cp config.env .env
  6. What the compose file check ran with (github.com/hedgedoc/hedgedoc/blob/f98ea9c/docs/content/tutorials/setup.md)

    The compose file check ran in a checkout of hedgedoc/hedgedoc at f98ea9c4079dea39a54ed6d20e9521a3039dbff7 (a sparse checkout: the top-level files and the folder docs/content/files/setup-docker), in the folder docs/content/files/setup-docker, after config.env was copied to .env. The setup tutorial tells the reader to download config.env as .env, the Caddyfile and docker-compose.yml from the docs site, edit .env and run docker compose up -d. The same files are in docs/content/files/setup-docker of the repository.

  7. Start it (github.com/hedgedoc/hedgedoc/blob/f98ea9c/docs/content/tutorials/setup.md)
    docker compose up -d
  8. Open the app (github.com/hedgedoc/hedgedoc/blob/f98ea9c/docs/content/tutorials/setup.md)

    Open https://hedgedoc.localhost. The docs name this address. The compose file publishes host port 443 for the proxy service. The docs say this address is enough for a local test; the base URL is set in .env.

Compose file check: config_ok on 2026-10-22.

Gotchas and maintenance

Gotchas

Signals

  • Open issues and pull requests: 275
  • Last push: 2026-10-22 (0 days before this page was built)
  • Latest release: 1.12.0 on 2026-08-21 (62 days before this page was built)