All templates

HedgeDoc

Collaborative markdown notes in the browser, with live editing and slide mode.

Added by LeafdTK, 28 Sept 2026 v1.0.0 AGPL-3.0-only docs #markdown#notes#collaboration#wiki

Resources

HedgeDoc

LeafdTK1 deployment1 database1 domainv1.0.0

3
  • db

    postgres

    Ready

  • app

    quay.io/hedgedoc/hedgedoc:1.10.3

    Running

  • ingress

    notes.example.com

    Live

Parameters

YAML

hedgedoc.yaml v1.0.0
apiVersion: leaf/v1
kind: Template
metadata:
  name: hedgedoc
  displayName: 'HedgeDoc'
  description: 'Collaborative markdown notes in the browser, with live editing and slide mode.'
  icon: https://github.com/hedgedoc.png?size=256
  version: '1.0.0'
  category: docs
  tags: ['markdown', 'notes', 'collaboration', 'wiki']
  keywords: ['hackmd', 'codimd', 'pad', 'realtime editing', 'documents']
  homepage: https://hedgedoc.org
  license: AGPL-3.0-only

parameters:
  - name: appName
    displayName: 'App Name'
    type: string
    default: 'hedgedoc'
    required: true
    validation:
      pattern: '^[a-z][a-z0-9-]{1,58}[a-z0-9]$'
      message: 'Must be lowercase alphanumeric with hyphens, 3-60 chars'
  - name: domain
    displayName: 'Domain'
    type: string
    required: true
    placeholder: 'notes.example.com'
  - name: sessionSecret
    displayName: 'Session secret'
    description: 'Generated if left empty'
    type: secret
    validation:
      min: 32
  - name: allowAnonymous
    displayName: 'Anonymous notes'
    description: 'Let people without an account create notes'
    type: boolean
    default: true
  - name: allowAnonymousEdits
    displayName: 'Anonymous edits'
    type: boolean
    default: false
  - name: allowEmailRegister
    displayName: 'Email sign-up'
    type: boolean
    default: true
  - name: allowFreeUrl
    displayName: 'Create notes by visiting any URL'
    type: boolean
    default: false
  - name: defaultPermission
    displayName: 'Default note permission'
    type: select
    default: 'editable'
    options:
      - label: 'freely'
        value: 'freely'
      - label: 'editable'
        value: 'editable'
      - label: 'limited'
        value: 'limited'
      - label: 'locked'
        value: 'locked'
      - label: 'protected'
        value: 'protected'
      - label: 'private'
        value: 'private'
  - name: enableUploads
    displayName: 'Image uploads'
    type: select
    default: 'registered'
    options:
      - label: 'all'
        value: 'all'
      - label: 'registered'
        value: 'registered'
      - label: 'none'
        value: 'none'
  - name: documentMaxLength
    displayName: 'Max note length'
    type: number
    default: 100000
    validation:
      min: 1000
  - name: allowGravatar
    displayName: 'Gravatar avatars'
    type: boolean
    default: true
  - name: storage
    displayName: 'Storage'
    description: 'Volume for image uploads'
    type: string
    default: '2Gi'
  - name: enableTls
    displayName: 'Enable HTTPS'
    type: boolean
    default: true

resources:
  - name: db
    type: database
    config:
      name: '{{ params.appName }}-db'

  - name: app
    type: deployment
    config:
      name: '{{ params.appName }}'
      image: quay.io/hedgedoc/hedgedoc:1.10.3
      replicas: 1
      ports:
        - name: http
          containerPort: 3000
          servicePort: 3000
          protocol: TCP
      volumes:
        - name: uploads
          type: pvc
          mountPath: /hedgedoc/public/uploads
          storageSize: '{{ params.storage }}'
      env:
        - key: CMD_DB_URL
          value: '{{ resources.db.connectionString }}'
          secret: true
        - key: CMD_DOMAIN
          value: '{{ params.domain }}'
        - key: CMD_PROTOCOL_USESSL
          value: '{{ params.enableTls }}'
        - key: CMD_URL_ADDPORT
          value: 'false'
        - key: CMD_SESSION_SECRET
          value: '{{ params.sessionSecret }}'
          secret: true
        - key: CMD_ALLOW_ANONYMOUS
          value: '{{ params.allowAnonymous }}'
        - key: CMD_ALLOW_ANONYMOUS_EDITS
          value: '{{ params.allowAnonymousEdits }}'
        - key: CMD_ALLOW_EMAIL_REGISTER
          value: '{{ params.allowEmailRegister }}'
        - key: CMD_ALLOW_FREEURL
          value: '{{ params.allowFreeUrl }}'
        - key: CMD_DEFAULT_PERMISSION
          value: '{{ params.defaultPermission }}'
        - key: CMD_ENABLE_UPLOADS
          value: '{{ params.enableUploads }}'
        - key: CMD_DOCUMENT_MAX_LENGTH
          value: '{{ params.documentMaxLength }}'
        - key: CMD_ALLOW_GRAVATAR
          value: '{{ params.allowGravatar }}'

  - name: ingress
    type: ingress
    config:
      host: '{{ params.domain }}'
      tlsEnabled: '{{ params.enableTls }}'
      routes:
        - path: /
          serviceName: '{{ resources.app.serviceName }}'
          servicePort: 3000

your own cloud, in one click.

Free and open source. Runs on any Linux box.

Install Orchard