Umami-Webanalyse mit Docker installieren¶
Veröffentlicht am 22. August 2026 · Geschätzte Lesezeit: 4 Minuten
Umami zeigt Seitenaufrufe, Besucher, Herkunftsseiten und verwendete Geräte für deine eigene Webseite an. Die Messdaten landen in deiner PostgreSQL-Datenbank statt bei einem fremden Analysedienst. Für Installation, Absicherung und den ersten Test solltest du ungefähr 30 Minuten einplanen.
Voraussetzungen
- Ein Server mit Docker und Docker Compose
- Mindestens 1 GB freier Arbeitsspeicher
- Ein freier TCP-Port
3000 - Zugriff auf den HTML-Code der zu messenden Webseite
1. Projektordner anlegen¶
Führe diesen Befehl auf dem Docker-Server aus:
2. Sichere Zugangswerte erzeugen¶
Der folgende Befehl erstellt eine .env-Datei mit einem zufälligen Datenbankpasswort und einem Anwendungsschlüssel:
printf 'POSTGRES_PASSWORD=%s\nAPP_SECRET=%s\n' "$(openssl rand -hex 24)" "$(openssl rand -hex 32)" > .env
Beschränke den Zugriff auf deinen Benutzer:
Datei geheim halten
Die .env-Datei enthält Zugangsdaten. Lade sie nicht in ein öffentliches Repository und bewahre Sicherungskopien verschlüsselt auf.
3. Compose-Datei anlegen¶
Lege im Ordner ~/umami eine Datei namens compose.yaml an:
services:
umami:
image: ghcr.io/umami-software/umami:latest
container_name: umami
restart: unless-stopped
init: true
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://umami:${POSTGRES_PASSWORD}@db:5432/umami
APP_SECRET: ${APP_SECRET}
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
interval: 5s
timeout: 5s
retries: 5
db:
image: postgres:15-alpine
container_name: umami-db
restart: unless-stopped
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
TZ: UTC
volumes:
- umami-db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
volumes:
umami-db-data:
name: umami-db-data
PostgreSQL erhält absichtlich keinen Host-Port. Nur der Umami-Container kann die Datenbank über das interne Compose-Netz erreichen.
4. Container starten¶
Starte Anwendung und Datenbank:
Prüfe den Zustand beider Container:
Falls Umami nicht startet, zeige die letzten Protokollzeilen an:
5. Erste Anmeldung absichern¶
Öffne http://<server-ip>:3000 im Browser. Ersetze <server-ip> durch die IP-Adresse deines Docker-Servers. Melde dich mit den offiziellen Standarddaten an:
- Benutzername:
admin - Passwort:
umami
Ändere das Passwort sofort unter den Profileinstellungen.
Standardpasswort sofort ändern
Mit den bekannten Standarddaten kann sich jeder anmelden, der den Dienst erreicht. Veröffentliche Umami erst nach dem Passwortwechsel und ausschließlich über HTTPS.
6. Webseite hinzufügen¶
Öffne in Umami Settings → Websites → Add website. Vergib einen Namen und trage die Domain deiner Webseite ein. Nach dem Speichern zeigt Umami einen Tracking-Code an.
Kopiere diesen Code unverändert in den <head>-Bereich deiner Webseite. Er enthält eine individuelle Website-ID und sieht ungefähr so aus:
Ersetze <umami-domain> durch die öffentlich per HTTPS erreichbare Umami-Adresse. <website-id> übernimmst du exakt aus Umami. Verwende keine erfundene ID.
HTTPS für öffentliche Webseiten
Eine öffentlich erreichbare Webseite sollte das Tracking-Skript ebenfalls über HTTPS laden. Andernfalls blockieren Browser den unsicheren Inhalt. Verwende dafür einen Reverse Proxy mit gültigem Zertifikat.
7. Ersten Seitenaufruf prüfen¶
Öffne deine Webseite in einem neuen privaten Browserfenster und wechsle danach zurück zum Umami-Dashboard. Der Aufruf sollte nach kurzer Zeit in der Echtzeitansicht erscheinen.
Falls nichts ankommt, öffne die Entwicklerwerkzeuge des Browsers und prüfe, ob script.js geladen wird. Werbe- und Tracking-Blocker können das Skript absichtlich sperren.
8. Datenbank sichern¶
Dieser Befehl wird im Umami-Projektordner ausgeführt. Er erstellt mit pg_dump eine portable SQL-Sicherung auf dem Docker-Server:
Prüfe, ob die Datei existiert und nicht leer ist:
Sichere zusätzlich compose.yaml und .env verschlüsselt auf einem anderen Gerät.
9. Aktualisieren und zurückgehen¶
Erstelle vor jeder Aktualisierung eine Datenbanksicherung. Lade anschließend die Images und baue die Container neu:
Prüfe Anmeldung, Dashboard und einen neuen Seitenaufruf. Für einen Rückweg benötigst du die vorher verwendeten Image-Tags, die gesicherte .env-Datei und den SQL-Dump. Ändere die PostgreSQL-Hauptversion niemals durch bloßes Austauschen des Image-Tags; dafür ist eine geplante Datenbankmigration nötig.
10. Typische Fehler beheben¶
- Umami bleibt beim Start hängen: Prüfe zuerst den Gesundheitszustand und die Protokolle der Datenbank.
- Anmeldung funktioniert nicht: Teste die Standarddaten nur beim ersten Start und kontrolliere anschließend dein neues Passwort.
- Keine Seitenaufrufe sichtbar: Prüfe Website-ID, Skriptadresse, HTTPS und einen möglicherweise aktiven Blocker.
- Port 3000 ist belegt: Ändere links in
"3000:3000"den Host-Port und passe nur die Browseradresse an. - Datenbankfehler nach einem Update: Spiele nicht sofort alte Volume-Dateien ein, sondern sichere den aktuellen Zustand und prüfe die offiziellen Upgrade-Hinweise.
11. Quellen und Videos¶
- Offizielle Umami-Installationsanleitung
- Offizielle Docker-Compose-Vorlage
- Video: Install Umami Analytics on Docker
- Video: Roll Your Own Google Analytics Alternative with Umami
Fertig¶
Umami läuft nun mit einer privaten PostgreSQL-Datenbank und erfasst Aufrufe deiner eingebundenen Webseite. Öffne eine Testseite und kontrolliere die Echtzeitansicht. Erscheint der Aufruf dort, arbeitet die Webanalyse korrekt.