Umami auf einem Managed VPS hosten: Ihre Webanalyse auf Ihrem Server

Umami auf einem Managed VPS zu hosten heißt, die Statistiken Ihrer Websites auf einer Maschine zu bewahren, die Ihnen gehört und die unsere Teams aktuell halten und Tag und Nacht beaufsichtigen. Umami ist freie Software unter der MIT-Lizenz, die den Besucherverkehr ohne Cookies misst. Dieser Leitfaden folgt der offiziellen Dokumentation: die Installation mit Docker Compose und PostgreSQL, HTTPS, die erste Anmeldung, das Tracking-Skript, was das Projekt zu personenbezogenen Daten sagt, nützliche Einstellungen, Backups und Updates.

Simon Vasconcelos Lee Von Veröffentlicht am 15. November 2026Lesezeit: 12 Minuten

Alle Leitfäden

Das Wichtigste in Kürze

  1. Die MIT-Lizenz erlaubt es, Umami frei zu nutzen, zu ändern und weiterzugeben, im Unternehmen wie anderswo, sofern Sie seinen Urheberrechtshinweis beibehalten.
  2. Installieren Sie es mit Docker Compose: Die Datei des Projekts startet Umami und seine PostgreSQL-Datenbank, seit Version 3 die einzige unterstützte Datenbank.
  3. Erzeugen Sie APP_SECRET und TWO_FACTOR_ENCRYPTION_KEY per Zufall, betreiben Sie Umami über HTTPS unter einer eigenen Subdomain und ändern Sie dann sofort das Passwort des Kontos admin.
  4. Fügen Sie Ihre Website hinzu und setzen Sie dann ihr Tracking-Skript in den <head> Ihrer Seiten: Der Tracker verwendet keine Cookies.
  5. Exportieren Sie die Datenbank täglich mit pg_dump, bewahren Sie die Datei .env sicher auf und aktualisieren Sie mit docker compose pull.

Was Umami kann

Umami ist eine quelloffene Plattform für Web- und Produktanalyse. Seine Dokumentation beschreibt ein Werkzeug, das Besucherverkehr, Kampagnen, Besucherverhalten, Conversions, Bindung und Umsatz zusammenführt, vom ersten Besuch bis zu den Ergebnissen, die für Ihr Unternehmen zählen. Es ist in TypeScript auf Basis von Next.js geschrieben, und sein Docker-Image läuft unter einem Konto ohne Sonderrechte.

Eine Instanz verfolgt mehrere Websites: Jede erhält ihre eigene ID und ihr eigenes Tracking-Skript, und Ihre Kolleginnen und Kollegen finden sich über Konten und Teams zurecht.

Was die MIT-Lizenz erlaubt

Umami wird unter der MIT-Lizenz veröffentlicht, im Namen von Umami Software, Inc. Sie gewährt kostenlos das Recht, die Software zu nutzen, zu kopieren, zu ändern, zusammenzuführen, zu veröffentlichen, zu verbreiten, unterzulizenzieren und Kopien davon zu verkaufen. Sie können sie also für Ihr Unternehmen und für die Websites Ihrer Kunden betreiben, ohne eine Lizenz zu kaufen.

Ihre einzige Bedingung: Der Urheberrechtshinweis und der Erlaubnishinweis begleiten alle Kopien oder wesentlichen Teile der Software. Wie jede MIT-Lizenz stellt sie die Software „wie besehen“ bereit, ohne Gewährleistung.

Cookies und personenbezogene Daten: was das Projekt sagt

Die Dokumentation stellt Umami als Analyse ohne Cookies vor, ohne websiteübergreifendes Tracking und ohne automatische Erhebung personenbezogener Daten. Selbst gehostet, bewahrt es Ihre Statistiken auf Ihrem eigenen Server: Sie entscheiden, wo sie liegen und wie lange sie bleiben.

FrageWas das Projekt sagtQuelle
CookiesDer Web-Tracker verwendet keine Cookies; ob Ihre Website einen Cookie-Hinweis braucht, hängt von den anderen Diensten ab, die Sie nutzen, und von den geltenden AnforderungenFAQ
Erhobene DatenSeitenaufrufe, Verweis-URLs, Browser, Betriebssysteme, Gerätetypen und ungefährer StandortFAQ
IP-AdresseDie Tabelle der Sitzungen hat keine Spalte für die IP-Adresse; eine Sitzungs-ID ist ein Hash aus der Website, der Adresse, dem Browser und einem Salt, der standardmäßig jeden Monat wechseltSchema und Code, Version 3.4.1
AufbewahrungSelbst gehostet werden die Daten aufbewahrt, bis Sie sie löschenFAQ
DSGVOUmami ist mit Blick auf den Datenschutz entworfen, und die Konformität hängt davon ab, wie Sie es konfigurieren und nutzenFAQ
Daten, die Sie sendenEine Besucher-ID oder Ereigniseigenschaften, die Sie zu senden beschließen, liegen in Ihrer VerantwortungEinführung

Drei Einstellungen des Tracking-Skripts gehen auf Wunsch weiter: data-exclude-search entfernt die Suchparameter aus den erfassten URLs, data-exclude-hash entfernt den Hash, und data-do-not-track schaltet das Tracking für Browser ab, die die Präferenz Do Not Track übermitteln. Die Dokumentation weist darauf hin, dass diese letzte Einstellung für sich allein keine vollständige Lösung für das Einwilligungsmanagement ist.

Wenn Sie angemeldete Besucher mit data-distinct-id oder umami.identify() identifizieren, empfiehlt die Dokumentation eine interne Nutzer-ID oder einen Hash statt einer E-Mail-Adresse: Der Wert ist im HTML der Seite lesbar.

Die Installation mit Docker Compose und PostgreSQL

Das Repository liefert eine docker-compose.yml, die Umami und seine PostgreSQL-Datenbank startet. Seit Version 3 ist PostgreSQL die einzige unterstützte Datenbank, mindestens in Version 12.14, und die Dokumentation empfiehlt, sie auf die Zeitzone UTC einzustellen. Legen Sie auf einem Server, auf dem Docker installiert ist, einen Ordner an und beginnen Sie mit den Geheimnissen, per Zufall mit openssl erzeugt, wie es die Dokumentation vorschlägt:

Terminal
cat > .env <<EOF
POSTGRES_PASSWORD=$(openssl rand -hex 24)
APP_SECRET=$(openssl rand -hex 32)
TWO_FACTOR_ENCRYPTION_KEY=$(openssl rand -hex 32)
EOF
chmod 600 .env

Legen Sie dann diese compose.yaml daneben. Sie folgt der Datei des Projekts in Version 3.4.1, mit zwei Änderungen: Die Geheimnisse kommen aus der Datei .env, und der Port wird nur auf 127.0.0.1 veröffentlicht.

compose.yaml
services:
  umami:
    image: ghcr.io/umami-software/umami:latest
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:${POSTGRES_PASSWORD}@db:5432/umami
      APP_SECRET: ${APP_SECRET}
      TWO_FACTOR_ENCRYPTION_KEY: ${TWO_FACTOR_ENCRYPTION_KEY}
    depends_on:
      db:
        condition: service_healthy
    init: true
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
      interval: 5s
      timeout: 5s
      retries: 5
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - umami-db-data:/var/lib/postgresql/data
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5
volumes:
  umami-db-data:
Terminal
docker compose up -d
curl -s http://127.0.0.1:3000/api/heartbeat

Die Installationsdokumentation nennt weder Arbeitsspeicher noch Prozessor. Die Größe hängt vom Besucherverkehr der verfolgten Websites und vom Umfang der aufbewahrten Daten ab. Auf einem Managed VPS beschreiben Sie uns Ihren Einsatz, und wir empfehlen Ihnen die passende Größe.

HTTPS: der Reverse Proxy

Umami lauscht über HTTP auf Port 3000, und die Dokumentation schlägt vor, es hinter Ihrem Webserver über einen Reverse Proxy auszuliefern. Geben Sie ihm eine eigene Subdomain, etwa stats.example.com, die mit A- und AAAA-Einträgen auf den Server zeigt. Umami unter einem Pfad auszuliefern, läuft über BASE_PATH, eine Variable, die beim Bau der Anwendung gelesen wird: Mit dem veröffentlichten Image ist die Subdomain der direkte Weg.

Der Proxy muss außerdem die Adresse des Besuchers weitergeben. Umami liest sie aus den Headern, die es erhält, darunter X-Real-IP und X-Forwarded-For: Es nutzt sie, um Besucher zu unterscheiden und ihr Land zu bestimmen. Wenn Ihr Proxy einen anderen Header verwendet, benennt ihn CLIENT_IP_HEADER.

Mit Caddy

Caddy bezieht das Zertifikat von Let’s Encrypt und aktiviert HTTPS selbstständig. Seine Direktive reverse_proxy setzt standardmäßig X-Forwarded-For: Diese drei Zeilen genügen.

Caddyfile
stats.example.com {
  reverse_proxy 127.0.0.1:3000
}

Mit Nginx und Certbot

Dieser Block folgt dem Nginx-Beispiel der Umami-Dokumentation und lauscht auf Port 80, damit Certbot HTTPS einrichten kann:

Nginx-Block
server {
  listen 80;
  listen [::]:80;
  server_name stats.example.com;

  location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

Certbot richtet anschließend das Zertifikat ein und kümmert sich um die Erneuerung:

Terminal
sudo certbot --nginx

Die erste Anmeldung: das Admin-Konto und die Zwei-Faktor-Authentifizierung

Wenn Umami seine Datenbank anlegt, eröffnet es ein Administratorkonto: Benutzername admin, Passwort umami. Die Dokumentation bittet darum, dieses Passwort bei der ersten Anmeldung zu ändern.

  1. Öffnen Sie Ihre HTTPS-Adresse und melden Sie sich mit admin und umami an.
  2. Öffnen Sie Settings über die Profilschaltfläche in der Seitenleiste, dann Profile, und klicken Sie auf Change password.
  3. Aktivieren Sie im Reiter Security die Zwei-Faktor-Authentifizierung: Scannen Sie den QR-Code mit Ihrer Authenticator-App, geben Sie den sechsstelligen Code ein und bewahren Sie dann die zehn Backup-Codes sicher auf, denn sie werden nur einmal angezeigt.

Bewahren Sie TWO_FACTOR_ENCRYPTION_KEY bei Ihren Backups auf: Die Dokumentation warnt, dass der Verlust oder die Änderung dieses Schlüssels die gespeicherten Geheimnisse unlesbar macht, und jeder Nutzer muss sich dann erneut für die Zwei-Faktor-Authentifizierung registrieren.

Eine Website und ihr Tracking-Skript hinzufügen

  1. Klicken Sie unter Websites auf Add website.
  2. Geben Sie der Website einen Namen und dann ihre Domain an: Umami nutzt sie, um Ihre eigenen Seiten aus der Liste der Verweisquellen herauszufiltern.
  3. Öffnen Sie Edit bei dieser Website und kopieren Sie den Code aus dem Abschnitt Tracking code.
  4. Setzen Sie ihn in den <head> Ihrer Seiten und besuchen Sie dann Ihre Website: Die Daten erscheinen sofort im Dashboard.
Der Tracking-Code, im head
<script defer src="https://stats.example.com/script.js" data-website-id="your-website-id"></script>

Ein eigener Name für das Skript

Manche Werbeblocker sperren alles, was nach Analyse aussieht. Selbst gehostet wird Umami bereits von Ihrer eigenen Domain ausgeliefert, und zwei Variablen gehen weiter: TRACKER_SCRIPT_NAME gibt dem Skript einen anderen Namen als script.js, und COLLECT_API_ENDPOINT benennt den Erfassungsendpunkt um, statt /api/send. Das Skript ruft den neuen Endpunkt dann selbst auf; auf Ihren Seiten ändert sich nur die Quelle des Tracking-Codes.

compose.yaml, unter environment
TRACKER_SCRIPT_NAME: "stats.js"
COLLECT_API_ENDPOINT: "/api/collect"

Nützliche Einstellungen

Diese Umgebungsvariablen kommen in den Dienst umami der compose.yaml, danach erstellt docker compose up -d den Container neu, damit er sie übernimmt:

VariableWas sie tutWert
DISABLE_TELEMETRYSchaltet die anonyme Telemetrie ab, die Umami an das Projekt schickt, um die Anwendung zu verbessern1
PRIVATE_MODESchaltet alle externen Netzwerkaufrufe ab, darunter die Website-Symbole, die standardmäßig von DuckDuckGo kommen1
DISABLE_UPDATESSchaltet die Prüfung auf neue Versionen ab1
IGNORE_IPSchließt IP-Adressen und CIDR-Bereiche von der Erfassung aus, etwa die Ihrer BürosEine kommagetrennte Liste
SALT_ROTATIONLegt fest, wie oft der Salt hinter den Sitzungs-IDs wechseltStandardmäßig month
REDIS_URLErgänzt einen Redis-Cache, den die Dokumentation für Websites mit viel Besucherverkehr oder für mehrere Instanzen empfiehltIhre Redis-Adresse
MCP_ENABLEDÖffnet den Endpunkt /mcp: Ihr KI-Assistent liest Ihre Statistiken mit Lesezugriff, mit einem API-Schlüssel, den Sie unter Settings, API keys anlegen1

Die Backups

Alles, was Umami aufbewahrt, liegt in seiner PostgreSQL-Datenbank: Konten, Websites, Teams und Statistiken. Exportieren Sie sie jeden Tag und unmittelbar vor jedem Update: Selbst gehostet werden diese Daten ohne zeitliche Grenze aufbewahrt. Neben der Datenbank enthält die Datei .env die Geheimnisse, die sie nutzbar machen:

ElementWas es enthältZu sichern
Die PostgreSQL-DatenbankKonten, Websites, Teams, Berichte und alle StatistikenPflicht, mit pg_dump
.envDas Datenbankpasswort, APP_SECRET und der Schlüssel der Zwei-Faktor-AuthentifizierungPflicht, verschlüsselt
compose.yamlDie Konfiguration Ihrer InstanzEmpfohlen

Die Datenbank im laufenden Betrieb exportieren

pg_dump erstellt einen konsistenten Export, während die Datenbank in Gebrauch ist. Das benutzerdefinierte Format, -Fc, ist komprimiert und wird mit pg_restore wiederhergestellt:

Terminal, im Ordner der compose.yaml
docker compose exec -T db pg_dump -U umami -d umami -Fc > umami-$(date +%F).dump

Planen Sie diesen Befehl auf dem Server mindestens einmal täglich, räumen Sie die Exporte auf, die sich ansammeln, und schicken Sie eine Kopie an einen anderen Ort. Auf der Festplatte des Servers abgelegt, fließen diese Exporte auch in dessen nächtliche Backups ein.

Wiederherstellen

  1. Stoppen Sie Umami und lassen Sie die Datenbank laufen: docker compose stop umami.
  2. Spielen Sie den Export in die Datenbank zurück und ersetzen Sie dabei die vorhandenen Objekte.
  3. Starten Sie Umami neu und prüfen Sie dann, ob Ihre Websites und ihre Statistiken da sind.
Terminal
docker compose stop umami
docker compose exec -T db pg_restore -U umami -d umami --clean --if-exists < umami-YYYY-MM-DD.dump
docker compose start umami

Wiederholen Sie diese Übung von Zeit zu Zeit, an einer Kopie: So prüfen Sie, dass ein Backup funktioniert.

Die Updates

Die Dokumentation nennt zwei Befehle, auszuführen im Ordner der compose.yaml. Die Datenbank bleibt in ihrem Volume:

Terminal
docker compose pull
docker compose up --force-recreate -d

Beim Neustart wendet der Container die Schemamigrationen selbst an. Version 3.4.0 vom 17. September 2026 brachte zwei davon mit, für Anmerkungen und API-Schlüssel; Version 3.4.1 vom 23. Oktober 2026 bringt keine. Nach einem großen Versionssprung, etwa dem Wechsel auf Version 3, schlägt die Dokumentation vor, in PostgreSQL ANALYZE auszuführen, damit die Dashboards wieder ihre Geschwindigkeit erreichen:

Terminal
docker compose exec db psql -U umami -d umami -c "ANALYZE;"

Wer was tut auf einem Managed VPS

Beim Selbsthosting müssen Sie neben der Anwendung auch den Server betreuen. Auf einem Managed VPS übernehmen unsere Teams den Server und betreuen Ihre Instanz proaktiv; Umami bleibt Ihre Software, mit ihren Einstellungen und Daten.

ThemaUnsere TeamsSie
Der ServerSystem- und Sicherheitsupdates, Eingriffe am Server inbegriffenDer Zeitpunkt, der zu Ihrem Betrieb passt
Die ÜberwachungServer rund um die Uhr im Blick, mit Eingriff, ohne auf Ihren Anruf zu wartenDas Lesen der Protokolle Ihrer Instanz
UmamiProaktive Betreuung: Fehler, lange Antwortzeiten und Speicherplatz erkannt, Korrektur empfohlenInstallation, Updates und Einstellungen, die Sie umsetzen, selbst oder mit Ihrem KI-Assistenten
Die Websites und die StatistikenDer Server, der sie trägt, überwacht und gesichertDie Konten, die verfolgten Websites, das Tracking-Skript und die Aufbewahrungsdauer der Daten
Die BackupsJede Nacht, verschlüsselt und außerhalb der Maschine aufbewahrt; Wiederherstellung inbegriffenDie eigenen Exporte von Umami und die Wiederherstellungsanfrage, wenn Sie sie brauchen
Die MigrationIhr aktueller Server wird kostenlos migriertDer Zeitpunkt der Umstellung

Wenn unsere Teams lieber in der Anwendung selbst eingreifen sollen, wird diese Leistung nach Stunden oder pauschal abgerechnet, mit einem Kostenvoranschlag vor dem Eingriff.

Umami auf einem Server, der für Sie gepflegt wird

Mit einem Managed VPS von Simafri halten unsere Teams den Server Ihrer Umami-Instanz aktuell, überwachen ihn Tag und Nacht und greifen ein, ohne auf Ihren Anruf zu warten; sie betreuen auch Ihre Instanz proaktiv und empfehlen Ihnen die sinnvollen Korrekturen, die Sie umsetzen, selbst oder mit Ihrem KI-Assistenten. Die Backups werden jede Nacht verschlüsselt und außerhalb der Maschine aufbewahrt, ihre Wiederherstellung ist inbegriffen, und die Migration Ihres aktuellen Servers ist kostenlos.

Managed VPS entdecken

Häufige Fragen

Ist Umami für Unternehmen kostenlos?

Ja. Umami steht unter der MIT-Lizenz: Sie können es im Unternehmen nutzen, ändern und weitergeben, ohne eine Lizenz zu kaufen, sofern Sie seinen Urheberrechtshinweis beibehalten. Bleiben die Kosten für den Server, auf dem es läuft.

Verwendet Umami Cookies?

Nein. Die FAQ des Projekts stellt klar, dass der Web-Tracker von Umami keine Cookies verwendet. Ob Ihre Website einen Cookie-Hinweis braucht, hängt von den anderen Diensten ab, die Sie darauf nutzen, und von den geltenden Anforderungen.

Funktioniert Umami mit MySQL?

Seit Version 3 nicht mehr: Umami unterstützt PostgreSQL, mindestens in Version 12.14. Eine Instanz der Version 2 mit MySQL überträgt ihre Daten zuerst mit dem Migrationsleitfaden des Projekts nach PostgreSQL und wechselt dann auf Version 3.

Wie installiert man Umami mit Docker Compose?

Gehen Sie von der docker-compose.yml des Projekts aus, die Umami und PostgreSQL startet, mit zufälligen Geheimnissen in einer Datei .env und dem auf 127.0.0.1 veröffentlichten Port. Starten Sie docker compose up -d und stellen Sie dann einen Reverse Proxy mit HTTPS davor, auf einer Subdomain.

Welche Standard-Zugangsdaten hat Umami?

Bei der Installation legt Umami ein Konto admin mit dem Passwort umami an. Ändern Sie es bei der ersten Anmeldung, unter Settings und dann Profile, und aktivieren Sie die Zwei-Faktor-Authentifizierung im Reiter Security, sobald TWO_FACTOR_ENCRYPTION_KEY gesetzt ist.

Wie benennt man das Tracking-Skript von Umami um?

Auf einer selbst gehosteten Instanz gibt TRACKER_SCRIPT_NAME dem Skript einen anderen Namen als script.js, und COLLECT_API_ENDPOINT benennt den Erfassungsendpunkt /api/send um. Ändern Sie dann die Quelle des Tracking-Codes auf Ihren Seiten.

Wie sichert man Umami?

Exportieren Sie die PostgreSQL-Datenbank täglich mit pg_dump aus dem Datenbank-Container und bewahren Sie die Datei .env getrennt auf, denn sie enthält APP_SECRET und den Schlüssel der Zwei-Faktor-Authentifizierung. Stellen Sie mit pg_restore wieder her und testen Sie die Wiederherstellung regelmäßig.

Deckt ein Managed VPS Umami ab?

Ein Managed VPS deckt den Server ab: System, Sicherheit, Überwachung und Backups. Unsere Teams betreuen auch Ihre Instanz proaktiv und empfehlen Ihnen die sinnvollen Korrekturen, die Sie umsetzen. Ein Eingriff in der Anwendung wird nach Stunden oder pauschal abgerechnet.

Quellen und offizielle Dokumentation

Verwandte Leitfäden

PostgreSQL auf einem VPS: Arbeitsspeicher und Festplatte bemessenEine schnelle PostgreSQL-Datenbank ist eine Datenbank, deren häufig gelesene Daten in den Arbeitsspeicher passen. Die gesamte Dimensionierung geht davon aus: das Volumen der Datenbank, der Teil, der wirklich arbeitet, die Zahl der Verbindungen, dann die Festplatte und ihre Reserve. Dieser Leitfaden gibt Ihnen die Methode, die Starteinstellungen für 4, 8 und 16 GB Arbeitsspeicher und die Abfragen, die eine bestehende Datenbank vermessen.VPS-Backups: was Sie vor Vertragsabschluss prüfen solltenEin VPS-Angebot verspricht fast immer „Backups inklusive“. Hinter diesen zwei Wörtern kann eine Kopie jede Nacht stehen, außerhalb der Maschine aufbewahrt und von Experten wiederhergestellt, oder ein Snapshot auf derselben Festplatte wie der Server. Dieser Leitfaden nennt die Fragen, die den Unterschied machen, erklärt, was jede Antwort bedeutet, und zeigt, wie Sie prüfen, dass sich ein Backup wiederherstellen lässt.Unterschied zwischen Managed und Unmanaged VPS: wer macht wasDer Unterschied zwischen einem Managed und einem Unmanaged VPS hängt an einer einzigen Frage: wer sich um den Server kümmert, sobald er in Betrieb ist. Dabei hat „Managed“ keine offizielle Definition: von einem Hoster zum anderen reicht das Wort von der bloßen Installation des Systems bis zum vollständigen Betrieb des Servers. Dieser Leitfaden zeigt Zeile für Zeile, wer was übernimmt, mit der Zwischenstufe des Supports, und nennt die Fragen, die vor der Unterschrift Klarheit schaffen.
Kontaktieren Sie uns