GeoLite2 Automation
A simple automation to download & update your GeoLite2 databases with geoipupdate
This is a community guide and is not officially supported. If you have any issues, please reach out to the author.
This automation lets your system automatically download and update the GeoLite2-Country and GeoLite2-ASN databases from MaxMind. Pangolin uses these databases for geo-location features such as country or region rules, geo-blocking, analytics, and ASN blocking. It uses MaxMind's geoipupdate Docker container to do this.
Maxmind's service is free of charge for development, personal or community use. Quote
Table of Contents
- Requirements
- Maxmind Account
- API key creation
- Modification of Pangolin's
docker-compose.yml - Modification of Pangolin's
config.yml
1. Requirements
- A Maxmind account for API access
- Pangolin version 1.11.0 or higher
2. Maxmind Account
To be able to use Maxmind's service you need to request access to the GeoLite2 databases and create an account on their website.
After you successfully created an account visit the mainpage again and login to your new account.
3. API key creation
The next step is to create an API key for geoipupdate. You'll find an entry called Manage license keys in the menu on the left side. Head to this page and click on Generate new license key.

Give your new key a name. E.g. Pangolin.

After your key got created the webpage will show you your Account ID as well as the API key. Save the key now because it can only be seen once. Don't panic if something goes wrong, you can easily create new keys.

After you clicked on Return to list you should see an overview of your keys bundled with some metadata.
4. Modification of Pangolin's docker-compose.yml
Now login to your Pangolin host and navigate to /pangolin in your user directory:
cd pangolinShut down Pangolin with:
docker compose downOpen docker-compose.yml with your favorite text editor.
E.g. nano:
nano docker-compose.ymlAppend this Docker compose service at the end of your stack and add your Account ID as well as your API key you created in the last step:
services:
(...)
geoipupdate:
container_name: geoipupdate
image: ghcr.io/maxmind/geoipupdate
restart: unless-stopped
environment:
- 'GEOIPUPDATE_ACCOUNT_ID=' # Account ID
- 'GEOIPUPDATE_LICENSE_KEY=' # API key
- 'GEOIPUPDATE_EDITION_IDS=GeoLite2-Country GeoLite2-ASN' # Which dbs should be downloaded
- 'GEOIPUPDATE_FREQUENCY=72' # Update intervall in hours
volumes:
- './config/GeoLite2:/usr/share/GeoIP'Note
If you use the standard Pangolin deployment you shouldn't need to modify the path. This is the bare minimum to run the container. There are other optional environment variables available. Have a look at their docs!
Save and close the file, but don't restart the stack yet!
5. Modification of Pangolin's config.yml
Navigate to /config within the same folder and open it with a text editor.
cd configAdd these lines to the server object
server:
maxmind_db_path: "./config/GeoLite2/GeoLite2-Country.mmdb"
maxmind_asn_path: "./config/GeoLite2/GeoLite2-ASN.mmdb"These entries tell the Pangolin application where to find the databases.
Save and close the file then navigate to the pangolin folder one level higher.
Restart your Pangolin stack with:
docker compose up -dEt voilà, you are now able to define country rules and ASN rules for your resources! 🏁
btw: you can use these exact databases for your Traefik dashboard too -> Community Guide

