Skip to content

Support for specifying local mmdbs for ASN, city, country #733

@GlenNicholls

Description

@GlenNicholls

Description

I already have a maxmindinc/geoipupdate Docker image and would like to map local .mmdb files in my librespeed config.

Why it should be implemented

  • Would simplify librespeed deployment when local IP info DBs are already present
  • Privacy - I don't need to give a third party every DB query
  • I control the update frequency
  • Provides another option aside from ipinfo.io

Optional: implementation suggestions

Looks like ipinfo.io also supports downloading relevant DBs, so I think it makes sense to allow the user to volume map .mmdb and have environment variables define the ASN, city, and country DBs. The default would be what currently exists, but the code wouldn't attempt an external query if it finds what it needs locally.

The below docker-compose.yml is what I think this could look like from the config perspective:

volumes:
  geoip-data:

services:
  geoip:
    image: maxmindinc/geoipupdate
    volumes:
      - geoip-data:/geoip
    environment:
      GEOIPUPDATE_ACCOUNT_ID: ${MAXMIND_ID}
      GEOIPUPDATE_LICENSE_KEY: ${MAXMIND_API_KEY}
      GEOIPUPDATE_EDITION_IDS: GeoLite2-ASN GeoLite2-City GeoLite2-Country
      GEOIPUPDATE_FREQUENCY: 168
    
  speedtest:
    image: librespeed/speedtest
    volumes:
      - geoip-data:/geoip:ro
    environment:
      MODE: standalone
      DISABLE_IPINFO: false
      DISTANCE: "mi"
      IPINFO_ASN_DB: /geoip/GeoLite2-ASN.mmdb # default /var/www/html/backend/country_asn.mmdb
      IPINFO_CITY_DB: /geoip/GeoLite2-City.mmdb # default "" - would query externally if this isn't set
      IPINFO_COUNTRY_DB: /geoip/GeoLite2-Country.mmdb # default /var/www/html/backend/country_asn.mmdb
      # ... remainder of config

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions