Self-hosted mapping stack. One command per country.
Replace Google Maps API - no API keys, no rate limits, no vendor lock-in.
Routing via Valhalla 3.8.3, geocoding via Photon 1.2.1.
docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/cyprus
Images are multi-arch: linux/amd64 and linux/arm64 (Apple Silicon, AWS Graviton).
Try the stack without installing - the same services for all supported countries at https://api.getmapstack.com (/valhalla and /photon prefixes):
curl https://api.getmapstack.com/valhalla/route \
-d '{"locations":[{"lat":35.18,"lon":33.38},{"lat":34.67,"lon":33.04}],"costing":"auto"}'
curl "https://api.getmapstack.com/photon/api?q=Nicosia&limit=1"
Please keep your usage fair. No SLA - this is a demo that may change or disappear; run your own container for unlimited use.
Routing - Nicosia to Limassol:
curl localhost:8002/route \
-d '{"locations":[{"lat":35.18,"lon":33.38},{"lat":34.67,"lon":33.04}],"costing":"auto"}'
{"trip":{"summary":{"length":84.229,"time":3743.53,"has_highway":true}}}Geocoding - search for "Nicosia":
curl "localhost:2322/api?q=Nicosia&limit=1"
{"features":[{"properties":{"name":"Λευκωσία - Lefkoşa","type":"district","country":"Κύπρος - Kıbrıs"}}]}Reverse geocoding - coordinates to address:
curl "localhost:2322/reverse?lon=33.3825&lat=35.1853&limit=1"
{"features":[{"properties":{"street":"Zappeiou","housenumber":"21","city":"Λευκωσία"}}]}Full API docs: Valhalla API · Photon API
| Country | Size | Run | |
|---|---|---|---|
| 🇧🇪 | Belgium | 1.9 GB | docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/belgium |
| 🇧🇳 | Brunei | 0.5 GB | docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/brunei |
| 🇨🇾 | Cyprus | 0.3 GB | docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/cyprus |
| 🇮🇩 | Indonesia | 1.5 GB | docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/indonesia |
| 🇰🇿 | Kazakhstan | 1.0 GB | docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/kazakhstan |
| 🇲🇾 | Malaysia | 0.8 GB | docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/malaysia |
| 🇸🇬 | Singapore | 0.6 GB | docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/singapore |
| 🇰🇷 | South Korea | 1.5 GB | docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/south-korea |
| 🇻🇳 | Vietnam | 0.9 GB | docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/vietnam |
Requires Docker. Build a country image locally instead of pulling from GHCR:
git clone https://github.com/roma8ok/getmapstack.git
cd getmapstack
make build-valhalla-builder
make build-photon-builder
make create-valhalla-tiles COUNTRY=cyprus
make create-photon-data COUNTRY=cyprus
make build-server COUNTRY=cyprus
docker run -p 8002:8002 -p 2322:2322 getmapstack/cyprus
Intermediate artifacts (routing tiles, geocoding index) land in artifacts/. Images build for linux/amd64 and linux/arm64 by default - pass PLATFORMS=linux/arm64 (or your platform) for a faster single-arch build. make help lists all targets and available countries.
Code: MIT. Map data: © OpenStreetMap contributors, ODbL 1.0, sourced from Geofabrik extracts.
The images embed OSM-derived databases (routing tiles, geocoding index) redistributed under ODbL 1.0 - see NOTICE for full attribution. If you publicly use routing or geocoding results from these images, credit OpenStreetMap: "© OpenStreetMap contributors" linked to openstreetmap.org/copyright.