How to Install Umami Analytics on Your Breeze
Umami is a simple, fast, and privacy-focused open-source analytics tool. It provides essential website metrics without tracking personal data or using cookies. Umami is an excellent choice if you want a clean, minimal analytics dashboard that respects visitor privacy. Self-hosting on your Breeze gives you full control over your data.
Prerequisites
- A Breeze instance with at least 1 GB of RAM
- Docker and Docker Compose installed
- A domain or subdomain (e.g.,
stats.example.com)
Step 1 — Create the Docker Compose File
Set up a directory and create the configuration:
mkdir -p ~/umami && cd ~/umami
cat > docker-compose.yml <<'EOF'
version: "3.8"
services:
umami:
image: ghcr.io/umami-software/umami:postgresql-latest
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000"
environment:
DATABASE_URL: postgresql://umami:your-secure-password@db:5432/umami
DATABASE_TYPE: postgresql
APP_SECRET: $(openssl rand -hex 32)
depends_on:
db:
condition: service_healthy
db:
image: postgres:15-alpine
restart: unless-stopped
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: your-secure-password
volumes:
- umami_db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U umami"]
interval: 5s
timeout: 5s
retries: 5
volumes:
umami_db:
EOF
Replace your-secure-password with a strong password generated by openssl rand -hex 16.
Step 2 — Launch Umami
docker compose up -d
The default login credentials are admin with password umami. Change these immediately after your first login.
Step 3 — Configure the Reverse Proxy
Set up Nginx to forward traffic to Umami:
server {
listen 443 ssl http2;
server_name stats.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Step 4 — Add a Website
Log into Umami and navigate to Settings → Websites → Add Website. Enter your site name and domain. Umami will generate a tracking code snippet:
<script async src="https://stats.example.com/script.js"
data-website-id="your-website-id"></script>
Add this to the <head> of your website. The tracking script is only about 2 KB, making it one of the lightest analytics solutions available.
Step 5 — Understanding the Dashboard
Umami's dashboard is clean and straightforward, showing:
- Page views and unique visitors over configurable time ranges
- Top pages ranked by view count
- Referrers showing where your traffic comes from
- Browser and OS breakdowns
- Country and language distribution
- Real-time visitor count and active pages
Event Tracking
Track custom events like button clicks and form submissions by adding data attributes to your HTML elements:
<button data-umami-event="signup-button">Sign Up</button>
Or use the JavaScript API for programmatic tracking:
umami.track('download', { file: 'whitepaper.pdf' });
Teams and Sharing
Create team accounts to share dashboard access with colleagues without sharing admin credentials. You can also generate shareable dashboard links for stakeholders who need read-only access to analytics data.