Ich nutze wenn es um Analyse meines Blogs geht immer schon auf Selfhosting. Damals Piwik, dann Goaccess nun wieder Matomo. Da es von mir noch keine Anleitung diesbezüglich hier gibt, schreibe ich ihnen das auf.
Im setup nutze ich die Domain analytics.domain.tld
. diese dann später auf eure anpassen.
Um Matomo unter der Subdomain analytics.domain.tld
zu betreiben und über einen Nginx-Webserver zu bedienen, benötigen Sie eine entsprechende Nginx-Konfigurationsdatei. Diese Konfigurationsdatei leitet Anfragen an die Subdomain an den Docker-Container weiter, in dem Matomo läuft. Hier ist eine grundlegende Konfiguration, die Sie verwenden können:
Matomo, früher bekannt als Piwik, ist eine beliebte Open-Source-Webanalyseplattform. Sie bietet eine datenschutzfreundliche Alternative zu Google Analytics und kann auf dem eigenen Server gehostet werden. In dieser Anleitung erläutere ich, wie Sie Matomo mithilfe von Docker Compose installieren und einrichten können, um Besucherzahlen über das nginx-Protokoll zu importieren.
Voraussetzungen
- Ein Server mit Docker und Docker Compose installiert.
- Grundkenntnisse in Docker, Docker Compose und Linux-Befehlszeilenoperationen.
- Ein funktionierender Nginx-Webserver.
Schritt 1: Vorbereitung der Docker Compose Datei
- Erstellen eines Docker-Compose-YAML-Files: Öffnen Sie ein Terminal und erstellen Sie eine Datei namens
docker-compose.yml
in einem geeigneten Verzeichnis.
mkdir matomo
cd matomo
nano docker-compose.yml
- Konfiguration des YAML-Files: Fügen Sie den folgenden Inhalt in Ihre
docker-compose.yml
Datei ein. Diese Konfiguration enthält drei Services: Matomo, eine MariaDB-Datenbank und phpMyAdmin.
version: "3.3"
services:
matomo:
image: matomo
restart: always
volumes:
- ./matomo:/var/www/html
environment:
MATOMO_DATABASE_HOST: db
MATOMO_DATABASE_ADAPTER: "MYSQLI"
MATOMO_DATABASE_TABLES_PREFIX: matomo_
MATOMO_DATABASE_USERNAME: ${MYSQL_USER}
MATOMO_DATABASE_PASSWORD: ${MYSQL_PASSWORD}
db:
image: mariadb
command: --max-allowed-packet=64MB
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- ./db:/var/lib/mysql
Nun muss eine .env Datei erstellt werden um die Variablen für die Datenbank festlegen zu können.
sudo nano .env
Dort wird dann folgendes hinterlegt. Bitte denken Siie daran die Passwörter anzupassen.
MYSQL_USER=meinBenutzer
MYSQL_PASSWORD=$(openssl rand -base64 12)
MYSQL_DATABASE=meineDatenbank
MYSQL_ROOT_PASSWORD=$(openssl rand -base64 12) # Optional, falls Root-Zugriff benötigt wird
- Starten von Docker Compose: Führen Sie Docker Compose aus, um die Services zu starten.
docker compose up -d
Schritt 1: Erstellen der Nginx-Konfigurationsdatei
- Öffnen Sie ein neues Konfigurationsfile: Erstellen Sie eine neue Konfigurationsdatei in Ihrem Nginx-Verzeichnis. Dies ist normalerweise
/etc/nginx/sites-available/
.
sudo nano /etc/nginx/sites-available/analytics.domain.tld
- Fügen Sie die folgende Konfiguration hinzu:
Diese Konfiguration leitet Anfragen an analytics.domain.tld
an den Docker-Container weiter, in dem Matomo läuft, der auf Port 8080 hört (wie in Ihrer docker-compose.yml
definiert).
server {
listen 80;
listen [::]80;
server_name analytics.domain.tld;
return 301 https://$server_name$request_uri; # Umleitung auf HTTPS
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name analytics.domain.tld;
#ssl_certificate /etc/letsencrypt/live/analytics.domain.tld/fullchain.pem; # Pfad zum SSL-Zertifikat
#ssl_certificate_key /etc/letsencrypt/live/analytics.domain.tld/privkey.pem; # Pfad zum privaten Schlüssel
ssl_protocols TLSv1.2 TLSv1.3; # Verwenden von sicheren TLS-Versionen
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
# Andere SSL-Einstellungen nach Bedarf
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Hinweis: zuerstt muss der Pfad zum SSL Zertifkat herausgenommen werden mit dem ‚#‘. Ansonsten gibt es Fehler bei Nginx und der Webserver kann nicht neu gestartet werden. Später werden diei beiden ‚#‘ wieder entfernt.
- Aktivieren der Konfiguration: Verlinken Sie die Konfiguration im
sites-enabled
Verzeichnis.
sudo ln -s /etc/nginx/sites-available/analytics.domain.tld /etc/nginx/sites-enabled/analytics.domain.tld
- Testen der Konfiguration: Überprüfen Sie die Nginx-Konfiguration auf Fehler.
sudo nginx -t
- Neustart von Nginx: Wenn keine Fehler gefunden wurden, starten Sie Nginx neu, um die Änderungen zu übernehmen.
sudo systemctl restart nginx
Schritt 2: Einrichten eines SSL-Zertifikats
Es wird dringend empfohlen, ein SSL-Zertifikat für Ihre Subdomain zu verwenden. Sie können Let’s Encrypt verwenden, um ein kostenloses SSL-Zertifikat zu erhalten.
- Installieren von Certbot:
sudo apt-get install certbot python3-certbot-nginx
- Erstellen des SSL-Zertifikats:
sudo certbot –nginx -d analytics.domain.tld
3. SSL Pfad wieder aktivieren
Nachdem nun das Zertfikat erstellt wurde, muss das wie oben erwähnt das ‚#‘ wieder entfernt werden in der Nginx-Konfiguration, danach den Webserver neu starten. Danach läuft Matomo auf der gewünschten Domain.
Die nachfolgenden Schritte sind optional. Es können Log-Server Datein verwendet werden, oder aber auch, beispeilswiese bei WordPress, entsprechende Plugins genutzt werden. Ebeno kann man in jeder Webseite einen Code eingebunden werden, was dann ein Tracking ermöglicht.
importieren von Log Dateien (optional)
Zum Erstellen eines Skripts, das Ihre spezifizierte Befehlszeile zum Importieren von Logs in Matomo verwendet, müssen wir sicherstellen, dass der Befehl korrekt ist und dann ein einfaches Bash-Skript erstellen, das diesen Befehl ausführt.
Ihr Befehl sieht richtig strukturiert aus. Stellen Sie sicher, dass alle Pfade korrekt sind und die angegebenen Optionen den Anforderungen Ihrer Matomo-Installation entsprechen. Die Bereitstellung der Anmeldedaten (--login
und --password
) in der Befehlszeile kann ein Sicherheitsrisiko darstellen, besonders wenn das Skript in einer Umgebung mit mehreren Benutzern ausgeführt wird. Stellen Sie sicher, dass die Zugriffsrechte auf das Skript entsprechend eingeschränkt sind.
Erstellen des Skripts
- Skript-Datei erstellen: Öffnen Sie einen Texteditor, um eine neue Datei zu erstellen.
nano /opt/matomo/import_matomo_logs.sh
- Skript-Inhalt hinzufügen:
#!/bin/bash
# Matomo-Log-Import-Skript
python3 /opt/matomo/import_logs.py --url=https://analytics.domain.tld --login=user --password='Password' --idsite=1 --recorders=4 --exclude-path=/wp-admin --exclude-path=/wp-login.php --exclude-path=/wp-cron.php --exclude-path=/feed/ /var/log/blog/access-blog.log.*
Dieser Inhalt erstellt ein Bash-Skript, das Ihren Befehl zum Importieren von Logs ausführt.
- Skript ausführbar machen: Ändern Sie die Berechtigungen der Skriptdatei, um sie ausführbar zu machen.
chmod +x /opt/matomo/import_matomo_logs.sh
Sicherheitshinweise
- Stellen Sie sicher, dass die Zugriffsrechte auf das Skript und die Anmeldeinformationen eingeschränkt sind. Nur berechtigte Benutzer sollten Zugriff auf dieses Skript haben.
- Überlegen Sie, ob es Alternativen zur Eingabe des Passworts direkt im Skript gibt, zum Beispiel durch Verwendung von Umgebungsvariablen oder einem sicheren Passwort-Manager.
Ausführen des Skripts
Sie können das Skript jetzt ausführen, indem Sie den folgenden Befehl verwenden:
/opt/matomo/import_matomo_logs.sh
Stellen Sie sicher, dass alle Pfade und Anmeldeinformationen im Skript korrekt sind und dass das Skript in einer sicheren Umgebung ausgeführt wird.
Damit ist das Setup abgeschlossen. Bei Fragen einfach diese Stellen in den Kommentaren.
[…] möchte kann sich auch noch eine Anleitung ansehen wie man Matomo Analytics installieren […]