feat(analytics): replace custom pipeline with Matomo

Removes the hand-rolled analytics endpoint and SQLite event table in favour
of Matomo — a self-hosted, full-featured analytics platform.

k8s:
- Deploy MariaDB 11 + Bitnami Matomo 5 in the solitaire namespace
- Route analytics.aleshym.co ingress to the Matomo service
- Remove Datasette sidecar and its BasicAuth middleware/secret
- Remove the analytics port from the solitaire-server Service

Rust:
- Replace AnalyticsClient (custom HTTP endpoint) with MatomoClient (Matomo
  HTTP Tracking API bulk endpoint); maps game events to Matomo categories
- Add matomo_url + matomo_site_id fields to Settings (serde default → None/1)
- Privacy toggle in Settings now activates when matomo_url is set (not tied
  to SyncBackend::SolitaireServer)
- Remove POST /api/analytics route from solitaire_server

Web:
- Add Matomo JS tracking snippet to game.html (/play page)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
funman300
2026-05-13 21:10:15 -07:00
parent f6506c57e5
commit 539779d78b
20 changed files with 390 additions and 352 deletions
-41
View File
@@ -19,47 +19,6 @@ spec:
imagePullSecrets:
- name: gitea-registry
containers:
- name: analytics
image: datasetteproject/datasette:0.65.1
args:
- serve
- /data/sol.db
- --host
- "0.0.0.0"
- --port
- "8001"
- --readonly
- --setting
- sql_time_limit_ms
- "5000"
- --setting
- max_returned_rows
- "1000"
ports:
- containerPort: 8001
volumeMounts:
- name: db-data
mountPath: /data
readOnly: true
livenessProbe:
httpGet:
path: /-/alive
port: 8001
initialDelaySeconds: 10
periodSeconds: 30
readinessProbe:
httpGet:
path: /-/alive
port: 8001
initialDelaySeconds: 5
periodSeconds: 10
resources:
requests:
cpu: 25m
memory: 48Mi
limits:
cpu: 200m
memory: 128Mi
- name: server
image: solitaire-server
imagePullPolicy: Always