← Back to home

Umami Stats - own your trackings

Umami is a privacy-focused, open-source web analytics platform designed as a lightweight, cookie-free alternative to Google Analytics. It tracks essential website metrics—such as page views, visitor locations, and device types—in real-time without collecting personally identifiable information, making it fully GDPR compliant.

Key Features of Umami Tracking

Privacy-First: Does not use cookies or track users across websites, eliminating the need for annoying cookie banners. Lightweight & Fast: Uses a small script that does not slow down websites. Comprehensive Metrics: Tracks page views, unique visitors, bounce rates, visit duration, browsers, operating systems, and device types. Real-Time Data: Offers a live dashboard showing current visitor activity. Custom Event Tracking: Allows tracking of specific user interactions like button clicks. Self-Hosted or Cloud: Can be self-hosted via Docker or used as a managed cloud service.

Umami is designed to be simple, providing a clear, user-friendly interface for website owners who want to understand their traffic without the complexity or privacy concerns of traditional analytics tool.

Self-hosting Umami via Docker offers a lightweight, private, and cost-effective analytics solution with easy deployment, but has potential drawbacks regarding scalability for very high traffic and limited advanced features compared to alternatives.

Pros of Umami Self-Hosted via Docker

  • Easy Deployment: Umami provides official Docker images and a simple Docker Compose setup, making installation and consistent deployment straightforward, even for beginners in self-hosting.

  • Data Ownership and Privacy: You retain full control and ownership of all your data, which stays on your server. Umami is privacy-focused, cookie-free by default, and helps with GDPR compliance without requiring intrusive consent banners.

  • Lightweight and Fast: The application has low resource requirements (around 500 MB of RAM with a PostgreSQL database) and a tiny tracking script (~2KB), ensuring minimal impact on both your server's load and your website's page load times.

  • Cost-Effective: The software is free and open-source. Your only costs are associated with the server resources, which are generally much lower and more predictable than many SaaS analytics platforms.

  • Ad-Blocker Evasion: The self-hosted nature and ability to rename the tracking script and API endpoint can help evade some ad blockers, leading to more complete and accurate stats.

  • Clean and Simple UI: The dashboard is known for its clean, simple, and intuitive interface that focuses on essential metrics, making it easy to use for anyone.


Cons of Umami Self-Hosted via Docker

  • Limited Features: Umami focuses on core analytics and lacks some advanced features found in other tools (e.g., no built-in session replay, heatmaps, or A/B testing).

  • Scalability Challenges: While it handles typical small to medium website traffic well, very high-traffic sites might require specific server tweaks and careful setup to perform optimally.

  • Manual Maintenance and Updates: You are responsible for maintenance, updates, and troubleshooting your Docker instance. There is no official enterprise support, so you rely primarily on the GitHub community and forums for help.

  • Potential Performance Overhead: While generally efficient, running an analytics container will add some load to your server, which could be an issue on very low-end machines.

  • Cloud Version Has More Features: The official cloud version of Umami appears to have more advanced features and a slightly better interface than the self-hosted version, creating a feature gap between the two offering

My configuration runs inside a docker container with postgresql server outside

docker-compose.yml:

services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    ports:
      - "3054:3000"
    environment:
      DATABASE_URL: postgresql://user:password@192.168.1.7:5432/umami
      APP_SECRET: redacted
    restart: always

~/umami$ docker compose ps
NAME            IMAGE                                            COMMAND                  SERVICE   CREATED      STATUS      PORTS
umami-umami-1   ghcr.io/umami-software/umami:postgresql-latest   "docker-entrypoint.s…"   umami     4 days ago   Up 4 days   0.0.0.0:3054->3000/tcp, [::]:3054->3000/tcp