Reliable and fast local geo-ip api based on MaxMind geoip2 database.
Database can be scheduled (set up a cron) to be updated every day with bin/update command.
- PHP 8.1+
- Composer
- MySQL / MariaDB database
- Download this project and run
composer installto install dependencies. - Register at maxmind.com and get your free geolite2 license key and account id.
- Copy
config.sample.phptoconfig.phpand set your license key, account id and database credentials. - Make sure you are not using tables
ip4_blocks,ip6_blocksandip_locationsas they will be overwritten. - Run
bin/updateto download and import the database to your local db (~400MB). - Open a web server (for instance
php -S localhost:1234 ./public/index.php) - Make a request to
http://localhost:1234?ip=<ip>
Feel free to dockerize this project or make PR with more customization options.
From url http://localhost:1234/?ip=8.8.8.8
{ "continent_code": "NA", "continent_name": "North America", "country_iso_code": "US", "country_name": "United States", "city_name": null, "subdivision_1_iso_code": null, "subdivision_1_name": null, "subdivision_2_iso_code": null, "subdivision_2_name": null, "metro_code": null, "time_zone": "America/Chicago", "latitude": 37.751, "longitude": -97.822, "is_anonymous_proxy": false }