e7db/ifconfig
Check your online information. Compatible with any HTTP compatible client is supported, including your browser, cURL, HTTPie, GNU Wget and FreeBSD fetch.
Output available in HTML, plain text, JSON, XML and YAML.
docker run --name ifconfig -d -p 80:80 e7db/ifconfig
-e MAXMIND_LICENSE_KEY=XXX
-e DATABASE_AUTO_UPDATE=true -e MAXMIND_ACCOUNT_ID=123456
-v /path/to/databases:/var/databases
-e HOST_AUTO=auto.my.domain
-e HOST_IPV4=ipv4.my.domain
-e HOST_IPV4=ipv6.my.domain
-e SHOW_ABOUT=true
-e SHOW_FAQ=true
--mount type=tmpfs,destination=/tmpfs
-e RATE_LIMIT=500
-e RATE_LIMIT_INTERVAL=60
(1 second by default)-e DNS_CACHE=true
-e GOOGLE_ANALYTICS_ID=UA-12345678-9
Two databases are required for the geolocation feature to work completely. If one or both of the databases are missing, the corresponding information will not be retrieved:
With a license key
A script is included in the container entrypoint to automatically download them, provided you have set your MaxMind license key as the MAXMIND_LICENSE_KEY
environment variable.
To get a license key:
With a databases folder mount
You can provide your own databases stored in a folder, using -v /path/to/databases:/var/databases
.
To download the databases:
GeoLite2-ASN.mmdb
and GeoLite2-City.mmdb
to the /path/to/databases
folder.The use of an in-memory database provides much faster access to thedata, at the cost of an increased usage of about 100 MB of RAM.
It requires Docker version 17.0.6 minimum.
Provided a /tmpfs
mount point is available, the MaxMind GeoLite2 databases are moved there on container startup.
By rate-limiting access to the API, a specific IP can only call this service a specific amount of time for a defined window of time (e.g.: 500 times per minute).
When issuing a request to a rate-limited service, a set of additional headers are added to the HTTP response:
X-RateLimit-Limit: 500, 500;window=60
X-RateLimit-Remaining: 483
X-RateLimit-Reset: 47
X-RateLimit-Reset: Tue, 23 Jun 2020 13:49:57 +0000
They comply to the draft opened at IETF website, regarding the RateLimit Header Fields for HTTP, but prefixed with an X-
tag, pending validation.
When the limit is reached, the service answers with a 429 Too Many Requests
status code. It comes with a set of additional headers, indicating when the next request can be issued:
Retry-After: 12
Retry-After: Tue, 21 Jun 2020 17:29:27 +0000
They comply with the RFC 6585 and the RFC 7321, also available at the IETF website.
More documentation can also be found at MDN:
By caching DNS requests locally, you can speed up name resolution on your environment. Increased performance is not guaranted, but usually depends on your available DNS server performance and network link.
docker pull e7db/ifconfig