# OSM-POI Offline-Refresh (Build 4) Ersetzt das Live-Scannen gegen `overpass-api.de` (war wiederholt OSM-Bann-Quelle) durch einen **monatlichen Offline-Batch**: POIs werden aus den Geofabrik-OSM-Daten extrahiert und in die Produktiv-DB geladen. Danach keine OSM-Live-Last mehr. ## Bestandteile | Datei | Zweck | |---|---| | `extract_osm_pois.py` | pbf → `osm_pois`-Schema (pyosmium). Kanonisches Kategorie→Tag-Mapping. | | `load_into_prod.py` | Extrakt → Produktiv-DB. Schützt `user_edited=1`, ersetzt den Rest. | | `refresh.sh` | Orchestrierung im Container: download → tags-filter → extract → load. | | `Dockerfile` | Image mit osmium-tool + pyosmium. | | `../../docker-compose.osm.yml` | Eigener Service, **nicht** im Default-Stack. | ## Was es tut - Lädt CH/AT/DE von Geofabrik (~5,7 GB), dampft sie mit `osmium tags-filter` (streaming, <500 MB RAM) auf die relevanten Objekte ein, extrahiert die 9 Ban-Yaro-Kategorien und lädt sie in `/data/banyaro.db`. - **Sicherheitskopie** der DB vor jedem Lauf (letzte 3 bleiben). - `user_edited=1`-POIs und `user_map_pois` (Community-Marker) bleiben unberührt. - Peak-RAM ~1–2 GB, hartes `mem_limit: 4g` als Schutzschranke. - Aktuelle Größenordnung: DACH ~1,45 Mio POIs, ~180 MB. ## Manuell ausführen (Test) ```sh cd /pfad/zu/banyaro # dort, wo docker-compose.yml liegt docker compose -f docker-compose.osm.yml build docker compose -f docker-compose.osm.yml run --rm osm-refresh ``` ## Monatlich per DSM-Aufgabenplaner 1. **Systemsteuerung → Aufgabenplaner → Erstellen → Geplante Aufgabe → Benutzerdefiniertes Skript** 2. Benutzer: `root` (für Docker-Zugriff) 3. Zeitplan: **monatlich**, z. B. am 1. um 04:00 (lastarm) 4. Aufgabeneinstellungen → Benutzerdefiniertes Skript: ```sh cd /volume1/docker/banyaro && \ /usr/local/bin/docker compose -f docker-compose.osm.yml run --rm osm-refresh \ >> /volume1/docker/banyaro/data/osm-refresh.log 2>&1 ``` > Pfad `/volume1/docker/banyaro` an euer Compose-Verzeichnis anpassen. > Docker-Binary auf DSM ist meist `/usr/local/bin/docker` (`docker compose`), > bei älteren DSM ggf. `docker-compose`. ## Rollback Vor jedem Lauf wird `banyaro.pre-osm-JJJJMMTT.db` neben der DB abgelegt. Im Notfall App stoppen, diese Datei auf `banyaro.db` zurückkopieren, App starten.