Fullstack· 2025
Self-hosted vector map stack
Replaced paid map APIs with a self-hosted tile server, cutting map costs to zero.
- Docker
- Nginx
- Planetiler
- TileServer GL
- MapLibre
The problem
Commercial map APIs charge per map load; for a taxi app where the map is always open, that doesn't scale.
What I built
OpenStreetMap data processed with Planetiler into vector tiles, served by TileServer GL behind an Nginx reverse proxy, containerised with Docker; MapLibre on the client.
Technical challenges
- Tile generation and storage sizing.
- HTTPS and cleartext-traffic configuration for Android and iOS ATS.
- Cache strategy to keep maps fast on slow mobile connections.