geo.ryta.online: self-hosted maps API
Self-hosted OpenStreetMap stack for Russia/CIS: vector tiles, Photon geocoder and a metered API gateway with paid plans
A complete self-hosted geo backend built to free the RYTA app from third-party map APIs: 13 Geofabrik extracts merged, imported into PostGIS via osm2pgsql, rendered to a PMTiles vector...

A complete self-hosted geo backend built to free the RYTA app from third-party map APIs: 13 Geofabrik extracts merged, imported into PostGIS via osm2pgsql, rendered to a PMTiles vector basemap (Planetiler/tippecanoe) and indexed for Photon forward/reverse geocoding in Russian and English.
A Node/Express gateway fronts it as a small SaaS: phone-verified sign-up, scoped API keys for geocoding and tiles, per-plan quotas with HTTP 429, T-Bank billing, dashboard and admin.
Supporting tools include an OSM box editor that round-trips JOSM edits into the basemap and a live ST_AsMVT map viewer over PostGIS.
What it does
- Full OSM pipeline for Russia + 12 CIS neighbours: merge PBF extracts, osm2pgsql into PostGIS, build ~10 GB PMTiles basemap, ship it as a static file served with range requests
- Photon geocoder index built off-server from a Nominatim import (build heavy, serve light: ~5.5 GB index, ~2 GB heap) with RU/EN autocomplete and reverse geocoding
- Metered API gateway: two key scopes (geocode rgk_*, maps rmk_*), daily/monthly quotas, 429 on overrun, usage dashboard, keyless public demo
- Passwordless phone-only auth with inbound-call verification via Rostelecom VATS signed webhook; Free/Starter/Business plans paid through T-Bank
- geo-demo: MapLibre test bench showing Photon timing stats, per-result OSM tags, click-to-reverse-geocode and vector-tile feature inspector
- edit-osm: Flask tool to draw a bounding box on your own map, cut it with osmium, edit in JOSM via Remote Control, merge back and rebuild the basemap; plus an OSM API-DB (cgimap) experiment
- pg-map / martin / kepler.gl: on-the-fly MVT tiles straight from PostGIS with ST_AsMVT, Martin tile server config, kepler.gl v3 over pg_featureserv without a Mapbox token
- Two deployment targets (evgen VPS reusing an existing Photon, and main-server with a private registry) driven by dry-run-capable PowerShell scripts and Caddy host blocks
Independence from Google/Yandex map APIs for the whole CIS region on a 2 GB RAM VPS thanks to a build-heavy/serve-light split (PMTiles static file + compact Photon index); well-reasoned architecture docs with sizing math (osm2pgsql cache vs flat-nodes, disk multipliers); a SaaS layer (keys, quotas, billing) built in a few weeks; QGIS/JOSM editing loop that keeps custom places both on the map and in search.
Want something like this?
I build it live on a Zoom call, you watch the screen, the timer stops when you say stop. First 15 minutes are free.