Matomo-Tracking mit Einwilligung einbauen

This commit is contained in:
2026-08-27 09:20:46 +02:00
parent a2dcc4df65
commit 528af07890
28 changed files with 793 additions and 2 deletions
+49
View File
@@ -345,6 +345,52 @@ reichen, ist das die nächste Stufe.
Abgedeckt von `scripts/check-spam-guard.php` (ohne Datenbank lauffähig).
## Matomo und Analyse-Einwilligung
Die Anwendung enthält eine eigene Einwilligungsoberfläche und lädt Matomo
erst nach „Analyse erlauben“. Ohne vollständige Konfiguration wird weder die
Oberfläche ausgegeben noch eine Verbindung zu Matomo aufgebaut. Für die
Produktion in `env.local.php` ergänzen:
```php
putenv('MATOMO_URL=https://analytics.kaffeeliste.de/');
putenv('MATOMO_SITE_ID=1');
putenv('MATOMO_CONSENT_COOKIE_DOMAIN=.kaffeeliste.de');
putenv('MATOMO_PRIVACY_CONFIRMED=1');
```
`MATOMO_SITE_ID` durch die numerische Website-ID ersetzen. Die gemeinsame
Cookie-Domain ist nur richtig, wenn Marketingseite, App und Matomo tatsächlich
unter `kaffeeliste.de` betrieben werden sollen. Sonst leer lassen; die
Einwilligung gilt dann nur auf dem jeweils besuchten Host.
`MATOMO_PRIVACY_CONFIRMED=1` erst setzen, nachdem die Matomo-Instanz so
konfiguriert und geprüft wurde:
1. Matomo wird selbst auf der im Datenschutzhinweis genannten EU-Infrastruktur
betrieben; Matomo Cloud oder ein anderer Empfänger ist nicht eingetragen.
2. Unter Datenschutz/Anonymisierung werden IP-Adressen vor Speicherung um
mindestens zwei Bytes gekürzt.
3. Roh- und Besuchsprotokolle werden spätestens nach 180 Tagen automatisch
gelöscht; verdichtete Berichte spätestens nach 25 Monaten.
4. Keine User-ID, benutzerbezogene Custom Dimensions, Heatmaps,
Sitzungsaufzeichnungen oder Werbeintegrationen aktivieren. Der eingebundene
Tracker deaktiviert zusätzlich Browser-Funktionserkennung,
Performance-Messung und Link-Klick-Tracking.
5. In Matomo ist genau eine Website mit den erlaubten Marketing- und
App-Domains angelegt. Testaufrufe mit Query-Parametern dürfen in Matomo nur
den Pfad ohne Query oder Fragment zeigen.
6. Im privaten Browserfenster prüfen: Vor der Entscheidung und nach „Nur
notwendige“ gibt es keine Anfrage an `matomo.js`/`matomo.php` und keine
`_pk_*`-Cookies. Nach Zustimmung gibt es beides; ein anschließender Widerruf
über „Cookie-Einstellungen“ stoppt weitere Aufrufe und löscht die Cookies.
Die Entscheidung wird 180 Tage im Cookie
`kaffeeliste_analytics_consent` gespeichert. Eine Versionsänderung in
`APP_ANALYTICS_CONSENT_VERSION` fragt erneut. Änderungen an Zweck, Datenumfang
oder Empfängern erfordern außerdem eine neue Datenschutzerklärung und eine
erneute rechtliche Prüfung.
## Betreiber-Benachrichtigung bei neuer Registrierung
`register.php` schickt nach einer erfolgreichen Selbstregistrierung einen
@@ -465,6 +511,9 @@ Rechten der Secret-Dateien oder einer nicht angewendeten Legal-Migration.
Test von Neubuchung, Tarifwechsel und Kündigung zum Periodenende
- [ ] Webserver-Access-Logs werden spätestens nach sieben Tagen gelöscht oder
anonymisiert; TLS/HSTS ist auf allen öffentlichen Domains aktiv
- [ ] Falls Matomo aktiv ist: Datenschutz-Checkliste oben vollständig geprüft,
Opt-in/Ablehnung/Widerruf im Browser getestet und
`MATOMO_PRIVACY_CONFIRMED=1` gesetzt
- [ ] Täglicher Task `php scripts/purge-ended-contracts.php` ist eingerichtet;
ein Vorlauf mit `--dry-run` wurde kontrolliert
- [ ] Stündlicher Task `php scripts/purge-expired-operational-data.php` ist