Umami ist ein relativ neues Website Analytics Tool, das das Thema Datenschutz im Blick behält und beispielsweise komplett auf Cookies verzichtet. Bei Umami handelt es sich um eine selbst gehostete Lösung und in diesem Tutorial möchte ich beschreiben, wie man Umami installiert und absichert.
Das Tutorial wurde auf einem Hetzner Cloud Server installiert, als Basis diente das Ubuntu 20.04 Image.
Server absichern und aktualisieren
sudo einrichten und SSH absichern
Der erste Schritt besteht in der Konfiguration von sudo
sowie der Absicherung von SSH. Dafür habe ich ein eigenes Tutorial geschrieben.
Server aktualisieren
Im nächsten Schritt wird der Server aktualisiert. Dazu müssen folgende beiden Befehle ausgeführt werden:
sudo apt-get update
sudo apt-get full-upgrade
Umami installieren
Benötigte Pakete installieren
Im nächsten Schritt werden die für Umami benötigten Pakete installiert:
sudo apt-get install npm git mysql-server
Secure MySQL
Anschließend wird MySQL abgesichert:
sudo mysql_secure_installation
Umami selbst installieren
cd ~
git clone https://github.com/mikecao/umami.git
cd umami
npm install
Datenbank einrichten
Im nächsten Schritt wird die Datenbank eingerichtet. Dazu folgenden Befehl ausführen:
sudo mysql
Die nachfolgenden Befehle erstellen eine Datenbank und einen User namens umami
. ACHTUNG, das Password my_password
muss natürlich geändert werden:
CREATE DATABASE umami;
CREATE USER 'umami'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_password';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, DROP, ALTER, REFERENCES, CREATE TEMPORARY TABLES, LOCK TABLES ON umami.* TO 'umami'@'localhost';
Im nächsten Schritt muss das SQL-File importiert werden:
mysql -u umami -p umami < sql/schema.mysql.sql
Umami konfigurieren
Nun muss ein 64 Zeichen langer Hash-Wert erzeugt werden. Das kann beispielsweise mit folgendem Tool gemacht werden: https://onlinerandomtools.com/generate-random-string
Nun muss eine .env
-Datei im Umami-Verzeichnis angelegt werden. In die Datei sollte folgender Inhalt eingefügt werden:
DATABASE_URL=mysql://umami:your_password@localhost:3306/umami
HASH_SALT=your_hash
your_hash
sowie your_password
muss natürlich entsprechend ersetzt werden.
Umami starten
Im nächsten Schritt muss der Umami Build-Prozess gestartet werden:
npm run build
Und dann ausgeführt werden:
npm run start
Wenn alles geklappt hat, sollte nun unter http:// your-server.your-domain.com:3000 Umami aufgerufen werden können. Die Zugangsdaten sind initial admin
mit dem Passwort umami
(bitte sofort ändern!).
Nun sollte Umami per STRG+C gestoppt werden.
Umami im Hintergrund ausführen
PM2 installieren
Um Umami im Hintergrund auszuführen, muss PM2 installiert werden. Dazu folgenden Befehl ausführen:
sudo npm install pm2 -g
Nun kann Umami im Hintergrund gestartet werden:
pm2 --name umami start npm -- start
Um Umami wieder zu stoppen, folgenden Befehl ausführen:
pm2 delete 0
Damit Umami nach einem Server-Reboot automatisch wieder startet, muss noch folgender Befehl ausgeführt werden:
pm2 startup
Nach Ausführung des Befehls wird ein neuer Befehl angezeigt, der als sudo
-User ausgeführt werden muss. Führe diesen Befehl aus, um den Autostart nach Reboot zu aktivieren.
HTTPS einrichten
Caddy installieren
Um zu vermeiden, dass Umami unverschlüsselt über Port 3000 läuft, sollte Caddy installiert werden. Caddy fungiert als Reverse Proxy und bietet HTTPS-Verschlüsselung per Let’s Encrypt-Zertifikat. Um Caddy zu installieren, folgenden Befehl ausführen:
echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
sudo apt update
sudo apt install caddy libnss3-tools
Anschließend das Caddyfile anpassen:
sudo nano /etc/caddy/Caddyfile
Nun alle Zeilen auskommentieren oder löschen, so dass die Datei am Ende nur noch die folgenden Zeilen enthält:
your-server.your-domain.com
reverse_proxy 127.0.0.1:3000
your-server.your-domain.com
muss natürlich entsprechend angepasst werden.
Firewall konfigurieren
Im letzten Schritt wird die Firewall konfiguriert und aktiviert:
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
Installation abschließen
Finaler Schritt ist der Reboot des Servers. Anschließend sollte Umami über https://your-server.your-domain.com aufgerufen werden können.
Bonus: Umami aktualisieren
Um eine Umami-Installation zu aktualisieren, die nach oben beschriebenem Tutorial installiert wurde, müssen folgende Befehle ausgeführt werden. Wichtig dabei, die Befehle müssen aus dem Umami-Basisverzeichnis ausgeführt werden!
Die Befehle lauten:
pm2 delete 0
git pull
npm install
npm run build
pm2 --name umami start npm -- start