Einrichten und betreiben

Matomo installieren und einrichten: was nach der Installation zählt

Matomo ist in einer Viertelstunde installiert. Ob es danach zuverlässig, sicher und schnell misst, entscheidet die Stunde danach: Archivierung, HTTPS, E-Mail, Datenschutz-Einstellungen und die passenden Plugins. Hier steht, welche Wege der Installation es gibt und was gleich danach eingerichtet gehört.

Die Installation selbst führt ein Assistent durch: Systemprüfung, Datenbank, Super User, erste Website, Tracking-Code. Was der Assistent nicht erledigt, entscheidet über die nächsten Jahre: ob Berichte schnell laden, ob Matomo E-Mails verschickt, ob Spam die Zahlen verfälscht und ob die Instanz sicher ist. Was auf welchem Server läuft und was der Betrieb bedeutet, steht unter Matomo-Hosting.

Vor der Installation: erst das Konzept

Bevor der erste Tracking-Code ausgerollt wird, gehören ein paar Entscheidungen auf den Tisch, denn spätere Änderungen gelten meist nur für neue Daten:

  • Welche Websites? Jeder Auftritt wird in Matomo eine eigene Website mit eigener Zeitzone und Währung. Neue Websites bekommen sonst UTC und US-Dollar.
  • Entwicklung und Produktion trennen. Test- und Staging-Umgebungen messen in eine eigene Matomo-Website, damit Tests nicht in den echten Zahlen landen. Der Matomo Tag Manager kennt dafür Umgebungen; neben Live sind Dev und Staging voreingestellt.
  • Ziele, Ereignisse und E-Commerce: Was gemessen wird, legt das Trackingkonzept fest. Wie Ereignisse benannt werden, steht unter Event Tracking.
  • Datenschutz-Einstellungen: IP-Kürzung, Aufbewahrung der Rohdaten, Einwilligung. Mehr dazu unter Matomo und Datenschutz.

Wege zur Installation

Weg Gut für Zu beachten
ZIP-Paket und Installations-Assistent die meisten eigenen Server Upload per SSH oder SFTP, danach die Einrichtung unten
Docker Container-Umgebungen Docker Compose statt Einzelcontainer, Archivierung als eigener Container
Installer im Hosting-Panel Webhosting mit Plesk, Softaculous oder Installatron Cronjob selbst einrichten; in Plesk rät Matomo, ModSecurity für die Matomo-Domain abzuschalten
Matomo for WordPress kleine WordPress-Websites läuft in WordPress mit, mehr dazu unter WordPress und WooCommerce

Das ZIP-Paket laden Sie von matomo.org, nicht von Dritten, und laden es per SSH oder SFTP auf den Server. Der Assistent prüft das System, legt die Tabellen an und fragt nach Super User und erster Website. Matomo empfiehlt eine eigene Datenbank mit eigenem Datenbanknutzer. Im letzten Schritt bietet er an, eine Geodatenbank von DB-IP einzurichten, die sich monatlich aktualisiert; ohne sie rät Matomo das Land nur aus der Browsersprache. Die IP-Kürzung ist ab Werk eingeschaltet.

Das offizielle Docker-Image pflegt die Community unter dem Dach von matomo-org. Matomo empfiehlt Docker Compose; ein einzelner Container ist nur zum Testen gedacht. Das Image bringt keinen Cronjob mit, Matomos Beispiel ergänzt dafür einen eigenen Container für die Archivierung. Im November 2026 gibt es Images für Matomo 5.14, noch keine für Matomo 6.

Eine Installation über die Konsole kennt Matomo selbst nicht. Installationen aus Git empfiehlt Matomo nur für die Entwicklung, nicht für den Betrieb.

Gleich nach der Installation

Was nach dem Installations-Assistenten kommt: Archivierung per Cron, HTTPS und vertrauenswürdige Hostnamen, E-Mail über SMTP, Logo, passende Plugins, Sicherheit und die Systemprüfung.
  1. Archivierung per Cron. Ein Cronjob ruft stündlich core:archive auf, als Nutzer des Webservers; die genaue Zeile steht unten. Danach schalten Sie die Archivierung im Browser ab, unter Administration > System > Allgemeine Einstellungen, und erzwingen das in der Konfiguration, damit auch Segmente keine Archivierung im Browser auslösen. Warum das so viel ausmacht, steht unter Matomo-Hosting.
  2. HTTPS erzwingen. Wenn Matomo über HTTPS läuft, erzwingt force_ssl = 1 den sicheren Zugang. Die vertrauenswürdigen Hostnamen trägt der Assistent ein; hinter einem Load Balancer oder CDN gehören die Proxy-Header in die Konfiguration. In Matomo 6 müssen dort der öffentliche und der interne Hostname stehen.
  3. E-Mail über SMTP. Ab Werk verschickt Matomo E-Mails über die PHP-Funktion mail(), die oft im Spam landet oder gar nicht ankommt. Unter Allgemeine Einstellungen > E-Mail-Server tragen Sie einen SMTP-Server ein, ./console core:test-email prüft das Ergebnis. Ohne funktionierende E-Mail kommen weder Berichte noch Alarme an.
  4. Logo hochladen. Unter Allgemeine Einstellungen > Branding ersetzt ein eigenes Logo das Matomo-Logo in der Oberfläche und in E-Mail-Berichten.
  5. Websites einstellen. Zeitzone und Währung je Website, E-Commerce einschalten, wo es einen Shop gibt, Parameter aus den Adressen ausschließen, die Sitzungen oder persönliche Angaben tragen. Klick-IDs wie gclid und fbclid entfernt Matomo von selbst.
  6. Systemprüfung. Unter Administration > Diagnose > Systemprüfung oder mit ./console diagnostics:run zeigt Matomo, was noch fehlt: Cron, Schreibrechte, Datenbank, PHP-Einstellungen, geschützte Verzeichnisse.

Der Cronjob für die Archivierung

Auf einem Linux-Server reicht eine Datei unter /etc/cron.d/, etwa /etc/cron.d/matomo-archive. Sie startet die Archivierung jede Stunde zur fünften Minute, als Nutzer des Webservers (unter Debian und Ubuntu www-data), und schreibt die Ausgabe in eine Logdatei:

# Matomo: Berichte jede Stunde archivieren
5 * * * * www-data /usr/bin/php /var/www/matomo/console core:archive --matomo-domain=https://matomo.example.com > /var/log/matomo/archive.log 2>&1

Pfad zu PHP und zu Matomo, die Adresse und den Nutzer passen Sie an Ihren Server an; das Verzeichnis für das Log muss dem Nutzer gehören. In einer Crontab ohne Spalte für den Nutzer, etwa mit crontab -u www-data -e, fällt www-data aus der Zeile weg. In Plesk ist es eine geplante Aufgabe, im Docker-Setup ein eigener Container.

Danach schalten Sie die Archivierung im Browser ab. Das geht in der Oberfläche oder direkt in config/config.ini.php:

[General]
enable_browser_archiving_triggering = 0
browser_archiving_disabled_enforce = 1
time_before_today_archive_considered_outdated = 3600

Die zweite Zeile sorgt dafür, dass auch Segmente keine Archivierung im Browser auslösen. Die dritte rechnet die Berichte für heute höchstens einmal pro Stunde neu, was Matomo bei mittlerem und hohem Traffic empfiehlt. Ob der Cronjob läuft, zeigt die Systemprüfung: Sie warnt, wenn der letzte Lauf älter als einen Tag ist.

Plugins, die von Anfang an dazugehören

Alarme bei Ausfällen. Fällt das Tracking aus, merkt es ohne Alarm erst jemand, wenn Zahlen fehlen. Das kostenlose Plugin Custom Alerts von Matomo meldet per E-Mail, wenn eine Kennzahl eine Schwelle über- oder unterschreitet. Feinwerk Sentinel prüft die Daten jeder Website stündlich und meldet Störungen auch in Slack oder Microsoft Teams.

Tracking Spam Prevention einrichten. Für Matomo 5 ist das Plugin kostenlos im Marketplace, in Matomo 6 ist es fest eingebaut und ab Werk aktiv. Es lohnt sich, die Einstellungen einmal durchzugehen:

  • Netze von Cloud-Anbietern blocken, mit Matomos gepflegter Liste.
  • Headless-Browser blocken, die sich als solche zu erkennen geben.
  • Aktionen je Besuch begrenzen: Ab Werk zählt Matomo alle; laut Matomo haben die meisten Websites nicht mehr als 100 bis 300. Eine E-Mail-Adresse meldet gesperrte IP-Adressen.
  • SDKs und serverseitige Bibliotheken blocken, aber nur, wenn ausschließlich der Tracking-Code oder der Tag Manager misst.
  • Länder und IP-Listen: nur bestimmte Länder zulassen oder ausschließen, einzelne Netze erlauben oder sperren.

Das ist ein Grundschutz gegen offensichtliche Automaten, kein Spam-Schutz. Bots, die mit echtem Browser aus anderen Netzen kommen, erkennt erst ein Plugin wie Feinwerk Tracking Spam Score. Mehr dazu unter Matomo 6.

Kampagnen-Berichte: Ab Werk zeigt Matomo bei Kampagnen nur Name und Keyword. Das kostenlose Plugin Marketing Campaigns Reporting von Matomo ergänzt Quelle, Medium, Inhalt, Kampagnen-ID, Gruppe und Platzierung, jeweils mit Berichten und Segmenten, für mtm- und utm-Parameter. Es gehört vor die ersten Kampagnen, denn diese Felder speichert Matomo erst, wenn das Plugin aktiv ist. Wie Kampagnen-Links aufgebaut sind, steht unter Kampagnen-Tracking.

Für viel Traffic: Das kostenlose Plugin QueuedTracking puffert Tracking-Anfragen in Redis oder MySQL und schreibt sie gesammelt in die Datenbank.

Sicherheit ab Tag eins

  • Zwei-Faktor-Anmeldung für alle Nutzer, unter Allgemeine Einstellungen erzwingbar. Anfragen mit API-Token deckt sie nicht ab; wie Tokens sicher bleiben, steht unter API, MCP und OAuth.
  • Geschützte Verzeichnisse: Matomo legt für Apache .htaccess-Dateien an, die config, core, lang und tmp sperren; das braucht AllowOverride All. nginx braucht eigene Regeln, beides steht im nächsten Abschnitt.
  • Schreibrechte knapp halten: Dateien 644, Verzeichnisse 755, nie 777. Schreiben muss Matomo vor allem in tmp.
  • Anmeldung absichern: Nach 20 Fehlversuchen in 60 Minuten sperrt Matomo die IP-Adresse. Eine Liste erlaubter IP-Adressen lässt sich in der Konfiguration hinterlegen und gilt dann auch für die API.
  • Plugin-Upload aus lassen: Matomo warnt selbst, dass der Upload von Plugins über die Oberfläche das Ausführen fremden Codes erlaubt.

Mehr zur Härtung von Server und Matomo steht in der Leistung Sicherheit und Härtung.

Webserver-Regeln für Apache und nginx

Matomo liegt im Webverzeichnis, aber nicht alles darin darf von außen erreichbar sein. In config steht das Passwort der Datenbank, in tmp liegen Caches und Sitzungsdaten. Von außen aufrufbar müssen nur wenige Dateien sein: die Oberfläche über index.php, das Tracking über matomo.php und matomo.js (dazu die alten Namen piwik.php und piwik.js) und die Container des Tag Managers unter js/.

Apache: Matomo legt die Regeln selbst an, als .htaccess-Dateien. Sie sperren config, core, lang und tmp ganz und lassen in libs, vendor, plugins, misc und node_modules nur Bilder, Skripte, Stile und Schriften durch. Damit Apache sie liest, braucht das Verzeichnis AllowOverride All. Fehlen sie, legt ./console core:create-security-files sie neu an. Ein Grundgerüst für den virtuellen Host, mit einer zweiten Sperre für den Fall, dass eine .htaccess fehlt:

<VirtualHost *:80>
    ServerName matomo.example.com
    Redirect permanent / https://matomo.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName matomo.example.com
    DocumentRoot /var/www/matomo

    SSLEngine on
    SSLCertificateFile    /etc/letsencrypt/live/matomo.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/matomo.example.com/privkey.pem

    <Directory /var/www/matomo>
        # Matomo bringt eigene .htaccess-Dateien mit
        AllowOverride All
        Options -Indexes
        Require all granted
    </Directory>

    # Zweite Sperre, falls eine .htaccess fehlt
    <DirectoryMatch "^/var/www/matomo/(config|core|lang|tmp|\.git)(/|$)">
        Require all denied
    </DirectoryMatch>
</VirtualHost>

nginx liest keine .htaccess-Dateien, die Regeln gehören in die Konfiguration. Matomo pflegt dafür eine Vorlage. Ihr Kern: Nur die PHP-Dateien, die Matomo von außen braucht, werden ausgeführt, alle anderen antworten mit 403, und die geschützten Verzeichnisse sind gesperrt. In gekürzter Form:

server {
    listen 80;
    server_name matomo.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    http2 on;   # ab nginx 1.25.1, ältere Versionen: listen 443 ssl http2;
    server_name matomo.example.com;
    root /var/www/matomo;
    index index.php;

    ssl_certificate     /etc/letsencrypt/live/matomo.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/matomo.example.com/privkey.pem;

    add_header Referrer-Policy origin always;
    add_header X-Content-Type-Options "nosniff" always;

    # Nur diese PHP-Dateien ausführen
    location ~ ^/(index|matomo|piwik|js/index|plugins/HeatmapSessionRecording/configs)\.php$ {
        include snippets/fastcgi-php.conf;
        try_files $fastcgi_script_name =404;
        fastcgi_param HTTP_PROXY "";
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;   # Pfad zur eigenen PHP-Version
    }

    # Alle anderen PHP-Dateien sperren
    location ~* ^.+\.php$ { deny all; return 403; }

    location / { try_files $uri $uri/ =404; }

    # Geschützte Verzeichnisse und versteckte Dateien
    location ~ ^/(config|tmp|core|lang) { deny all; return 403; }
    location ~ /\.(ht|git) { deny all; return 403; }

    # Vorschau-Container des Tag Managers nicht zwischenspeichern
    location ~ js/container_.*_preview\.js$ {
        expires off;
        add_header Cache-Control 'private, no-cache, no-store';
    }

    # Statische Dateien erlauben, auch in plugins und vendor
    location ~ \.(gif|ico|jpg|png|svg|js|css|htm|html|mp3|mp4|wav|ogg|avi|ttf|eot|woff|woff2)$ {
        allow all;
        expires 1h;
        add_header Cache-Control "public";
    }

    # Der Rest dieser Verzeichnisse bleibt gesperrt
    location ~ ^/(libs|vendor|plugins|misc|node_modules) { deny all; return 403; }

    # Textdateien im Hauptverzeichnis als Text ausliefern
    location ~ /(.*\.md|LEGALNOTICE|LICENSE) { default_type text/plain; }
}

Die Reihenfolge zählt: nginx prüft die Regeln mit regulären Ausdrücken der Reihe nach, deshalb steht die Freigabe für statische Dateien vor der Sperre von plugins und vendor. TLS-Einstellungen, Zertifikate und den Pfad zu PHP passen Sie an Ihren Server an. Ob alles greift, zeigt danach die Systemprüfung: Sie ruft geschützte Dateien wie config/config.ini.php von außen auf und meldet, wenn sie erreichbar sind.

Wer die Oberfläche zusätzlich auf bestimmte IP-Adressen beschränkt, lässt das Tracking frei: matomo.php, matomo.js, die alten piwik-Dateien, die Container unter js/ und die Seite für den Widerspruch müssen für alle Besucher erreichbar bleiben.

Updates über die Konsole

Das Update per Klick ist bequem, braucht aber Schreibrechte auf das ganze Matomo-Verzeichnis. Für größere Instanzen empfiehlt Matomo die Konsole:

  1. Sicherung von Datenbank und Code, freier Platz auf dem Datenbankserver.
  2. Oberfläche in den Wartungsmodus, Tracking pausieren: ./console config:set General.maintenance_mode=1 und Tracker.record_statistics=0.
  3. ./console core:update --yes auf einem einzigen Server.
  4. Caches leeren, Tracking und Oberfläche wieder einschalten, Systemprüfung ansehen. ./console diagnostics:unexpected-files findet Dateien, die nicht mehr zum Release gehören.

Plugins aktualisieren sich getrennt, über den Marketplace oder die Konsole. Was beim Wechsel auf Matomo 6 dazukommt, steht unter Matomo 6.

So startet Matomo gut

  • Konzept zuerst Websites, Umgebungen, Ziele und Datenschutz vor dem ersten Code.
  • Cron vom ersten Tag Berichte liegen fertig bereit, auch bei mehr Traffic.
  • E-Mail und Alarme SMTP eingerichtet, Ausfälle fallen sofort auf.
  • Gehärtet und aktuell Zwei Faktoren, geschützte Verzeichnisse, Updates über die Konsole.

Typische Stolpersteine

  • Archivierung im Browser Berichte werden mit wachsendem Traffic langsam.
  • mail() statt SMTP Berichte und Alarme kommen nicht an.
  • Tests in den echten Zahlen Staging misst in die Website der Produktion.
  • Offene Verzeichnisse Unter nginx ohne Matomos Regeln ist config von außen lesbar.

Quellen

Stand: 13. November 2026, Matomo 5.14 und 6.0.0-rc1

FAQ

Häufige Fragen

Warum zeigt Matomo nach der Installation keine Daten?

Oft ist die Archivierung im Browser abgeschaltet, aber kein Cronjob eingerichtet, dann entstehen keine Berichte. Weitere Ursachen sind Werbeblocker, eine Einwilligung, die nie erteilt wird, oder eine Firewall wie ModSecurity, die Anfragen an matomo.php blockiert. Die Systemprüfung und die Echtzeit-Besucher zeigen schnell, wo es hängt.

Kann ich den Installer später noch einmal aufrufen?

Seit Matomo 5.2 sperrt sich der Installer 72 Stunden nach dem ersten Aufruf. Wer ihn danach braucht, entfernt den Eintrag installation_first_accessed aus der config.ini.php. Nach der Installation lässt er sich mit enable_installer = 0 ganz abschalten.

Ist Docker für Matomo im Betrieb geeignet?

Ja, mit Docker Compose und einem eigenen Container für die Archivierung, denn das offizielle Image bringt keinen Cronjob mit. Matomo weist darauf hin, dass die Images nicht in seine eigenen Sicherheitsprüfungen einbezogen sind; für strenge Umgebungen bauen Sie das Image selbst.

Klick-Update oder Konsole?

Für kleine Instanzen reicht das Update per Klick, wenn Matomo in sein eigenes Verzeichnis schreiben darf. Für größere Instanzen empfiehlt Matomo die Konsole mit core:update, mit Wartungsmodus und pausiertem Tracking während des Updates.

Fragen zu Ihrem Setup?

Im Erstgespräch schauen wir gemeinsam auf Ihre Situation.

Erstgespräch buchen

Newsletter

Matomo-Wissen, einmal im Monat.

Praxistipps zu Tracking, Datenschutz-Einstellungen und Performance, dazu Hinweise auf wichtige Matomo-Updates. Kein Spam, Abmeldung jederzeit.