Skip to main content

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.

note

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
VariableValueWhy
PHOTON_API_HOSTapp.chibigeo.com/v1/photonThe host including the /v1/photon path prefix — Dawarich's geocoder interpolates it verbatim onto /api and /reverse
PHOTON_API_KEYyour ck_… keySent as X-Api-Key; authenticates every geocode request
PHOTON_API_USE_HTTPStrueChibiGeo 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.

SymptomCauseFix
Places stay unnamedWrong host path or keyConfirm PHOTON_API_HOST includes the /v1/photon prefix; re-check the key
Geocoding silently skips pointsRequest cap reached — ChibiGeo returns 429, rescued by Dawarich's fetcherCheck usage in the ChibiGeo dashboard; raise the plan if needed
401 in the Dawarich logsKey missing or revokedEnsure 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.