Hosted Photon geocoding for GeoPulse
GeoPulse is a self-hosted, privacy-first location timeline platform with built-in support for Photon reverse geocoding. ChibiGeo is a hosted Photon endpoint — flat-rate, EU-only, hard-capped — that GeoPulse's Photon provider talks to natively.
GeoPulse's Photon provider has no separate API-key field, so you carry your ChibiGeo key in the base URL as a path segment. No GeoPulse changes needed.
Prerequisites
- A running GeoPulse instance.
- A ChibiGeo API key (
ck_…). The Self-Hoster plan (€9.99/mo) covers supported self-hosted apps like GeoPulse. Get one at app.chibigeo.com.
Configuration
Set GeoPulse's geocoding environment variables (in your .env or the
geopulse-backend service's environment: block):
GEOPULSE_GEOCODING_PRIMARY_PROVIDER=photon
GEOPULSE_GEOCODING_PHOTON_ENABLED=true
GEOPULSE_GEOCODING_PHOTON_URL=https://app.chibigeo.com/v1/photon/ck_your_key_here
| Variable | Value | Why |
|---|---|---|
GEOPULSE_GEOCODING_PRIMARY_PROVIDER | photon | Use Photon (ChibiGeo) as the geocoder |
GEOPULSE_GEOCODING_PHOTON_ENABLED | true | Enable the Photon provider |
GEOPULSE_GEOCODING_PHOTON_URL | https://app.chibigeo.com/v1/photon/ck_your_key_here | Base URL with your key as the last path segment |
The key is part of the base URL. GeoPulse appends /reverse (or /api) to
it, so it sends:
GET https://app.chibigeo.com/v1/photon/ck_your_key_here/reverse?lon=…&lat=…
ChibiGeo reads the key from the path, authenticates, and returns the address.
Restart the geopulse-backend container to apply the change.
You can also set these under Admin → Settings → Geocoding if you prefer the UI over environment variables.
Verifying it works
Confirm the endpoint from a shell first:
curl "https://app.chibigeo.com/v1/photon/ck_your_key_here/reverse?lon=13.377&lat=52.516"
A GeoJSON FeatureCollection with populated properties (name, city, country)
means the key and URL are right. In GeoPulse, once significant places are
detected they'll be reverse-geocoded through ChibiGeo; you can re-run geocoding
from the Reverse Geocoding Management page.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
401 invalid_api_key | Wrong key in the base URL | Re-copy the key; ensure the URL ends with /v1/photon/<key> |
401 missing_api_key | Key segment missing | GEOPULSE_GEOCODING_PHOTON_URL must be …/v1/photon/<key>, not just …/v1/photon |
429 | Monthly cap reached | ChibiGeo hard-caps rather than billing overage — raise the plan |
| Still using Nominatim | Provider not switched | Set GEOPULSE_GEOCODING_PRIMARY_PROVIDER=photon and restart |
Why ChibiGeo
- vs
photon.komoot.io: a real cap and rate limit you can rely on, EU-only hosting, a status page. See photon.komoot.io rate limits. - vs self-hosting Photon: no ~95 GB planet index, no 64 GB RAM. See what it takes to self-host Photon.