Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{toc depth="2"/}} | ||
| 2 | |||
| 3 | Photon est un géocodeur libre basé sur les données OpenStreetMap. Ici, il sert au géocodage inverse de [[Dawarich>>Wiki Batcave John.Infrastructure.ServeurPrincipal.Dawarich.WebHome]] : 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. | ||
| 4 | |||
| 5 | 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>>https://github.com/rtuszik/photon-docker]]. | ||
| 6 | |||
| 7 | == Stack == | ||
| 8 | |||
| 9 | {{code language="yaml"}} | ||
| 10 | name: photon | ||
| 11 | |||
| 12 | networks: | ||
| 13 | proxy: | ||
| 14 | external: true | ||
| 15 | |||
| 16 | services: | ||
| 17 | photon: | ||
| 18 | image: rtuszik/photon-docker:latest | ||
| 19 | container_name: photon | ||
| 20 | environment: | ||
| 21 | REGION: europe | ||
| 22 | UPDATE_STRATEGY: SEQUENTIAL | ||
| 23 | UPDATE_INTERVAL: 720h | ||
| 24 | LOG_LEVEL: INFO | ||
| 25 | volumes: | ||
| 26 | - photon_data:/photon/data | ||
| 27 | networks: | ||
| 28 | - proxy | ||
| 29 | ports: | ||
| 30 | - "2322:2322" | ||
| 31 | restart: unless-stopped | ||
| 32 | |||
| 33 | volumes: | ||
| 34 | photon_data: | ||
| 35 | {{/code}} | ||
| 36 | |||
| 37 | {{info}} | ||
| 38 | Dawarich joint Photon par le réseau Docker ##proxy## (##photon:2322##). Le port publié sur l'hôte n'est utile que pour interroger Photon depuis une autre machine du réseau local ; il expose une API sans authentification. | ||
| 39 | {{/info}} | ||
| 40 | |||
| 41 | == Choisir la région == | ||
| 42 | |||
| 43 | 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. | ||
| 44 | |||
| 45 | {{warning}} | ||
| 46 | Sans variable ##REGION##, l'image télécharge l'index du monde entier (##planet##). | ||
| 47 | {{/warning}} | ||
| 48 | |||
| 49 | L'image propose deux modes d'import, choisis avec ##IMPORT_MODE##. | ||
| 50 | |||
| 51 | === Mode db (par défaut, recommandé) === | ||
| 52 | |||
| 53 | 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. | ||
| 54 | |||
| 55 | |=Niveau|=Valeurs de REGION | ||
| 56 | |Monde|##planet## | ||
| 57 | |Continents|##africa##, ##asia##, ##australia-oceania##, ##europe##, ##north-america##, ##south-america## | ||
| 58 | |Asie|##india## (##in##), ##japan## (##jp##) | ||
| 59 | |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##) | ||
| 60 | |Amérique du Nord|##canada## (##ca##), ##mexico## (##mx##), ##usa## (##us##) | ||
| 61 | |Amérique du Sud|##argentina## (##ar##) | ||
| 62 | |||
| 63 | Les valeurs entre parenthèses sont des alias acceptés. L'orthographe ##france-monacco## est bien celle attendue par l'image. | ||
| 64 | |||
| 65 | 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. | ||
| 66 | |||
| 67 | === Mode jsonl (expérimental) === | ||
| 68 | |||
| 69 | 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. | ||
| 70 | |||
| 71 | 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##). | ||
| 72 | |||
| 73 | Toutes les régions du mode db sont aussi disponibles en jsonl. | ||
| 74 | |||
| 75 | Exemple pour la France, le Royaume-Uni et le Portugal : | ||
| 76 | |||
| 77 | {{code language="yaml"}} | ||
| 78 | environment: | ||
| 79 | IMPORT_MODE: jsonl | ||
| 80 | REGION: fr,uk,pt | ||
| 81 | LANGUAGES: fr,en | ||
| 82 | REVERSE_ONLY: "TRUE" | ||
| 83 | {{/code}} | ||
| 84 | |||
| 85 | * ##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. | ||
| 86 | * ##LANGUAGES## limite les langues importées pour les noms de lieux. | ||
| 87 | * 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. | ||
| 88 | * **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. | ||
| 89 | * L'import est long : plusieurs heures pour un continent. | ||
| 90 | |||
| 91 | === Quel choix faire === | ||
| 92 | |||
| 93 | |=Situation|=Réglage conseillé | ||
| 94 | |Un seul pays, avec index prêt|Mode db, le pays (##REGION: fr##) | ||
| 95 | |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 | ||
| 96 | |Déplacements sur plusieurs continents|Mode db, ##planet## | ||
| 97 | |Pays sans index prêt, hors Europe|Mode db, le continent | ||
| 98 | |||
| 99 | 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. | ||
| 100 | |||
| 101 | == Espace disque et premier démarrage == | ||
| 102 | |||
| 103 | 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. | ||
| 104 | |||
| 105 | 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. | ||
| 106 | |||
| 107 | 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. | ||
| 108 | |||
| 109 | == Mises à jour de l'index == | ||
| 110 | |||
| 111 | |=UPDATE_STRATEGY|=Fonctionnement|=Espace nécessaire | ||
| 112 | |##SEQUENTIAL##|Arrête Photon, supprime l'index, télécharge le nouveau, redémarre. Géocodage indisponible pendant l'opération.|1 index | ||
| 113 | |##PARALLEL##|Télécharge le nouvel index en arrière-plan puis bascule. Coupure minimale.|2 index | ||
| 114 | |##DISABLED##|Aucune mise à jour automatique.|1 index | ||
| 115 | |||
| 116 | ##UPDATE_INTERVAL## fixe l'âge minimal de l'index avant de chercher une nouvelle version (##720h## = 30 jours). | ||
| 117 | |||
| 118 | 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. | ||
| 119 | |||
| 120 | == Changer de région == | ||
| 121 | |||
| 122 | # Modifier ##REGION## (et ##IMPORT_MODE## si besoin) dans la stack. | ||
| 123 | # Arrêter la stack et supprimer le volume de l'ancien index :((( | ||
| 124 | {{code language="bash"}} | ||
| 125 | docker volume ls | grep photon | ||
| 126 | docker volume rm <VOLUME_PHOTON> | ||
| 127 | {{/code}} | ||
| 128 | ))) | ||
| 129 | # Redéployer la stack : le nouvel index est téléchargé. | ||
| 130 | |||
| 131 | == Connexion à Dawarich == | ||
| 132 | |||
| 133 | Sur **les deux** conteneurs ##dawarich_app## et ##dawarich_sidekiq## : | ||
| 134 | |||
| 135 | {{code language="yaml"}} | ||
| 136 | PHOTON_API_HOST: photon:2322 | ||
| 137 | PHOTON_API_USE_HTTPS: "false" | ||
| 138 | {{/code}} | ||
| 139 | |||
| 140 | * Les deux conteneurs doivent être sur le même réseau Docker que Photon. | ||
| 141 | * Indiquer seulement l'hôte et le port, sans ##/api## à la fin. | ||
| 142 | * ##PHOTON_API_USE_HTTPS## ne passe à ##true## que si Photon est servi en HTTPS. | ||
| 143 | |||
| 144 | == Vérifier que Photon répond == | ||
| 145 | |||
| 146 | Depuis le conteneur Dawarich, sans passer par le port publié : | ||
| 147 | |||
| 148 | {{code language="bash"}} | ||
| 149 | docker exec dawarich_app wget -qO- "http://photon:2322/reverse?lat=48.8584&lon=2.2945" | ||
| 150 | {{/code}} | ||
| 151 | |||
| 152 | 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. | ||
| 153 | |||
| 154 | Journaux de téléchargement et de démarrage : | ||
| 155 | |||
| 156 | {{code language="bash"}} | ||
| 157 | docker logs -f photon | ||
| 158 | {{/code}} | ||
| 159 | |||
| 160 | == Sauvegarde == | ||
| 161 | |||
| 162 | L'index n'est pas sauvegardé : il se retélécharge. Seule la stack compte, et elle est dans cette page. |