trails/docs/ideas/self-host-overpass
Ullrich Schäfer 96de8831cf
poi-index: Grafana dashboard/alert, docs, privacy manifest
- planner dashboard: replace Overpass panels with POI index freshness +
  serving panels (age, rows/category, import status, API request rate/errors)
- alerts: replace overpass-upstream-unhealthy with poi-index-stale (>6 weeks)
- architecture.md: POI data flow now the self-hosted index
- privacy manifest (DE+EN): Overpass is Journal-surface-backfill-only;
  Planner POIs served same-origin from /api/pois
- self-host-overpass README + roadmap: superseded for POIs by poi-index
- poi-extract README: self-hoster story (optional pipeline, regional extract,
  graceful empty index)
- map-core tsconfig: exclude *.sync.test.ts from tsc to keep it zero-dep

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 22:54:51 +02:00
..
specs Park self-host-overpass spec under docs/ideas 2026-04-19 07:40:44 +02:00
.openspec.yaml Park self-host-overpass spec under docs/ideas 2026-04-19 07:40:44 +02:00
design.md Park self-host-overpass spec under docs/ideas 2026-04-19 07:40:44 +02:00
proposal.md Park self-host-overpass spec under docs/ideas 2026-04-19 07:40:44 +02:00
README.md poi-index: Grafana dashboard/alert, docs, privacy manifest 2026-07-12 22:54:51 +02:00
tasks.md Park self-host-overpass spec under docs/ideas 2026-04-19 07:40:44 +02:00

self-host-overpass (parked — superseded for POIs)

Full OpenSpec artifact set (proposal.md, design.md, specs/, tasks.md) for hosting our own Overpass API. Moved here from openspec/changes/ so it does not clutter the active change list; revive by moving the directory back under openspec/changes/ when ready to implement.

Status

Superseded for the Planner's POI overlays by the poi-index change (shipped), which removes Overpass from the POI path entirely: instead of running the Overpass software, a monthly osmium extract feeds a self-hosted PostGIS planner.pois index served at /api/pois. That is lighter than this plan (no Overpass engine, no diff replication, no RAM ceiling) and covers every current POI need — all queries were simple tag-in-bbox lookups that never used Overpass QL.

The former interim proxy (/api/overpassoverpass.private.coffee) has been removed.

Still relevant if we ever need genuine Overpass QL (arbitrary ad-hoc queries, recursion, around:, set operations) that a precomputed category index can't answer — that's the remaining reason to revive this. The Journal's surface-breakdown backfill still queries public Overpass instances for way geometry; owning that upstream is the other revive trigger.

When to revive

Revisit once any of these is true:

  • private.coffee rate-limits our traffic or changes policy
  • Our query volume makes continued use of a free public instance feel like abuse (rule of thumb: >1 req/s sustained)
  • We want POI coverage outside regions private.coffee happens to import
  • Privacy posture requires full control of the upstream

Key decisions already made

  • Topology: Overpass runs on the maintainer's second Hetzner box (FSN1, dedicated, i7-2600, 32 GB, 2×3 TB HDD, 1.8 TB free). Both hosts share Hetzner's internal backbone with ~1 ms RTT.
  • Access control: host-level firewall via nftables DOCKER-USER chain (Docker bypasses INPUT when publishing ports, which is the classic gotcha). Only the Planner host's egress IP is allowed on the Overpass port. Planner host IP lives in /etc/overpass/planner-ip.env on the Overpass box, not in the repo. Tailscale / WireGuard / vSwitch kept as future hardening options.
  • Capacity ceiling on current hardware: DACH extract fits comfortably in the 23 GB of RAM available on the Overpass box. Europe+ would need different hardware (AX52 ≈ €54/mo for a dedicated 64 GB NVMe box that handles planet at low user counts; see design.md).
  • Switch path: no client changes needed to cut over — the Planner proxy reads OVERPASS_URLS (comma-separated list with round-robin fallback) or the single-entry alias OVERPASS_URL, defaulting to lz4.overpass-api.de then overpass-api.de. Flipping the env var points at our own instance.

What's in the folder

  • proposal.md — why / what / impact
  • design.md — topology, firewall pattern, capacity analysis, risks
  • specs/ — delta specs (would land against overpass-hosting, osm-poi-overlays, infrastructure, rate-limiting)
  • tasks.md — 10 groups of implementation tasks
  • .openspec.yaml — OpenSpec scaffolding; keep for when it comes back