Lesedauer 4 Minuten
5
(1)

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

  1. 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
  1. 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
  1. 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

  1. Ö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
  1. 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.

  1. 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
  1. Testen der Konfiguration: Überprüfen Sie die Nginx-Konfiguration auf Fehler.
sudo nginx -t
  1. 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.

  1. Installieren von Certbot:
sudo apt-get install certbot python3-certbot-nginx
  1. 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

  1. Skript-Datei erstellen: Öffnen Sie einen Texteditor, um eine neue Datei zu erstellen.
   nano /opt/matomo/import_matomo_logs.sh
  1. 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.

  1. 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.

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 5 / 5. Anzahl Bewertungen: 1

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

lars

By lars

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert