Matomo (fka PIWIK)

Matomo kommt von InnoCraft und hiess bis Januar 2018 PIWIK. Es konkurriert mit Google Analytics, ist aber Open Source und kann self-hosted betrieben werden.

Unsere Blogbeiträge zu Matomo.

Matomo sollte wegen Content Security Policy Headern am besten auf einem eigenen Host (z.B. analytics.example.com) und nicht unter der URL der Webseite betrieben werden. Für Matomo müssen die CSP recht offen sein („data:“ erlaubt), was von Security-Scannern moniert wird, und im Falle eines Mischens/Betrieb unter der Webseite (mysite.ch/analytics) die Webseite in einem Security-Ranking runterstufen könnte.

Installation

SELinux:

semanage fcontext -a -t httpd_sys_rw_content_t "path/to/matomo/tmp(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t "path/to/matomo/matomo.js"
semanage fcontext -a -t httpd_sys_rw_content_t "path/to/matomo/piwik.js"
semanage fcontext -a -t httpd_sys_rw_content_t "path/to/matomo/config/config.ini.php"

# for GeoIP AutoInstaller/AutoUpdater:
setsebool -P httpd_unified on

Ein aktuelles PHP unter Apache httpd verwenden, als Datenbank ist MariaDB empfohlen.

PHP: memory_limit >= 192M setzen.

Darüber hinaus wird benötigt:

yum -y install gd
yum -y install php php-pdo php-mysqlnd php-mbstring php-gd php-dom

Download:

cd /tmp
rm -f latest.zip*
rm -rf matomo*
wget http://builds.matomo.org/latest.zip
unzip -o latest.zip

mkdir -p path/to/matomo
cd path/to/matomo
\cp -r /tmp/matomo/* .
chown -R apache:apache path/to/matomo
restorecon -Fvr path/to/matomo
rm -rf path/to/matomo/tmp/*

chmod +w path/to/matomo/matomo.js
chmod +w path/to/matomo/config/config.ini.php
chown apache:apache path/to/matomo/matomo.js

Wenn Matomo hinter einem Reverse Proxy läuft:

path/to/matomo/config/config.ini.php
[General]
; for Reverse Proxying https://matomo.org/faq/how-to-install/faq_98/
assume_secure_protocol = 1
proxy_client_headers[] = HTTP_X_FORWARDED_FOR
proxy_host_headers[] = HTTP_X_FORWARDED_HOST

Cronjobs für automatische Datenarchivierung und -optimierung einrichten. Sind diese nicht aktiv, macht sich das nach einiger Zeit im Betrieb in kaputten Widgets in der Weboberfläche aufgrund von Timeouts wegen zu grosser Datenmengen bemerkbar.

# Matomo Auto Archiving
5 * * * * /usr/bin/php path/to/matomo/console core:archive --url=https://analytics.example.com/ > /var/log/matomo-archive.log 1> /dev/null

Jetzt die Instanz per http://matomo/index.php aufrufen und im Setup-Wizard den ersten Benutzer anlegen.

Matomo Console Cheat Sheet

path/to/console list

path/to/console cache:clear

path/to/console core:archive
path/to/console core:archive --url=https://analytics.example.com > /var/log/piwik-archive.log  1> /dev/null
path/to/console core:convert-to-utf8mb4 --show
path/to/console core:run-scheduled-tasks
path/to/console core:update

path/to/console database:optimize-archive-tables 2016-0{1..9} 2016-1{0..2} 2017-0{1..9} 2017-1{0..2}

path/to/console diagnostics:run

Update

Aktualisierung einer bestehenden Matomo-Installation per Kommandozeile:

path/to/matomo/console core:update
path/to/matomo/console cache:clear

Nicht vergessen, unter Umständen ein PHP-FPM und/oder Redis neu zu starten.

GeoIP

Im Web-GUI unter System > Geolocation nachsehen, wie eine GeoIP-Datenbank (Maxmind empfohlen) aufzusetzen ist.

Troubleshooting

Probleme?
php path/to/matomo/console diagnostics:run
Unable to write in the cache directory (path/to/matomo/tmp/templates_c/8a).
php path/to/matomo/console cache:clear

Built on 2022-06-03