How to set up geocoding for self-hosted Dawarich
Short answer: add three environment variables to Dawarich's .env, then
restart the containers.
PHOTON_API_HOST=app.chibigeo.com/v1/photon
PHOTON_API_KEY=ck_your_key_here
PHOTON_API_USE_HTTPS=true
Dawarich turns location history into a private map of everywhere you've been. To label those places with real addresses and detect visits, Dawarich reverse-geocodes its points through Photon. Self-hosting that Photon instance means running a full planet index: about 95 GB of SSD, and per Photon's own documentation 64 GB of RAM for smooth operation. ChibiGeo runs a planet Photon so a self-hosted Dawarich can point at it instead, at a flat monthly rate with no overage.
Dawarich Cloud users do not need this. Geocoding is already included. This guide is only for people running Dawarich on their own hardware.
What does a geocoding key for Dawarich cost?
ChibiGeo's Self-Hoster plan costs €9.99/mo and is built for supported
self-hosted apps including Dawarich — enough headroom to geocode years of
history and keep tracking afterwards — 500,000 requests per month. ChibiGeo's
free Hobby plan allows 2,500 requests per day, which is enough to
evaluate the integration but not to backfill a long timeline. Create a key at
app.chibigeo.com; keys are prefixed
ck_.
How do I point self-hosted Dawarich at a hosted Photon geocoder?
Add three environment variables to the Dawarich .env file, or to the
environment: block of docker-compose.yml, then restart the Dawarich
containers so they pick up the new environment.
PHOTON_API_HOST=app.chibigeo.com/v1/photon
PHOTON_API_KEY=ck_your_key_here
PHOTON_API_USE_HTTPS=true
| Variable | Value | Why |
|---|---|---|
PHOTON_API_HOST | app.chibigeo.com/v1/photon | The host including the /v1/photon path prefix — Dawarich's geocoder interpolates it verbatim onto /api and /reverse |
PHOTON_API_KEY | your ck_… key | Sent as X-Api-Key; authenticates every geocode request |
PHOTON_API_USE_HTTPS | true | ChibiGeo is HTTPS-only |
How do I verify Dawarich is geocoding through ChibiGeo?
From the Dawarich host, call both ChibiGeo endpoints directly with the API key.
Each should return a GeoJSON FeatureCollection whose properties are
populated with name, city and country.
# Forward geocode
curl -H "X-Api-Key: ck_your_key_here" \
"https://app.chibigeo.com/v1/photon/api?q=Brandenburg%20Gate&limit=1"
# Reverse geocode (the shape Dawarich's visit detection uses)
curl -H "X-Api-Key: ck_your_key_here" \
"https://app.chibigeo.com/v1/photon/reverse?lat=52.516&lon=13.377&limit=10&radius=1"
Then, inside Dawarich, trigger reverse-geocoding for a point or run a visit-detection pass. Places should come back with names instead of blanks.
Why are my Dawarich places still unnamed?
Three causes account for nearly every failed setup.
| Symptom | Cause | Fix |
|---|---|---|
| Places stay unnamed | Wrong host path or key | Confirm PHOTON_API_HOST includes the /v1/photon prefix; re-check the key |
| Geocoding silently skips points | Request cap reached — ChibiGeo returns 429, rescued by Dawarich's fetcher | Check usage in the ChibiGeo dashboard; raise the plan if needed |
401 in the Dawarich logs | Key missing or revoked | Ensure PHOTON_API_KEY is set and current |
Is a hosted geocoder a privacy trade-off?
ChibiGeo is EU-hosted and treats submitted coordinates as transient query data rather than a stored profile. Keeping geocoding entirely in-house remains an option — ChibiGeo is the convenience path, not a lock-in. See what it takes to self-host Photon for the honest hardware numbers.
FAQ
Do Dawarich Cloud users need a ChibiGeo key? No. Dawarich Cloud includes geocoding. A ChibiGeo key is only needed when running Dawarich on your own hardware.
What hardware does a self-hosted planet Photon need? About 95 GB of SSD for the search index, and per Photon's own documentation 64 GB of RAM for smooth operation.
Does PHOTON_API_HOST include the path prefix?
Yes. Set PHOTON_API_HOST=app.chibigeo.com/v1/photon, including the
/v1/photon prefix. Dawarich's geocoder interpolates the value verbatim onto
/api and /reverse.
What happens when the ChibiGeo request cap is reached?
ChibiGeo returns HTTP 429 and Dawarich's fetcher rescues it, so geocoding is
skipped silently rather than crashing. Usage is visible in the ChibiGeo
dashboard.