GeoIP 0.1.0
Quietly and without much noise, the first version of geoip has been released - a self-hosted GeoIP REST API service written in Rust.

Features
- Retrieve IP address information (country, city, postal code, coordinates, ISP, etc.) via a REST API using MaxMind GeoLite2 (free) and MaxMind GeoIP (paid) databases.
- Determine the current IP address (a dedicated endpoint + the
ipparameter on the main endpoint is optional). - Configurable automatic database updates (either from official MaxMind URLs using Account ID and Licence Key, or from a custom URL with or without authentication; update frequency is configurable as well).
- All results containing a
timezonefield also include an additionalposix_timezonefield (e.g.Europe/ParisbecomesCET-1CEST,M3.5.0,M10.5.0/3). - This enables automatic timezone configuration on embedded systems (e.g. ESP32 and other newlib targets without tzdata). A unique feature not available in other projects.
- Timezone database is also updated automatically (interval, URL, and authentication can be configured; by default, the official IANA website is used). If updates are disabled, the system timezone data is used instead.
- The service can provide downloadable archives of the latest databases over HTTP(S). This allows one instance to proxy database updates for others, reducing MaxMind quota usage.
- Optional API key protection for data endpoints.
- Web interface for manual queries, with optional OpenStreetMap support.
- Built-in OpenAPI specification and Swagger UI for easy integration into your own projects.
- Ready-to-use Docker image for quick deployment:
docker run \
-e MAXMIND_ACCOUNT_ID=XXXX \
-e MAXMIND_LICENCE_KEY=YYYY \
-e OSM_TILES_URL="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" \ # optional
-v geoip_data:/data \
-p 8080:8080 \
ghcr.io/quoi-dev/geoip:latest
GitHub (MIT)
This project aims to simplify GeoIP integration into other applications by abstracting database updates and MMDB handling. It supports Linux and macOS, and should work fine on other UNIX-like systems. Windows does not support timezone handling (but WSL can be used).