All templates

Umami

Privacy-friendly web analytics. One script tag, no cookies, your own database.

Added by LeafdTK, 28 Sept 2026 v1.0.0 MIT analytics #analytics#privacy#tracking

Resources

Umami

LeafdTK1 deployment1 database1 domainv1.0.0

3
  • db

    postgres

    Ready

  • app

    ghcr.io/umami-software/umami:postgresql-latest

    Running

  • ingress

    stats.example.com

    Live

Parameters

YAML

umami.yaml v1.0.0
apiVersion: leaf/v1
kind: Template
metadata:
  name: umami
  displayName: 'Umami'
  description: 'Privacy-friendly web analytics. One script tag, no cookies, your own database.'
  icon: https://github.com/umami-software.png?size=256
  version: '1.0.0'
  category: analytics
  tags: ['analytics', 'privacy', 'tracking']
  keywords: ['google analytics alternative', 'plausible', 'page views', 'visitors', 'stats']
  homepage: https://umami.is
  license: MIT

parameters:
  - name: appName
    displayName: 'App Name'
    type: string
    default: 'umami'
    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: 'stats.example.com'
  - name: appSecret
    displayName: 'App secret'
    description: 'Generated if left empty'
    type: secret
    validation:
      min: 32
  - name: trackerScriptName
    displayName: 'Tracker script name'
    description: 'Rename it to dodge naive ad blockers'
    type: string
    default: 'script.js'
  - name: collectEndpoint
    displayName: 'Collect endpoint'
    type: string
    default: '/api/send'
  - name: ignoreIp
    displayName: 'Ignore IPs'
    description: 'Comma-separated addresses or CIDR ranges to exclude'
    type: string
    default: ''
    placeholder: '203.0.113.4,10.0.0.0/8'
  - name: disableTelemetry
    displayName: 'Disable telemetry'
    type: boolean
    default: true
  - name: disableUpdates
    displayName: 'Disable update checks'
    type: boolean
    default: true
  - name: disableLogin
    displayName: 'Disable the login page'
    type: boolean
    default: false
  - name: clientIpHeader
    displayName: 'Client IP header'
    type: string
    default: 'x-forwarded-for'
  - 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: ghcr.io/umami-software/umami:postgresql-latest
      replicas: 1
      ports:
        - name: http
          containerPort: 3000
          servicePort: 3000
          protocol: TCP
      env:
        - key: DATABASE_TYPE
          value: postgresql
        - key: DATABASE_URL
          value: '{{ resources.db.connectionString }}'
          secret: true
        - key: APP_SECRET
          value: '{{ params.appSecret }}'
          secret: true
        - key: TRACKER_SCRIPT_NAME
          value: '{{ params.trackerScriptName }}'
        - key: COLLECT_API_ENDPOINT
          value: '{{ params.collectEndpoint }}'
        - key: IGNORE_IP
          value: '{{ params.ignoreIp }}'
        - key: DISABLE_TELEMETRY
          value: '{{ params.disableTelemetry }}'
        - key: DISABLE_UPDATES
          value: '{{ params.disableUpdates }}'
        - key: DISABLE_LOGIN
          value: '{{ params.disableLogin }}'
        - key: CLIENT_IP_HEADER
          value: '{{ params.clientIpHeader }}'

  - 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