# GeoIP / GeoLite2 в шлюзе При включённом **`geoip`** шлюз открывает один или два файла **MaxMind DB** (`.mmdb`) и обогащает ответ **`GET /api/agg/unique-ips`** (если не передан `?geo=false`). ## Нужны ли все три базы (City, Country, ASN)? | База | Нужна ли отдельно | Зачем | | --- | --- | --- | | **GeoLite2-City** | Для геолокации — **да** (или только она) | Страна, город, англ. названия. | | **GeoLite2-Country** | **Нет**, если есть City | В City уже есть страна; Country даёт только страну и **дублирует** часть данных City. | | **GeoLite2-ASN** | **Опционально** | Номер автономной системы (ASN) и имя организации (провайдер/сеть), **не** заменяет город. | Итого: минимум — **одна база City** для страны/города. Для «кто оператор сети» добавляют **ASN** (City + ASN вместе дают полную картину). **Three MMDB не обязательны** — достаточно **1–2 файлов** (City + при желании ASN). ## Поля в JSON - Из **City**: `country_code`, `country_name`, `city_name` - Из **ASN**: `asn`, `as_organization` ## Конфигурация Нужен **хотя бы один** путь: `database_path` (City) и/или `asn_database_path` (ASN). Пример с репозитория [P3TERX/GeoLite.mmdb](https://github.com/P3TERX/GeoLite.mmdb) (сырые `.mmdb` по HTTPS): ```yaml geoip: enabled: true database_path: /var/lib/telemt-gateway/GeoLite2-City.mmdb download_url: "https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb" asn_database_path: /var/lib/telemt-gateway/GeoLite2-ASN.mmdb asn_download_url: "https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-ASN.mmdb" ``` - Если локального файла нет, а указан соответствующий `*_download_url`, при старте выполняется загрузка. - URL с суффиксом **`.gz`** обрабатываются как gzip; иначе тело ответа пишется в файл как есть (подходит для GitHub raw `.mmdb`). ## Лицензия GeoLite2 распространяется MaxMind на условиях [лицензии](https://dev.maxmind.com/geoip/geolite2-free-data-feed). Сторонние зеркала и репозитории используйте на свой риск; для продакшена часто нужен свой ключ MaxMind и обновление БД. Библиотека чтения: [`github.com/oschwald/geoip2-golang`](https://github.com/oschwald/geoip2-golang).