Photo by Carlos Muza on Unsplash

Seit einiger Zeit setze ich zum Tracking Matomo ein. Damals, als ich alles eingerichtet habe, lief mein Infrastruktur noch unter Rancher + Nginx + LetsEncrypt Companion.

Damals musste ich die Konfiguration von Matomo schon mal anpassen.

[General]
...
proxy_client_headers[] = HTTP_X_FORWARDED_FOR
...

Mit dieser Anpassungen wurden die richtigen IPs der Besucher bei Matomo angezeigt. Nun habe ich aber komplett alles umgestellt: Rancher wurde durch Portainer ersetzt und Nginx + LetsEncrypt Companion durch Traefik.

Nun wurden aber in Matomo die falschen IPs angezeigt. So macht natürlich Tracking keinen Sinn. Also den Fehler suchen und den Fehler im Docker Swarm schlussendlich finden. Beziehungsweise, wie ich den Traefik im Docker Swarm deployed habe.

Mein vorhergehender Docker Stack sah wie folgt aus:

version: '3'
services:
  traefik:
    image: traefik:v1.7-alpine
    networks:
      - proxy
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/kepler/docker/traefik.toml:/traefik.toml
      - /home/kepler/docker/acme.json:/acme.json
    deploy:
      labels:
        traefik.enable: "true"
        traefik.port: "8080"
        traefik.docker.network: "proxy"
        traefik.frontend.passHostHeader: "true"
      mode: global
      placement:
        constraints:
          - node.role == manager
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: any
networks:
  proxy:
    external:
      name: proxy

In der Version 3.2 von docker stack kam eine "Long Syntax" für die Ports hinzu und genau diese hilft uns:

...
    ports:
      - target: 80
        published: 80
        protocol: tcp
        mode: host
      - target: 443
        published: 443
        protocol: tcp
        mode: host
...

Wenn man die Ports nun so einstellt, wird die richtige IP Adresse des Nutzers angezeigt.

Bei Matomo habe ich aber trotzdem nochmal die Konfiguration angepasst:

[General]
assume_secure_protocol = 1
proxy_client_headers[] = HTTP_X_FORWARDED_FOR
proxy_client_headers[] = HTTP_X_REAL_IP
proxy_host_headers[] = HTTP_X_FORWARDED_HOST

So, nun heißt es also wieder "Happy Tracking". Schaut auch gerne auf der Datenschutz Seite vorbei. Dort erkläre, wie ich tracke und was ich tracke.

Tags