Umami is a privacy-first analytics platform. Traffic, campaigns, behavior, conversions, and revenue in one place โ no cookies, no surveillance, self-hosted...
docker pull ghcr.io/umami-software/umami
docker run -d --name umami -p 3000:3000 --restart always ghcr.io/umami-software/umami:latest
podman run -d --name umami -p 3000:3000 --restart always ghcr.io/umami-software/umami:latest
skopeo inspect docker://ghcr.io/umami-software/umami:latest
oras pull ghcr.io/umami-software/umami:latest
docker compose up -d
---
services:
umami:
image: ghcr.io/umami-software/umami:latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://umami:umami@db:5432/umami
APP_SECRET: replace-me-with-a-random-string
# Required for two-factor authentication, generate with: openssl rand -hex 32
TWO_FACTOR_ENCRYPTION_KEY: replace-me-with-a-64-character-hex-string
depends_on:
db:
condition: service_healthy
init: true
restart: always
healthcheck:
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
interval: 5s
timeout: 5s
retries: 5
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: umami
volumes:
- umami-db-data:/var/lib/postgresql/data
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
volumes:
umami-db-data: