# fiorix/freegeoip

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/fiorix-freegeoip).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

4,932 stars · 775 forks · Go · NOASSERTION

## Links

- GitHub: https://github.com/fiorix/freegeoip
- awesome-repositories: https://awesome-repositories.com/repository/fiorix-freegeoip.md

## Topics

`freegeoip` `geolocation` `go` `ip-database`

## Description

freegeoip is a self-hosted geolocation service and API server that maps IP addresses and hostnames to geographic locations. It functions as a MaxMind database reader, parsing binary geolocation databases to provide location data through a REST interface.

The project distinguishes itself by providing a private alternative to cloud geolocation providers, managing local database files and automating periodic updates. It includes a reverse proxy IP resolver to extract original client addresses from proxy headers, ensuring accurate mapping behind load balancers.

The service incorporates a quota management system to enforce request limits per client and secures its endpoints using TLS encryption and CORS policies. It also features automated database synchronization with checksum-based version verification and an optional public-facing web frontend for performing lookups.

## Tags

### Data & Databases

- [Geolocation Services](https://awesome-repositories.com/f/data-databases/geolocation-services.md) — Provides a self-hosted system for determining geographic locations based on IP addresses and hostnames.
- [Geolocation Databases](https://awesome-repositories.com/f/data-databases/geolocation-databases.md) — Automates the retrieval and background updating of geolocation databases to ensure lookup accuracy.
- [IP Geolocation](https://awesome-repositories.com/f/data-databases/geolocation-databases/ip-geolocation.md) — Provides a REST API for mapping IP addresses to physical locations and network metadata. ([source](https://github.com/fiorix/freegeoip#readme))
- [MMDB Readers](https://awesome-repositories.com/f/data-databases/geolocation-databases/ip-geolocation/mmdb-readers.md) — Parses and queries binary MaxMind MMDB files to retrieve location data.
- [Remote-to-Local Database Synchronizers](https://awesome-repositories.com/f/data-databases/entity-modeling/entity-table-synchronizers/remote-to-local-database-synchronizers.md) — Automatically synchronizes remote geographic data files to a local instance to keep location data current. ([source](https://github.com/fiorix/freegeoip/blob/master/db.go))
- [In-Memory Databases](https://awesome-repositories.com/f/data-databases/in-memory-databases.md) — Loads geolocation databases into system memory to achieve high-speed, low-latency lookups.
- [Remote Data Retrieval](https://awesome-repositories.com/f/data-databases/remote-data-retrieval.md) — Retrieves geographic data files from remote providers using authenticated URLs and license keys. ([source](https://github.com/fiorix/freegeoip/blob/master/db_test.go))

### DevOps & Infrastructure

- [Self-Hosted API Services](https://awesome-repositories.com/f/devops-infrastructure/infrastructure/private-enterprise-management/self-hosted-services/self-hosted-api-services.md) — Provides a private, self-hosted API server for geographic data to avoid reliance on third-party cloud providers.

### Networking & Communication

- [Reverse Proxy Header Identification](https://awesome-repositories.com/f/networking-communication/reverse-proxy-header-identification.md) — Extracts original client IP addresses from proxy headers to maintain geolocation accuracy behind load balancers. ([source](https://github.com/fiorix/freegeoip/blob/master/Dockerfile))
- [Client IP Address Retrieval](https://awesome-repositories.com/f/networking-communication/network-addressing/ip-addressing-fundamentals/client-ip-address-retrieval.md) — Extracts the original client IP address from proxy headers to ensure accurate geolocation behind load balancers.

### Operating Systems & Systems Programming

- [Database Version Verifications](https://awesome-repositories.com/f/operating-systems-systems-programming/checksum-utilities/data-integrity-checksums/module-checksum-verifications/database-version-verifications.md) — Compares local database checksums against remote versions to determine if newer data files are available. ([source](https://github.com/fiorix/freegeoip/blob/master/db_test.go))

### Security & Cryptography

- [API Gateway Security](https://awesome-repositories.com/f/security-cryptography/api-gateway-security.md) — Protects API endpoints using TLS encryption and CORS policies to restrict access to authorized domains.
- [Rate Limiting & Abuse Prevention](https://awesome-repositories.com/f/security-cryptography/rate-limiting-abuse-prevention.md) — Controls the volume of incoming requests per client to prevent service abuse.
- [Client Request Quotas](https://awesome-repositories.com/f/security-cryptography/request-size-limiters/request-limiters/request-throttling/client-request-quotas.md) — Enforces request volume limits per client IP using an in-memory store to prevent API abuse.

### Software Engineering & Architecture

- [Checksum-Based Updates](https://awesome-repositories.com/f/software-engineering-architecture/custom-rule-development/security-rule-development/automated-rule-distribution/checksum-based-updates.md) — Uses cryptographic checksums to detect changes in remote database files before triggering updates.
- [Filesystem Polling](https://awesome-repositories.com/f/software-engineering-architecture/polling-based-input-models/filesystem-polling.md) — Monitors the local filesystem to automatically reload geolocation data files without interrupting server operation.

### Web Development

- [Built-in TLS Termination](https://awesome-repositories.com/f/web-development/web-servers/https-servers/built-in-tls-termination.md) — Implements built-in TLS termination to secure API endpoints and protect data in transit.
