Artikel

Webanalyse ohne Google – Umami als selbstgehostete, datensparsame Alternative

AllgemeinDockerLinuxSEO

Viele Websitebetreiber möchten grundlegende Statistiken erfassen, ohne Besucher mit Cookie-Bannern zu belästigen oder persönliche Daten an US-Dienste weiterzugeben. Die Open-Source-Lösung Umami bietet hierfür einen schlanken, datensparsamen Ansatz: Sie liefert die wichtigsten Kennzahlen – Seitenaufrufe, Referrer, populäre Inhalte – ohne Tracking-Ballast und lässt sich in wenigen Minuten auf dem eigenen Server betreiben.


Warum Umami

Im Gegensatz zu Google Analytics oder Matomo setzt Umami auf Minimalismus.
Das Tool speichert keine personenbezogenen Daten, benötigt keine Cookies und läuft ressourcenschonend selbst auf kleinen Servern. Für Betreiber bedeutet das: keine externen Datenübertragungen, kein Einwilligungsbanner, kein juristisches Risiko durch Drittanbieter.

Hauptvorteile:

  • Keine Abhängigkeit von Cloud- oder US-Diensten
  • Keine personenbezogenen Nutzerdaten
  • Sehr geringe Serverlast
  • Klare, verständliche Auswertungen
  • Einfache Installation via Docker

Installation mit Docker

Das Setup besteht aus zwei Containern – der eigentlichen Anwendung (umami) und einer PostgreSQL-Datenbank – innerhalb eines bestehenden Netzwerks (z. B. spa-net).

sudo mkdir -p /opt/umami
cd /opt/umami
sudo nano docker-compose.yml
sdo nano .env

docker-compose.yml

services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    environment:
      DATABASE_URL: postgresql://umami:${POSTGRES_PASSWORD}@umami-db:5432/umami
      DATABASE_TYPE: postgresql
      APP_SECRET: ${UMAMI_APP_SECRET}
    networks:
      - spa-net
    ports:
      - "3000:3000"
    depends_on:
      - umami-db
    restart: unless-stopped

  umami-db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - umami-db-data:/var/lib/postgresql/data
    networks:
      - spa-net
    restart: unless-stopped

volumes:
  umami-db-data:

networks:
  spa-net:
    external: true

.env

POSTGRES_PASSWORD=ein_sicheres_passwort
UMAMI_APP_SECRET=ein_langes_geheimes_passwort

Start des Systems:

sudo docker compose up -d

Nach kurzer Zeit ist die Anwendung unter Port 3000 erreichbar.


Erstkonfiguration

  1. Aufruf im Browser: http://<server>:3000
  2. Anmeldung mit Standardzugang
    • Benutzername: admin
    • Passwort: umami
  3. Passwort sofort ändern
  4. Unter Settings → Websites → Add website die gewünschte Domain anlegen
  5. Die erzeugte Website-ID (UUID) notieren, z. B.
    9bca7ace-adcf-4924-a537-5971eb3025cc

Integration ins Frontend

Für moderne Frameworks wie Vue 3 + Vite lässt sich das Tracking-Script elegant über Umgebungsvariablen steuern.

.env.production

VITE_UMAMI_SRC=https://analytics.<domain>/script.js
VITE_UMAMI_WEBSITE_ID=d23oduh2o3-e23e-42134-b2356-e237hd298h

index.html

<script async src="%VITE_UMAMI_SRC%" data-website-id="%VITE_UMAMI_WEBSITE_ID%"></script>

Das Script wird vor </head> eingebunden und lädt bei jedem Seitenaufruf das Umami-Tracking.


Reverse-Proxy-Einbindung

In Kombination mit dem NGINX Proxy Manager kann das Interface über eine eigene Subdomain bereitgestellt werden, z. B. analytics.domain.de.

Empfohlene Einstellungen:

  • Ziel: interner Container umami:3000
  • SSL-Zertifikat via Let’s Encrypt
  • HTTP→HTTPS-Weiterleitung aktiv
  • Optionale IP-Filterung für das Admin-Interface

Leistungswerte

KomponenteRAM-VerbrauchCPU-LastDatengröße
Umamica. 100 MB< 1 %minimal
PostgreSQLca. 80 MB< 1 %wenige 100 MB pro Jahr

Selbst auf kleinen VPS-Instanzen bleibt die Belastung vernachlässigbar.


Ergebnis

Nach der Integration liefert Umami ein übersichtliches Dashboard mit allen wesentlichen Metriken: Seitenaufrufe in Echtzeit, Besucherquellen, meistgelesene Inhalte, Browser- und Geräteverteilung.
Die Daten verbleiben vollständig auf dem eigenen Server; es werden keine Profile erstellt, keine Cookies gesetzt und keine externen APIs eingebunden.

0 Kommentare