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.