All apps · 0 apps
geometrikks
Docker app from GilbN's Repository
Overview
GeoMetrikks is a real-time geolocation analytics tool that tails your nginx access logs, performs GeoIP lookups, and visualizes traffic on a live interactive map - no external services required.
Features:
- Live GeoIP map with real-time request visualization
- Traffic analytics dashboard with configurable date ranges
- Searchable access log history with filtering and sorting
- WebSocket-backed live log tail
- Batch import of archived logs
Requires a TimescaleDB + PostGIS database - install the companion "geometrikks-timescaledb" template from this same repository first, or point this container at your own TimescaleDB+PostGIS instance. Also requires a free MaxMind GeoLite2 account for GeoIP data (https://www.maxmind.com/en/geolite2/signup). See the repository README for full setup steps.
Readme
View on GitHubGeoMetrikks Unraid Templates
Unraid Community Apps templates for GeoMetrikks - a real-time geolocation analytics tool that tails nginx access logs, does GeoIP lookups, and visualizes traffic on a live interactive map.
This repository ships two Docker templates:
| Template | What it is |
|---|---|
geometrikks-timescaledb |
TimescaleDB + PostGIS database - install this first |
geometrikks |
The GeoMetrikks app and web UI |
Setup
1. Install the database
Add geometrikks-timescaledb from Community Apps. Set a POSTGRES_PASSWORD - you'll reuse this exact value in step 2. Leave POSTGRES_USER (geouser) and POSTGRES_DB (geometrikks) at their defaults unless you have a reason to change them.
The DB Port config (default 5432) is exposed to your LAN so the app container can reach it.
2. Install the app
Add geometrikks from Community Apps and fill in:
- DB_HOST - your Unraid server's IP address (e.g.
192.168.1.50) - DB_PASSWORD - the same password you set for
geometrikks-timescaledbin step 1 - APP_ADMIN_USER / APP_ADMIN_PASSWORD - your web UI login or APP_AUTH_DISABLED=true
- Nginx Logs path - point this at wherever your reverse proxy writes its access logs (defaults to a SWAG-style path; change it for Nginx Proxy Manager, Caddy, or whatever you actually run)
Leave DB_PORT/DB_USER/DB_DATABASE at their defaults unless you changed the matching values in step 1.
3. Get a free MaxMind GeoLite2 key
GeoMetrikks needs MaxMind's free GeoLite2 database for GeoIP lookups:
- Sign up at https://www.maxmind.com/en/geolite2/signup
- Create a license key under your account
- Set MAXMINDDB_USER_ID and MAXMINDDB_LICENSE_KEY on the
geometrikkstemplate
Without these, GeoMetrikks runs in degraded mode (no GeoIP lookups) until you add them.
4. Open the web UI
http://<your-unraid-ip>:8000/ - log in with the admin credentials you set in step 2.
Notes
- Full environment variable reference: https://github.com/GilbN/geometrikks/blob/main/docs/configuration.md. Most of it is exposed as "advanced" settings on the
geometrikkstemplate - expand "Show more settings" when adding the container to see database pool tuning, log parser tuning, analytics retention, and map settings. - GeoMetrikks itself: https://github.com/GilbN/geometrikks
Media gallery
1 / 6Install Geometrikks on Unraid in a few clicks.
Find Geometrikks in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
GeoMetrikks parses a specific nginx log_format. Add it to the http block in your nginx.conf:
log_format geometrikks '$remote_addr - $remote_user '
'"$request" $status $body_bytes_sent '
'"$http_referer" $host "$http_user_agent" '
'"$request_time" "$upstream_response_time"';
Then set your access_log to use this format:
access_log /var/log/nginx/access.log geometrikks;
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/gilbn/geometrikks:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8000]/- Network
bridge- Shell
bash- Privileged
- false
- Extra Params
--restart=unless-stopped
Template configuration
HTTP port for the GeoMetrikks web UI.
- Target
- 8000
- Default
- 8000
Persistent storage for the downloaded MaxMind GeoLite2 database. This container runs as fixed UID/GID 1000 (not Unraid's usual nobody:users 99:100) - before first start, create this folder and run 'chown -R 1000:1000' on it or the container will fail to write the GeoIP database.
- Target
- /app/data/geoip
- Default
- /mnt/cache/appdata/geometrikks/geoip
Host directory containing your nginx access logs, mounted read-only. Default assumes SWAG - change to your reverse proxy's log directory (Nginx Proxy Manager, etc.).
- Target
- /var/log/nginx
- Default
- /mnt/cache/appdata/swag/log/nginx
Web UI login username.
- Default
- admin
Web UI login password. Required unless APP_AUTH_DISABLED=true.
Set true ONLY if this container sits behind an authenticating reverse proxy (Authelia, Tailscale, etc).
- Default
- false
MaxMind account ID, for GeoLite2 database auto-download. Free account: https://www.maxmind.com/en/geolite2/signup
MaxMind license key, for GeoLite2 database auto-download.
Nginx access log file(s) to tail, container-side path(s). Single path or a JSON list ['/var/log/nginx/access.log', '/var/log/nginx/access2.log'] for multiple files.
- Default
- /var/log/nginx/access.log
Hostname label attached to ingested log events.
- Default
- Unraid
IP address of your TimescaleDB container - typically your Unraid server's IP if you installed the companion geometrikks-timescaledb template.
Database password. Must match POSTGRES_PASSWORD in the geometrikks-timescaledb template.
Database port.
- Default
- 5432
Database user. Must match POSTGRES_USER in the geometrikks-timescaledb template.
- Default
- geouser
Database name. Must match POSTGRES_DB in the geometrikks-timescaledb template.
- Default
- geometrikks
Application log verbosity (DEBUG, INFO, WARNING, ERROR).
- Default
- INFO
Enable SQLAlchemy query logging.
- Default
- false
Enable SQLAlchemy connection pool logging.
- Default
- false
Max connections above pool_size.
- Default
- 10
Database connection pool size.
- Default
- 5
Connection pool timeout in seconds.
- Default
- 30
Connection recycle time in seconds.
- Default
- 3600
Disable connection pooling.
- Default
- false
Enable pool pre-ping to check connections before use.
- Default
- true
DESTRUCTIVE - drops all tables on startup. Development only. Leave false.
- Default
- false
JSON list of GeoIP locales to use.
- Default
- ["en"]
Fail settings validation when the GeoIP database file is missing.
- Default
- false
Validate that the specified GeoIP locales are supported.
- Default
- true
Re-download the GeoLite2 database when older than this many days.
- Default
- 7
Interval in seconds to poll the log file for new entries.
- Default
- 1.0
Send parsed logs to the database.
- Default
- true
Max records before a forced commit.
- Default
- 100
Max time interval in seconds between database commits.
- Default
- 5.0
Skip validation of log lines.
- Default
- false
Store all raw log lines in the debug table, not just malformed ones.
- Default
- false
Days to keep raw geo_events and access_logs data.
- Default
- 180
Days to keep access_log_debug data.
- Default
- 30
Days to keep hourly continuous aggregate data.
- Default
- 60
Minutes between continuous aggregate refreshes.
- Default
- 5
Days after which to compress hypertable chunks.
- Default
- 7
Enable scheduled background tasks.
- Default
- true
Minutes between GeoLocation.last_hit refresh jobs.
- Default
- 10
Optional destination latitude for live request routes. Set both home coordinates to override external-IP auto-detection.
Optional destination longitude for live request routes.
Resolve the server's public IP at startup and geolocate it when home coordinates are unset.
- Default
- true
JSON endpoint used for public-IP discovery; response must contain an 'ip' field.
- Default
- https://api64.ipify.org?format=json
Timeout in seconds for public-IP discovery.
- Default
- 3.0
Application name shown in API metadata.
- Default
- GeoMetrikks API
Application description shown in API metadata.
- Default
- Real-time GeoIP lookups and traffic analytics API
Enable debug mode. Development only.
- Default
- false
Application environment name.
- Default
- production