For any current or previous stable versions, look in the appropriate tag's branch. main
will be in continuous development
A self hosted geoip lookup application written in Go and Vue.js 3 which provides a client with information about their IP address or any other. It uses the Maxmind GeoLite2-City database.
The webapp provides general geoip information. There is also an api available
GET / : Return client IP Address (when used with curl or HTTPie)
GET /api/geoip : Return client Geoip information
GET /api/geoip/:address : Return Geoip information for "address"
PUT /api/update : Update the Maxmind database
The application doesn't provide a database. A PUT
request to /api/update
will update the database and will ideally be protected by an api key (header: X-API-KEY
). If API_KEY
env var is not set, then the application will set one on startup and notify via STDOUT
$ docker compose up --build
$ docker compose -f docker-compose.yml -f docker-compose.dev.yml --build
$ cd frontend
$ pnpm install
$ npm run build
$ cd ../
$ go build
$ docker build .
The go binary will have the vue app embedded and serve it if WEB
is enabled.
the binary will serve the embedded app in production mode (RELEASE_MODE
= true
). Or it will look at the filesystem for a dist/
and serve that if it's not in production mode