GeoMetrikks installieren: Du startest das Analyse-Dashboard mit Docker Compose und liest Zugriffe aus unterstützten Proxy-Logs ein. Wir verbinden Traefik beziehungsweise Pangolin, MaxMind und auf Wunsch weitere Logquellen.
Das Ergebnis: Ein Dashboard mit nachvollziehbaren Zugriffsdaten. Du erkennst außerdem, weshalb Cloudflare-Tunnel-Domains ohne gemeinsame Logquelle fehlen und warum GeoIP keine genaue Besucheradresse liefert.
Stand: 3. November 2026. Basis ist die offizielle GeoMetrikks-Dokumentation samt Konfiguration des Projekts. Verwende für Produktionssysteme gesicherte, getestete Konfigurationsänderungen; insbesondere TrueNAS-Apps überschreiben unter Umständen manuell angepasste Containerdateien beim Update.
Was ist GeoMetrikks?
GeoMetrikks ist ein selbst hostbares Analyse-Dashboard für HTTP-Zugriffe. Die Software liest unterstützte Access-Logformate von Traefik, Nginx und Caddy beziehungsweise einen passenden Grafana-Loki-Datenstrom, ordnet öffentlich sichtbare Client-IP-Adressen mit der MaxMind-Datenbank geografisch ein und zeigt die Ereignisse auf Karten und in Diagrammen. Die offizielle Docker-Compose-Konfiguration bringt die benötigte Datenbank mit.

Bildquelle: GeoMetrikks-Projekt (Original-Screenshot) – Weltkarte der registrierten Zugriffe. Abbildung kann je nach Version abweichen.
Anders als Google Analytics oder Matomo arbeitet dieses Setup aus Reverse-Proxy-Logs. Es sieht deshalb nur Requests, die wirklich am überwachten Proxy ankommen und dort auch protokolliert werden. Domainnamen, die über einen ganz anderen Cloudflare Tunnel oder Webserver laufen, tauchen nicht automatisch auf.
1. Voraussetzungen vor der Installation
- Docker Engine und Docker Compose auf einem Linux-Server oder einer geeigneten VM; die offiziellen Container unterstützen AMD64 und ARM64.
- Zugriff auf den Speicherort der Access-Logdatei des Reverse Proxys, den du überwachen willst.
- Ein kostenloses MaxMind GeoLite2-Konto für City-/ASN-Datenbankdownload und idealerweise einen CARTO-API-Key für die Hintergrundkarte.
- Einen sicheren Zugang zum GeoMetrikks-Dashboard und ausreichend Speicher für die Log-Aufbewahrung sowie Datenbank.
Wichtig: Die GeoIP-Daten sind nur Schätzungen. MaxMind kann Regionen oder Städte falsch zuordnen; es liefert nicht die tatsächliche Privatanschrift eines Besuchers. GeoMetrikks ist keine Methode, individuelle Wohnadressen anhand von IP-Adressen zu ermitteln.
2. Offiziellen Docker-Compose-Stack herunterladen
Nutze das offizielle Compose-Dokument und die passende .env.example. So vermeidest du, dass eine erfundene oder veraltete Datenbankkonfiguration die Installation beschädigt.
mkdir -p ~/geometrikks
cd ~/geometrikks
curl -LO https://raw.githubusercontent.com/GilbN/geometrikks/main/docker-compose.yml
curl -Lo .env https://raw.githubusercontent.com/GilbN/geometrikks/main/.env.example
chmod 600 .env
nano .env
Diese Dateien gehören zum Repository GilbN/geometrikks. Wenn die Anwendung bei dir auf TrueNAS läuft, kannst du GeoMetrikks in einer Linux-VM oder als bewusst konfigurierte Compose-App betreiben; verwende die zu deinem TrueNAS-Release passende App-Verwaltung und binde Logs niemals mit Schreibrechten ein, wenn Leserechte ausreichen.
3. Die wichtigsten .env-Werte korrekt setzen
Bearbeite in .env die vom Projekt angebotenen Felder. Das folgende Schema zeigt die entscheidenden Variablen, ohne echte Zugangsdaten preiszugeben:
APP_ADMIN_USER=admin
APP_ADMIN_PASSWORD=HIER_EIN_LANGES_ZUFALLSPASSWORT
APP_AUTH_DISABLED=false
APP_SESSION_SECURE=false
MAXMINDDB_USER_ID=DEINE_MAXMIND_USER_ID
MAXMINDDB_LICENSE_KEY=DEIN_MAXMIND_LICENSE_KEY
MAP_CARTO_API_KEY=DEIN_CARTO_KEY
DB_PASSWORD=EIN_ZWEITES_STARKES_PASSWORT
ACCESS_LOG_DIR=/pfad/zu/deinen/traefik-logs
LOGPARSER_LOG_PATHS=/var/log/access/access.log
LOGPARSER_LOG_FORMATS=traefik-json
LOGPARSER_SERVER_NAME=homeserver
Das ist ein Beispiel mit Platzhaltern; ersetze sie durch die echten Werte und übernimm die übrigen von der offiziellen .env.example vorgegebenen Zeilen. Der Pfad ACCESS_LOG_DIR ist ein absoluter Host-Pfad, den Docker read-only in den GeoMetrikks-Container mountet. LOGPARSER_LOG_PATHS ist dagegen der Container-Pfad unter /var/log/access – beides zu verwechseln ist eine häufige Fehlerursache.
Wenn du das Dashboard später über HTTPS und einen Reverse Proxy erreichst, setze APP_SESSION_SECURE=true und definiere APP_TRUSTED_PROXIES möglichst eng für den unmittelbar davorliegenden Proxy. APP_AUTH_DISABLED=true darfst du nur verwenden, wenn wirklich ein zuverlässiger authentifizierender Proxy sämtlichen Zugriff schützt.
4. Container starten, Status und Login prüfen
cd ~/geometrikks
sudo docker compose up -d
sudo docker compose ps
sudo docker compose logs --tail=100 app
Erfolgskontrolle: Der App-Container läuft und die GeoMetrikks-Anmeldeseite ist über die konfigurierte Adresse erreichbar. Melde dich mit dem APP_ADMIN_USER aus deiner .env an. Eine anfangs leere Karte ist kein Installationsfehler: Erst wenn Access-Logdaten erreichbar sind und echte HTTP-Anfragen eingehen, erscheinen Ereignisse. Ohne MaxMind-Zugang startet GeoMetrikks gegebenenfalls im Modus mit eingeschränkter Geolokalisierung.
Die Standardanleitung öffnet das Webinterface auf http://localhost:8000 (vom Server aus). Bei Remote-Zugriff verwende zunächst eine SSH-Portweiterleitung oder ein privates Netz, statt die Login-Seite direkt öffentlich auf Port 8000 freizugeben. Melde dich mit APP_ADMIN_USER und APP_ADMIN_PASSWORD an.
Falls noch keine MaxMind-Daten geladen sind, kann GeoMetrikks im geo-degraded-Modus starten. Überprüfe die Nutzer-ID, den License Key und den Download; nach dem Eintragen von Zugangsdaten ist laut Dokumentation ein Neustart des App-Containers notwendig.
5. Traefik so konfigurieren, dass GeoMetrikks Logs erhält
Für Traefik benötigt GeoMetrikks JSON-Access-Logs in einer Datei. Standardmäßig schreibt Traefik Logs oft nur auf stdout; GeoMetrikks kann solche Container-stdout-Logs nicht direkt als Dateiquelle verfolgen. Ergänze die folgende Konfiguration in der statischen Traefik-Konfiguration, ohne bereits vorhandene EntryPoints, Zertifikatsresolver, Router oder Middleware zu überschreiben:
accessLog:
filePath: "/var/log/traefik/access.log"
format: json
fields:
headers:
names:
User-Agent: keep
Referer: keep
Sorge dafür, dass der Schreibpfad /var/log/traefik/access.log aus Traefiks Container auf einen persistenten Host-Ordner gemountet wird. Verwende dessen echten Host-Pfad als ACCESS_LOG_DIR in der GeoMetrikks-.env; die Datei heißt aus GeoMetrikks-Sicht weiterhin /var/log/access/access.log. Verändere bestehende Pangolin-/Coolify-Traefik-Konfigurationsdateien nicht blind; die korrekte Stelle hängt davon ab, ob Traefik direkt als Compose-Stack oder über eine verwaltete App bereitgestellt wird.
Danach den zuständigen Traefik kontrolliert neu laden beziehungsweise neu starten, die Seite im Browser aufrufen und verifizieren, dass neue JSON-Zeilen in der Access-Logdatei auftauchen. Bei einer verwalteten TrueNAS-App zuerst prüfen, ob die zusätzlichen Mounts und Logeinstellungen über ihre offiziellen Einstellungen dauerhaft abbildbar sind.
# Vorab tatsächlichen Containernamen ermitteln:
sudo docker ps --format "table {{.Names}}\t{{.Image}}"
# Mounts/Dateipfade des richtigen Traefik-Containers prüfen:
sudo docker inspect TRAEFIK_CONTAINER --format "{{range .Mounts}}{{println .Source \" -> \" .Destination}}{{end}}"
6. Warum die GeoMetrikks-Karte Besucher aus dem falschen Ort zeigt
Wenn du Pangolin oder Traefik hinter Cloudflare betreibst, sieht der Proxy oft zuerst nur die IP eines Cloudflare-Datacenters oder eines lokalen cloudflared-Containers. Eine große Zahl angeblicher Besucher aus einer nahen Stadt oder einer einzigen Adresse kann auf falsch übernommene Proxy-Header hindeuten – nicht auf echte Besucher aus dieser Stadt.
Für direkte Cloudflare-Proxy-Verbindungen vertrauenswürdige Cloudflare-IP-Bereiche oder den vorgeschalteten Proxy anhand der tatsächlich ankommenden Verbindung berücksichtigen. In Traefik heißt die statische Konfiguration beispielsweise entryPoints.<name>.forwardedHeaders.trustedIPs. Die echten EntryPoint-Namen und vertrauten IP-Bereiche müssen aus der vorhandenen Konfiguration ermittelt werden.
Für Cloudflare Tunnel kommt der direkte Peer häufig aus dem lokalen Docker-Netz, nicht aus einer öffentlichen Cloudflare-IP. Cloudflare übermittelt die Besucher-IP im Header CF-Connecting-IP. Eine vorgelagerte, korrekt konfigurierte Nginx-Instanz kann diesen Header nur von dem vertrauenswürdigen cloudflared-Peer auswerten und die ermittelte Adresse bereinigt weitergeben. Traefik hat keine direkte Entsprechung zu Nginx real_ip_recursive; mehrstufige Proxy-Ketten brauchen daher besonders sorgfältige Konfiguration.
# Beispiel Nginx REAL-IP hinter cloudflared im selben Host:
set_real_ip_from 127.0.0.1;
real_ip_header CF-Connecting-IP;
real_ip_recursive on;
# Bei cloudflared im Docker-Netz stattdessen nur das
# TATSÄCHLICHE, vertrauenswürdige Peer-Netz eintragen.
Nie pauschal forwardedHeaders.insecure=true einschalten. Sonst können externe Clients ihre angebliche IP-Adresse in Headern selbst vorgeben und deine Statistiken manipulieren. Konfiguriere stattdessen exakte vertrauenswürdige IPs/CIDRs, prüfe die reale Header-Kette und teste sie mit kontrollierten Requests.

Bildquelle: GeoMetrikks-Projekt (Original-Screenshot) – Dashboard mit Auswertungen. Abbildung kann je nach Version abweichen.
7. Pangolin, Coolify und mehrere Domains zentral überwachen
Viele Homelabs haben mehrere Eingangswege: einige Domains laufen direkt über Cloudflare Tunnel zu Nextcloud, andere über Pangolin, weitere über Coolify. GeoMetrikks sieht nur die Logquellen, die du ihm tatsächlich gibst. Drei Architekturvarianten sind sinnvoll:
- Ein gemeinsamer Reverse Proxy: Wenn sämtliche HTTP-Hostnamen bewusst über einen zentralen Proxy laufen, kannst du dort die Access-Logs sammeln und anhand des Hostnamens unterscheiden. Dies benötigt eine kontrollierte Migration und sollte vorhandene produktive Tunnel nicht unbemerkt umbiegen.
- Mehrere Logdateien: Unterstützte Logdateien von mehreren Quellen in die GeoMetrikks-Umgebung einhängen; für getrennte Hosts die Bereitstellung und Berechtigungen sauber planen.
- Grafana Loki: Access-Logs der verschiedenen Proxys an Loki liefern und GeoMetrikks über
LOKI_URLundLOKI_QUERIESanbinden. Hierbei dürfen Logs nicht zusätzlich aus derselben Quelle parallel eingelesen werden, sonst drohen Dubletten.
Eine zentrale DNS-Zone oder ein Wildcard-Eintrag allein reicht für Monitoring nicht aus. DNS verrät keine URL-Pfade, HTTP-Statuscodes, Besucher-IP-Adressen oder Requests. Cloudflare Tunnel-Zugriffe, die Pangolin komplett umgehen, erscheinen deshalb nicht in Pangolins Traefik-Logs.
8. Besucherlogs, Filter, Karte und Auswertungen nutzen
Nach erfolgreicher Ingestion kannst du die Live-Karte, Requests pro Zeitraum, Statuscodes, häufige URLs, Länder, ASN/Netzbetreiber und die Zugriffsprotokolle vergleichen. Filter nach Hostname oder Quelle ermöglichen beispielsweise eine getrennte Auswertung für cloud.example.com und blog.example.com, sofern beide in den angebundenen Logs vorkommen.

Bildquelle: GeoMetrikks-Projekt (Original-Screenshot) – Access-Log-Ansicht. Abbildung kann je nach Version abweichen.
Für die Richtigkeit der Statistik ist der Ort des Loggings entscheidend: Ein Cache beim CDN kann Anfragen ausliefern, ohne dass sie deinen Origin erreichen. Ein Reverse-Proxy-Access-Log misst daher typischerweise nicht die Gesamtzahl aller CDN-Edge-Requests. Wiederholte Anfragen von Bots und Monitoring-Systemen sind außerdem keine eindeutigen menschlichen Seitenbesucher.
9. Fehlerbehebung: leere Karte, keine Logeinträge oder falsche IP
Die Karte bleibt leer
Überprüfe der Reihe nach MaxMind-Status, existierende Logdatei, gültiges JSON-Format, Read-only-Mount, Dateirechte und ob seit dem Start neue Requests eingegangen sind. Live-Tailing liest zunächst vor allem neue Zeilen. Alte rotierte Logs können über den dafür vorgesehenen Importbefehl eingelesen werden; importiere nicht gleichzeitig live verfolgte Dateien doppelt.
cd ~/geometrikks
sudo docker compose ps
sudo docker compose logs --tail=150 app
# Host-Logpfad an deine Installation anpassen:
tail -n 3 /pfad/zu/deinen/traefik-logs/access.log
Nur interne IP-Adressen (172.x, 10.x, 192.168.x) in den Logs
Die protokollierte Clientadresse ist offenbar ein vorgeschalteter Container oder Tunnel. Prüfe, welcher Proxy direkt mit Traefik verbunden ist und ob dieser Peer als vertrauenswürdig hinterlegt ist. Ungeprüfte Header von beliebigen IP-Adressen sind keine Lösung.
Cloudflare-Tunnel-Domains fehlen komplett
Die Anfrage läuft offenbar nicht durch den protokollierten Proxy. Prüfe die Published-Application-Route des betreffenden Cloudflare Tunnels und den dort hinterlegten lokalen Dienst; integriere die Logquelle dieses Pfads oder leite den Dienst bewusst durch einen zentralen, korrekt gesicherten Proxy.
GeoMetrikks zeigt Login-Fehler oder Session-Probleme
Prüfe Hostname, HTTPS, Session-Secure-Einstellung, Reverse-Proxy-WebSocket-Unterstützung und APP_TRUSTED_PROXIES. Das Dashboard sollte hinter einer eigenen Subdomain am Root-Pfad betrieben werden – nicht unter /geometrikks/.
10. Datenschutz, Sicherheit und Betrieb
- Zugriffsprotokolle mit IP-Adressen gelten im Regelfall als personenbezogene Daten; Zweck, Rechtsgrundlage, Transparenz und angemessene Speicherfristen prüfen.
- GeoMetrikks nicht ohne zusätzliche Schutzmaßnahmen öffentlich freigeben; HTTPS, starke Zugangsdaten und gegebenenfalls vorgeschaltete Zugriffskontrolle verwenden.
- Befugnisse und Dateirechte für Datenbank, Logs und Backups einschränken.
- GeoIP-Standortanzeigen nicht als Beweis für den Wohnort einzelner Personen behandeln.
- Vor Updates Compose-Versionen, Datenbank-Backups und Konfiguration sichern.
FAQ
Kann GeoMetrikks die genaue Adresse eines Besuchers anzeigen?
Nein. Es kann GeoIP-Daten schätzen, aber keine Hausnummer oder individuelle Anschrift zuverlässig aus einer IP-Adresse berechnen.
Läuft GeoMetrikks mit Pangolin auf TrueNAS?
Grundsätzlich ja, sofern du auf die tatsächlich geschriebenen Traefik-Access-Logs zugreifen kannst oder sie über einen unterstützten Log-Transport wie Loki bereitstellst. Ein Hostpfad zu einem TrueNAS-App-Container muss erst geprüft werden und ist nicht über alle Installationen hinweg identisch.
Kann ich auch Domains überwachen, die über Cloudflare Tunnel laufen?
Nur wenn deren tatsächliche HTTP-Anfragen in einer angebundenen Logquelle erscheinen. Das Erstellen eines DNS- oder CNAME-Eintrags allein überträgt keine Cloudflare-Edge-Logs an GeoMetrikks.
Passende weiterführende Anleitungen
- Pangolin installieren und Ressourcen veröffentlichen
- Coolify installieren und Docker-Apps deployen
- Domain und Wildcard-DNS mit Cloudflare einrichten

Schreiben Sie einen Kommentar