Photon
Photon est un géocodeur libre basé sur les données OpenStreetMap. Ici, il sert au géocodage inverse de Dawarich : il transforme des coordonnées GPS en adresse et en nom de lieu, sans envoyer les positions à un service externe et sans limite de requêtes.
L'image utilisée est rtuszik/photon-docker, une image non officielle qui télécharge l'index, le met à jour et lance Photon. Documentation de référence : dépôt GitHub.
Stack
networks:
proxy:
external: true
services:
photon:
image: rtuszik/photon-docker:latest
container_name: photon
environment:
REGION: europe
UPDATE_STRATEGY: SEQUENTIAL
UPDATE_INTERVAL: 720h
LOG_LEVEL: INFO
volumes:
- photon_data:/photon/data
networks:
- proxy
ports:
- "2322:2322"
restart: unless-stopped
volumes:
photon_data:
Choisir la région
La variable REGION détermine la zone couverte par l'index. Un point situé hors de la zone n'est pas géocodé : il reste sans adresse dans Dawarich. La région doit donc couvrir tous les endroits où l'on se déplace, voyages compris, et pas seulement le pays où l'on habite.
L'image propose deux modes d'import, choisis avec IMPORT_MODE.
Mode db (par défaut, recommandé)
L'image télécharge un index déjà construit. Une seule région est possible, et seulement parmi celles qui ont un index prêt. C'est le mode utilisé ici.
| Niveau | Valeurs de REGION |
|---|---|
| Monde | planet |
| Continents | africa, asia, australia-oceania, europe, north-america, south-america |
| Asie | india (in), japan (jp) |
| Europe | andorra (ad), austria (at), denmark (dk), france-monacco (fr, france, monaco), germany (de), luxemburg (lu, luxembourg), netherlands (nl), russia (ru), slovakia (sk), spain (es) |
| Amérique du Nord | canada (ca), mexico (mx), usa (us) |
| Amérique du Sud | argentina (ar) |
Les valeurs entre parenthèses sont des alias acceptés. L'orthographe france-monacco est bien celle attendue par l'image.
Un pays absent de cette liste (Royaume-Uni, Italie, Belgique, Suisse, Portugal…) n'a pas d'index prêt : il faut prendre le continent qui le contient, ou passer en mode jsonl.
Mode jsonl (expérimental)
L'image construit elle-même l'index à partir des exports OpenStreetMap. Ce mode permet de combiner plusieurs pays et donne accès à des pays européens sans index prêt.
Pays disponibles uniquement en mode jsonl : albania (al), baltics (ee, lt, lv), belarus (by), belgium (be), bosnia-herzegovina (ba), british-islands (uk), bulgaria (bg), croatia (hr), cyprus (cy), czech-republic (cz), finland (fi), georgia (ge), greece (gr), hungary (hu), iceland-faroe (is), ireland (ie), italy (it), kosovo (xk), macedonia (mk), malta (mt), moldova (md), montenegro (me), norway (no), poland (pl), portugal (pt), romania (ro), serbia (rs), slovenia (si), sweden (se), switzerland-liechtenstein (ch), turkey (tr), ukraine (ua).
Toutes les régions du mode db sont aussi disponibles en jsonl.
Exemple pour la France, le Royaume-Uni et le Portugal :
IMPORT_MODE: jsonl
REGION: fr,uk,pt
LANGUAGES: fr,en
REVERSE_ONLY: "TRUE"
- REVERSE_ONLY construit un index limité au géocodage inverse, environ 60 % plus léger. C'est suffisant pour Dawarich, mais la recherche d'adresse (/api) ne fonctionne plus.
- LANGUAGES limite les langues importées pour les noms de lieux.
- Quand plusieurs pays sont demandés, l'image télécharge le plus petit export qui les contient tous (un continent, ou le monde), puis filtre.
- Pas de mise à jour automatique : UPDATE_STRATEGY et UPDATE_INTERVAL sont ignorés. Pour reconstruire l'index, ajouter FORCE_UPDATE: "TRUE" ou supprimer le volume.
- L'import est long : plusieurs heures pour un continent.
Quel choix faire
| Situation | Réglage conseillé |
|---|---|
| Un seul pays, avec index prêt | Mode db, le pays (REGION: fr) |
| Plusieurs pays d'un même continent, dont un sans index prêt | Mode db, le continent ; ou mode jsonl avec la liste des pays si l'espace disque manque |
| Déplacements sur plusieurs continents | Mode db, planet |
| Pays sans index prêt, hors Europe | Mode db, le continent |
Ici : europe en mode db, pour couvrir la France, le Royaume-Uni et le Portugal, ces deux derniers n'ayant pas d'index prêt.
Espace disque et premier démarrage
Les tailles évoluent avec les données OpenStreetMap et celles annoncées par le dépôt sont approximatives. Ordres de grandeur : environ 61 Go compressés pour planet en mode db, 26 Go pour l'export jsonl du monde.
Mesure réelle ici pour europe en mode db : environ 29 Go téléchargés, 47 Go une fois extraits, et une heure avant la première réponse de l'API.
L'image vérifie l'espace disponible avant de télécharger. Pendant le premier téléchargement, le conteneur est marqué unhealthy, c'est normal.
Mises à jour de l'index
| UPDATE_STRATEGY | Fonctionnement | Espace nécessaire |
|---|---|---|
| SEQUENTIAL | Arrête Photon, supprime l'index, télécharge le nouveau, redémarre. Géocodage indisponible pendant l'opération. | 1 index |
| PARALLEL | Télécharge le nouvel index en arrière-plan puis bascule. Coupure minimale. | 2 index |
| DISABLED | Aucune mise à jour automatique. | 1 index |
UPDATE_INTERVAL fixe l'âge minimal de l'index avant de chercher une nouvelle version (720h = 30 jours).
Ici : SEQUENTIAL, pour ne pas avoir à réserver la place de deux index. Si Dawarich demande un géocodage pendant la mise à jour, le point reste sans adresse et peut être regéocodé plus tard.
Changer de région
# Modifier REGION (et IMPORT_MODE si besoin) dans la stack.
# Arrêter la stack et supprimer le volume de l'ancien index :
docker volume rm <VOLUME_PHOTON>
# Redéployer la stack : le nouvel index est téléchargé.
Connexion à Dawarich
Sur les deux conteneurs dawarich_app et dawarich_sidekiq :
PHOTON_API_USE_HTTPS: "false"
- Les deux conteneurs doivent être sur le même réseau Docker que Photon.
- Indiquer seulement l'hôte et le port, sans /api à la fin.
- PHOTON_API_USE_HTTPS ne passe à true que si Photon est servi en HTTPS.
Vérifier que Photon répond
Depuis le conteneur Dawarich, sans passer par le port publié :
La réponse est un JSON contenant une adresse. Une erreur de connexion signifie que Photon n'est pas démarré, pas encore prêt, ou pas sur le même réseau. Une réponse vide pour des coordonnées précises signifie que le point est hors de la région choisie.
Journaux de téléchargement et de démarrage :
Sauvegarde
L'index n'est pas sauvegardé : il se retélécharge. Seule la stack compte, et elle est dans cette page.