Umami logo

Umami

Privacy-focused web analytics platform

Alternative to: Google Analytics, Mixpanel, Amplitude


Umami is a simple, fast, privacy-focused alternative to Google Analytics. It gives clear, accurate insights into website traffic without collecting or storing personal data about visitors, keeping site owners GDPR-compliant by default. It supports unlimited websites, custom events, real-time visitor data, and shareable reports from a single self-hosted dashboard.

Umami Docker Compose example

Self-host Umami on your own server, homelab, or VPS starting from this Docker Compose example. It runs Umami in Docker containers using the official ghcr.io/umami-software/umami:latest, postgres:15-alpine images, with persistent volumes and automatic restarts preconfigured. Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.

services:
  umami:
    image: ghcr.io/umami-software/umami:latest
    init: true
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      # Connection string for the PostgreSQL database Umami stores its data in.
      DATABASE_URL: "postgresql://umami:umami@db:5432/umami"
      # Random secret used to hash session tokens and sign cookies. Change this to a long random string.
      APP_SECRET: "changeme"
    healthcheck:
      test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
      interval: 5s
      timeout: 5s
      retries: 5

  db:
    image: postgres:15-alpine
    restart: unless-stopped
    environment:
      # Name of the PostgreSQL database created on first start.
      POSTGRES_DB: "umami"
      # PostgreSQL user that owns the database.
      POSTGRES_USER: "umami"
      # Password for the PostgreSQL user.
      POSTGRES_PASSWORD: "umami"
    volumes:
      - umami-db-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U umami -d umami"]
      interval: 5s
      timeout: 5s
      retries: 5

volumes:
  umami-db-data:

Values set to changeme are required — replace them with your own values before starting Umami.

Prefer a managed setup? WinterFlow installs, configures, and updates Umami for you using this same Docker Compose configuration.