Sign inSign up

ymuski/geo-checker

By ymuski

Updated 9 months ago

Image
0

10K+

ymuski/geo-checker repository overview

geo-checker

openresty (nginx) with geoip2 module, geoipupdate+cron.

Usage:


# Retrive GEOIP credentials from `maxmind.com` and set variables
export GEOIP_ACCOUNTID="AccountID"
export GEOIP_LICENSEKEY="LicenseKey"
export GEOIP_EDITIONID="GeoLite2-Country" # "GeoLite2-Country" or "GeoIP2-Country"

# start docker container
docker run -d -v /tmp/geoip/:/usr/share/geoip/ -e GEOIP_ACCOUNTID=$GEOIP_ACCOUNTID -e GEOIP_LICENSEKEY=$GEOIP_LICENSEKEY -e GEOIP_EDITIONID=$GEOIP_EDITIONID --name geo-checker -p 8080:80 ymuski/geo-checker:latest

# interactive mode
docker run --rm -it -v ${PWD}/tmp/geoip/:/usr/share/geoip/ -e GEOIP_ACCOUNTID=$GEOIP_ACCOUNTID -e GEOIP_LICENSEKEY=$GEOIP_LICENSEKEY -e GEOIP_EDITIONID=$GEOIP_EDITIONID --name geo-checker -p 8080:80 ymuski/geo-checker

# test with any public IP
# Header priority: 1. X-Custom-Real-Ip (Highest) 2. X-Real-Ip 3. CF-Connecting-IP
curl localhost:8080 -H "X-Custom-Real-Ip: 1.1.1.1"
curl localhost:8080 -H "X-Real-Ip: 1.1.1.1"
curl localhost:8080 -H "CF-Connecting-IP: 1.1.1.1"
curl localhost:8080/ip/1.1.1.1

Responce:
# Body
{"IP":"1.1.1.1","iso2Code":"AU","name":"Australia"}

# Responce headers
X-Real-IP: 1.1.1.1
X-Geo-Country-Code: AU
X-Geo-Country-Name: Australia

docker image:

docker build -t ymuski/geo-checker .
docker pull ymuski/geo-checker

Notes:

  • if you use nginx as reverse-proxy:
location / {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_pass http://127.0.0.1:8080;
}
  • if you use Cloudflare + nginx as reverse-proxy:
location / {
    proxy_pass http://127.0.0.1:8080;
}

Tag summary

Content type

Image

Digest

sha256:7c2f94487

Size

87.5 MB

Last updated

9 months ago

docker pull ymuski/geo-checker