{"id":13580116,"url":"https://github.com/alisinabh/atlas","last_synced_at":"2025-10-05T09:18:52.432Z","repository":{"id":238429469,"uuid":"789229794","full_name":"alisinabh/atlas","owner":"alisinabh","description":"A simple performant GeoIP server written in Rust using MaxMind DBs with auto database update","archived":false,"fork":false,"pushed_at":"2025-03-12T19:27:37.000Z","size":534,"stargazers_count":51,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-16T06:24:03.408Z","etag":null,"topics":["geoip","geoip-api","geoip-lookup","geoip2","geolocation","maxmind","maxmind-geoip"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alisinabh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-20T01:27:31.000Z","updated_at":"2025-03-12T19:27:40.000Z","dependencies_parsed_at":"2024-07-09T06:26:37.434Z","dependency_job_id":"4867210e-a872-4031-9caf-ab1f8e98d259","html_url":"https://github.com/alisinabh/atlas","commit_stats":null,"previous_names":["alisinabh/atlas"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alisinabh%2Fatlas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alisinabh%2Fatlas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alisinabh%2Fatlas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alisinabh%2Fatlas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alisinabh","download_url":"https://codeload.github.com/alisinabh/atlas/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243949973,"owners_count":20373657,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geoip","geoip-api","geoip-lookup","geoip2","geolocation","maxmind","maxmind-geoip"],"created_at":"2024-08-01T15:01:47.595Z","updated_at":"2025-10-05T09:18:47.379Z","avatar_url":"https://github.com/alisinabh.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Atlas\n\n\u003cimg height=\"160\" align=\"right\" src=\"https://github.com/alisinabh/atlas/raw/main/assets/atlas-logo.png\" alt=\"Atlas\"\u003e\n\n[![Atlas CI](https://github.com/alisinabh/atlas-rs/actions/workflows/ci.yml/badge.svg)](https://github.com/alisinabh/atlas-rs)\n\nAtlas is a geoip HTTP service built in Rust, designed to simplify IP GeoLocation by automatically\nmanaging MaxMind databases. It ensures that users have up-to-date IP data without the hassle of\nmanual downloads and updates. This tool is perfect for services who need reliable and fast\nIP GeoLocation lookup in their applications using a very simple HTTP API.\n\nLearn more about Atlas in [**my blog post here**](https://hackernoon.com/ip-geo-location-local-database-vs-remote-apifinding-the-middle-ground-with-atlas).\n\n## Features\n\n- Automatic Database Updates: Automatically downloads and updates MaxMind's GeoIP databases.\n- Dead-simple HTTP API: Atlas has a very simple HTTP API that users can use and query IP Data.\n- Efficient and Low Memory Footprint: Built with Rust for safety and performance also to minimize memory footprint during database updates and normal operations.\n- Configurable: Allows users to select which edition of the MaxMind databases they want to use (e.g., GeoLite2, GeoIP2, Enterprise, ISP).\n\n## Running Atlas\n\nTo run Atlas, you can choose one of the methods below.\n\n### Using Docker (Recommended)\n\nWe automatically build docker images of Atlas and push them to [docker hub](https://hub.docker.com/r/alisinabh/atlas).\n\nYou can easily run our docker image which automatically downloads the latest MaxMind DB like this.\n\n```\ndocker run -it --rm \\\n  -e \"MAXMIND_ACCOUNT_ID={account id here}\" \\\n  -e \"MAXMIND_LICENSE_KEY={license_key_here}\" \\\n  -p 8080:8080 \\\n  alisinabh/atlas\n```\n\nSame image can be used for deploying Atlas to Kubernetes or other orchestration platforms. By default, the databases will be saved at\n`/opt/atlas/db` directory. It is recommended to mount this path to a persistant storage medium to avoid downloading a new DB on every restart.\n\nFor more configuration variables, visit [Configuration](#configuration) section.\n\n### Compiling from source\n\nFirstly, make sure you have rustc and cargo installed. Then after cloning the repository you can\nsimply run the following command to build a release binary to use in your service.\n\n```\ncargo build --release\n```\n\nYou can find the release binaries at `target/release/atlas`. Then you can run atlas by running\n`./target/release/atlas` in your terminal. Make sure that the `DB_PATH` directory already exists\notherwise atlas crashes on startup.\n\n## API Documentation\n\nAtlas generates OpenApi 3.0 specifications for its APIs. We host our main branch docs at https://atlas-rs.fly.dev/swagger-ui/.\n\nYou can also enable the `/swagger-ui` endpoint locally or in your deployments by setting `SWAGGER_UI_ENABLED` to `true`.\n\n## Configuration\n\nAtlas uses OS environment variables for configuration. Here are the list of environment variables\nthat atlas looks into.\n\n- `MAXMIND_ACCOUNT_ID`: Your Maxmind Account ID used to download the database. **Required** (Get GeoLite2 databses for free at https://dev.maxmind.com/geoip/geolite2-free-geolocation-data)\n- `MAXMIND_LICENSE_KEY`: Your Maxmind license key used to download the database. **Required** (Generate a License Key from maxmind portal)\n- `MAXMIND_DB_VARIANT`: (Also called Edition ID) The database edition to used. Default is `GeoLite2-City`.\n- `MAXMIND_DB_DOWNLOAD_URL`: Database download URL (only change if your download URL differs). Default is `https://download.maxmind.com/geoip/databases/{VARIANT}/download?suffix=tar.gz`. `{VARIANT}` literal will be replaced by `MAXMIND_DB_VARIANT` value.\n\n\u003c!-- --\u003e\n\n- `DB_PATH`: Default path to save databases in. Default is `/opt/atlas/db`.\n- `DB_UPDATE_INTERVAL_SECONDS`: How often to check for updates in seconds. Default is a day (86400s).\n- `HOST`: Host to serve Atlas API on. Default is `0.0.0.0`.\n- `PORT`: Port number to serve Atlas API on. Default is `8080`.\n- `SWAGGER_UI_ENABLED`: If set to `true` swagger UI will be served on `http://{HOST}:{PORT}/swagger-ui` endpoint. Default is `false`.\n\n## Contribution\n\nContributions to Atlas are very welcome! Before undertaking any substantial work, please consider\nopening an issue to discuss ideas and planned approaches so we can ensure we keep progress moving\nin the same direction. Always remember to be respectful of others.\n\n## License\n\n[Apache License 2.0](/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falisinabh%2Fatlas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falisinabh%2Fatlas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falisinabh%2Fatlas/lists"}