Webanalyse ohne Google – Umami als selbstgehostete, datensparsame Alternative
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
- Aufruf im Browser:
http://<server>:3000 - Anmeldung mit Standardzugang
- Benutzername:
admin - Passwort:
umami
- Benutzername:
- Passwort sofort ändern
- Unter Settings → Websites → Add website die gewünschte Domain anlegen
- 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
| Komponente | RAM-Verbrauch | CPU-Last | Datengröße |
|---|---|---|---|
| Umami | ca. 100 MB | < 1 % | minimal |
| PostgreSQL | ca. 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