Skip to content

FAQ

I’m using Nginx Proxy Manager (or another proxy-manager container). What log path do I use? Point ACCESS_LOG_DIR at the host directory where the proxy container writes its access logs (for Nginx Proxy Manager this is usually its data/logs volume), and set LOGPARSER_LOG_PATHS to the specific access-log file(s) inside it, using the container path (/var/log/access/...), not the host path. GeoMetrikks doesn’t tail NPM’s own per-host logs. Set up the extra JSON log described under Nginx Proxy Manager and point at that. import-logs can backfill the old per-host logs.

Can I read logs from Loki instead of mounting files? Yes, if Loki holds the raw access-log lines. Set LOKI_URL and LOKI_QUERIES and remove LOGPARSER_LOG_PATHS from .env. See Loki setup.

Permission denied reading my log files? The app container runs as PUID:PGID (default 1000:1000), and log mounts are read-only. Make the log files (and their parent directory) readable by that uid/gid on the host with chmod, chown or an ACL entry. Read-only mounts are intentional: GeoMetrikks never writes to your access logs.

Does this run on arm64? Yes. The GHCR image is a multi-arch manifest for linux/amd64 and linux/arm64.

The map is empty. Check four things in order: (1) the geo-degraded banner; if it shows, MaxMind credentials or the GeoLite2 database are missing; (2) that a source is receiving traffic in a supported format (the nginx JSON log_format above, the legacy nginx format, Traefik JSON, or Caddy JSON), whether it is a file in LOGPARSER_LOG_PATHS or a selector in LOKI_QUERIES (Nginx Proxy Manager’s own per-host logs are import-only and never tailed); (3) that some time has passed since you last restarted. The map only shows events ingested after startup unless you have run a batch import. (4) that your proxy logs the visitor’s address, not an upstream proxy or tunnel; Settings > Status shows an advisory when it does not. See docs/proxy-setup.md.

The map says my browser could not start WebGL2. The map draws with WebGL2. The message adds the browser’s own reason when it gives one. The usual cause is graphics acceleration being off or blocked: turn hardware acceleration back on in the browser settings, or try another browser or device. The rest of the app works without it.

What does the “geo-degraded” banner mean? The app started without a usable GeoLite2 database: either MAXMINDDB_USER_ID/MAXMINDDB_LICENSE_KEY are not set, or the download has not completed yet. The API and UI stay up, but log ingestion does not start until a database is available. Add credentials and restart the app container to clear it. The sidebar’s connection indicator also shows “Degraded” while ingestion is stopped.