Google Analytics Alternative selber hosten
Maurice Renck
Spätestens seit der Einsatz von Google Analytics in Europa schwieriger geworden ist, sind alternative Dienste populärer geworden. Zudem braucht nicht jede Webseitenbetreiber:in so detaillierte Informationen, wie Google sie liefern kann. In den vergangenen Jahren haben sich deshalb zahlreiche Alternativen positioniert. Eine davon ist Umami.
Umami liefert eine schlanke, strukturiert aufbereitete Übersicht über die Zugriffe auf eine Webseite. Neben den klassischen Metriken wie Besucher und Page-Views lassen sich sehr einfach Events definieren und messen. Etwa der Klick auf einen Call-To-Action-Button.
Neben der Übersichtlichkeit ist die Datenschutzkonformität ein großer Vorteil. Alle Daten werden GDPR-konform anonymisiert erfasst und es werden keine Cookies gesetzt. Umami ist zudem OpenSource und kann deshalb selbst gehostet werden.
Weil Umami aber mit NodeJs umgesetzt ist, fallen die meisten deutschen Hoster leider weg und es bedarf einer anderen Lösung. Bisher war Heroku hier ein gängiger Kandidat, mit dem Wegfall der kostenlosen Dynos dürfte diese Option für viele Anwender:innen nicht mehr tragfähig sein, gerade, wenn ihr nur mal kurz testen möchtet.
Koyeb bietet sich hier als eine gute Alternative. Gerade, weil es Server-Standorte in Europa gibt. Im Folgenden beschreiben wir die Einrichtung von Umami bei Koyeb.
Die Installation
Unser Setup wird sich nicht allein auf Koyeb stützen. Wir wollen die Datenbank, die Umami benötigt, weiterhin bei uns liegen haben. Dazu werden wir bei unserem Hoster eine neue MySQL-Datenbank anlegen und diese verwenden. Der eigentliche Datenspeicher liegt somit garantiert auf einem Server in Deutschland.
Umami lokal installieren
Um sicherzugehen, dass alles wie gewünscht funktioniert, erstellen wir erst einmal ein lokales Setup. Dazu klonen wir Umami, um alle Dateien lokal im Zugriff zu haben. Sobald alle Dateien da sind, führen wir die Installation durch, in diesem Fall kommt yarn zum Einsatz, auch npm wäre möglich:
git clone https://github.com/umami-software/umami.git
yarn install
Jetzt müssen wir unsere Datenbank konfigurieren. Wie oben beschrieben, haben wir sie bereits bei unserem Hoster angelegt und müssen im folgenden Schritt noch die Zugangsdaten hinterlegen. Dazu legen wir eine .env Datei im eben geklonten Umami-Verzeichnis an und fügen die notwendigen Daten ein:
DATABASE_URL=mysql://user:password@host/database-name
Nach dem Speichern sollten wir Umami bauen können, also lauffähig machen. Das machen wir ebenfalls mit yarn:
yarn build
Da Umami nicht nur eine leere Datenbank, sondern auch die entsprechenden Tabellen und Strukturen in dieser Datenbank benötigt, führen wir hier ein weiteres Script aus, welches uns diese Strukturen anlegt (oder im Falle einer bereits gefüllten Datenbank, aktualisiert):
yarn update-db
Jetzt können wir Umami lokal laufen lassen und testen, ob alles wie gewünscht funktioniert. Dazu starten wir Umami und rufen es unter http://localhost:3000 im Browser auf:
yarn start
Die Initialen Logindaten lauten: admin sowie umami als Passwort.
Koyeb Setup
Läuft lokal alles, geht es daran, Umami für die Außenwelt verfügbar zu machen, damit wir es in unsere Webseiten einbinden können. Dazu müssen wir zunächst das Command Line Interface (CLI) von Koyeb installieren. Hier empfiehlt sich bei Nutzung eines Mac der Paketmanager Homebrew: brew install koyeb/tap/koyeb
Damit wir uns über CLI anmelden können, benötigen wir natürlich ein Konto und ebenfalls ein API-Token. Das Anlegen eines Kontos verläuft wie üblich, schließlich lässt sich hier ein Token erstellen. Ist der Token angelegt und in die Zwischenablage kopiert, können wir uns einloggen und den Anweisungen folgen: koyeb login
Deployment
Sobald wir Zugriff auf Koyeb haben, beginnen wir mit der eigentlichen Arbeit. Zunächst hinterlegen wir nötigen Daten, wie die Datenbankverbindung. Dazu legen wir Secrets an:
koyeb secret create umami-database-url
Das Secret füllen wir mit denselben Daten, die wir lokal in unsere .env Datei geschrieben haben, nur ohne den vorangestellten Variablennamen:
mysql://user:password@host:port/db-name?sslmode=require
Zudem empfiehlt es sich, einen Salt zu erstellen, das funktioniert ähnlich. Wir lassen diesen Salt allerdings automatisch erstellen und reichen das Ergebnis direkt zu Koyeb durch:
openssl rand -hex 32 | koyeb secret create umami-hash-salt --value-from-stdin
Jetzt kommen wir zum spannenden Teil: Wir erstellen die eigentliche Applikation. Dabei müssen wir die beiden eben erstellten Secrets an Umami durchreichen, denn bisher weiß nur Koyeb davon:
koyeb app init umami --docker ghcr.io/umami-software/umami:mysql-latest --ports 3000:http --routes /:3000 --env DATABASE_URL=@umami-database-url --env HASH_SALT=@umami-hash-salt
Schauen wir nun im Browser ins Koyeb-Dashboard, müsste sich dort etwas getan haben. Eine neue Applikation ist zu sehen und entweder den Status starting oder healthy haben. Letzterer Status verkündet den Erfolg – wir können Umami jetzt nutzen. Koyeb hat automatisch eine Subdomain für uns angelegt, unter der wir uns nun bei Umami anmelden können.
Jetzt können wir Umami in unsere Webseiten einbinden und sehen daraufhin die entsprechenden Metriken.
Abrunden
Wer nicht die Koyeb Domain, sondern eine eigene Domain nutzen möchte, kann dies auch tun. Dazu wechseln wir im Koyeb-Dashboard auf Domains und tragen dort eine neue Subdomain ein. Im Dropdown wählen wir aus, dass sie auf unsere Umami-App zeigen soll.
Damit die Subdomain auch auf Koyeb zeigt, müssen wir einen CNAME-Eintrag erstellen. Wie das funktioniert, hängt stark davon ab, wo die Domain registriert ist. Im Koyeb-Dashboard werden uns alle Daten angezeigt, die wir eintragen müssen.
Sobald die Daten hinterlegt sind, klicken wir im Koyeb-Dashboard auf Refresh und bestätigen, dass alles korrekt ist. Wie lange das Setzen des CNAMEs dauert und wie schnell Umami unter der Domain erreichbar ist, kann variieren. Von wenigen Minuten bis zu mehreren Stunden. Das solltet ihr auf jeden Fall einplanen.
Wir haben nun also eine laufende Umami-Installation mit einer Datenbank, die bei unserem Hoster liegt. Bis auf das Warten auf die Subdomain, ist die Installation und das Setup schnell erledigt. Ein Blick lohnt sich also auf jeden Fall, gerade in Hinblick auf den Datenschutz.
Viel Erfolg!