Vorbereitung im LXC-Container#
Läuft Matomo bei dir in einem LXC-Container unter Proxmox, musst du dort zuerst Docker erlauben. Fahr den Container herunter und aktiviere in Proxmox unter Container → Optionen → Features die Optionen Nesting und keyctl. Danach startest du den Container wieder.
Bei einer VM oder einem normalen Server überspringst du diesen Schritt.
Docker installieren#
System aktualisieren#
apt update && apt upgrade -y && apt install ca-certificates curl -yDocker-Paketquelle einrichten#
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.listDocker und Docker Compose installieren#
apt update && apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -yDockge installieren#
Dockge einrichten#
Dockge ist eine Weboberfläche, mit der du Docker-Compose-Stacks bequem im Browser verwaltest. Dieser Befehl legt die Verzeichnisse an und startet Dockge:
mkdir -p /opt/stacks /opt/dockge && cd /opt/dockge && curl -fsSL https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml -o compose.yaml && docker compose up -dDockge öffnen#
Öffne Dockge im Browser und lege direkt dein Admin-Konto an:
http://IP-deines-Servers:5001Matomo einrichten#
Stack anlegen#
Klicke in Dockge auf + Compose und gib unter „Allgemein“ den Stack-Namen matomo ein.
compose.yaml einfügen#
services:
matomo:
image: matomo:latest
container_name: matomo
restart: unless-stopped
depends_on:
matomo-db:
condition: service_healthy
ports:
- 127.0.0.1:8081:80
environment:
- MATOMO_DATABASE_HOST=matomo-db
- MATOMO_DATABASE_ADAPTER=mysql
- MATOMO_DATABASE_TABLES_PREFIX=matomo_
- MATOMO_DATABASE_DBNAME=${DB_NAME}
- MATOMO_DATABASE_USERNAME=${DB_USER}
- MATOMO_DATABASE_PASSWORD=${DB_PASSWORD}
- TZ=Europe/Berlin
volumes:
- ./data/matomo:/var/www/html
networks:
- internal
- default
matomo-db:
image: mariadb:11.8
container_name: matomo-db
restart: unless-stopped
command: --max-allowed-packet=64M
environment:
- MARIADB_DATABASE=${DB_NAME}
- MARIADB_USER=${DB_USER}
- MARIADB_PASSWORD=${DB_PASSWORD}
- MARIADB_RANDOM_ROOT_PASSWORD=1
volumes:
- ./data/mariadb:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
networks:
- internal
networks:
internal:Umgebungsvariablen in der .env festlegen#
Trag unten rechts im Feld für die .env diese Werte ein:
DB_NAME=matomo
DB_USER=matomo
DB_PASSWORD=dein-datenbank-passwortEin sicheres Passwort erzeugst du mit openssl rand -base64 32.
Stack starten#
Klicke auf Speichern und dann auf Deploy.
Matomo erreichbar machen#
Matomo lauscht nur auf dem Server selbst. Leite deine Domain, zum Beispiel analytics.deine-domain.de, über einen Reverse Proxy mit HTTPS auf http://127.0.0.1:8081 weiter, etwa mit CloudPanel, dem Nginx Proxy Manager oder Traefik.
Das ist wichtig, weil der Browser deiner Besucher das Tracking-Script direkt bei Matomo abruft. Ohne öffentliche HTTPS-Adresse kommen keine Daten an.
Matomo im Browser einrichten#
Ruf deine Domain auf und folge dem Einrichtungsassistenten. Die Datenbankdaten sind dank der .env schon vorausgefüllt, du klickst dich nur durch, legst dein Admin-Konto an und trägst deine erste Website ein.
Datenschutzfreundlich einstellen#
Damit du ohne Cookie-Banner auskommst, stellst du Matomo so ein, dass es keine Cookies setzt und IP-Adressen kürzt:
- Unter Verwaltung → Datenschutz → Daten anonymisieren setzt du die IP-Anonymisierung auf mindestens zwei Bytes.
- Unter Verwaltung → Websites → Tracking-Code aktivierst du die Option Alle Tracking-Cookies deaktivieren, bevor du den Code kopierst.
Den Tracking-Code fügst du dann in deine Website ein. Ich bin kein Anwalt: Ob du damit ganz ohne Einwilligung auskommst, lässt du im Zweifel prüfen. In die Datenschutzerklärung gehört Matomo auf jeden Fall.
Matomo aktualisieren#
cd /opt/stacks/matomo && docker compose pull && docker compose up -dNach einem Update fragt Matomo beim nächsten Aufruf manchmal nach einem Datenbank-Update. Das bestätigst du einfach im Browser.

