Link POI popups to offline Wikipedia via kiwix-serve
lib/maptool/kiwix.rb: a small reachability check for an external kiwix-serve instance. GET /api/kiwix reports it (same optional- integration pattern as offline-tiles/terrain-tiles); the frontend adds a "Nearby on Wikipedia" link to a point's popup pointing straight at kiwix-serve's own geo search (GET /search?latitude=&longitude= &distance=, confirmed from libkiwix's actual source rather than guessed) — linked to directly, not proxied/embedded, since it already has a full search UI of its own. docker-compose.yaml: new `kiwix` service (ghcr.io/kiwix/kiwix-serve) on the default network, KIWIX_URL wired to reach it by service name. The ZIM itself isn't part of the repo (large, self-contained archive) — data/kiwix/ gitignored same as the *.pmtiles files, setup steps in docs/development.adoc. No kiwix-serve/ZIM available here to test end-to-end — verified the app side against a stand-in local HTTP server (GET /api/kiwix flips available correctly) and confirmed the generated popup link matches the real geo-search query shape. docker-compose.yaml validated with `docker-compose config`. Full test suite: 118 runs, 0 failures.
This commit is contained in:
1 parent
7cd3171998
commit
24ac5931f8
13 files changed
+150
-9
No files matched your search
@@ -21,6 +21,13 @@ services:
|
||||
# Optional: blank disables the LiveTrack webhook endpoint rather than
|
||||
# failing to start, since it's not needed for the app's core function.
|
||||
LIVETRACK_WEBHOOK_SECRET: ${LIVETRACK_WEBHOOK_SECRET:-}
|
||||
# The kiwix service below, reached by its compose service name (both
|
||||
# are on the same default compose network) — port matches its own
|
||||
# --port=8080 in the command below. Not made conditional on the ZIM
|
||||
# actually being present: GET /api/kiwix pings it and just reports
|
||||
# unavailable if the container isn't up/reachable, same story as
|
||||
# every other optional-local-file feature (offline.pmtiles, etc).
|
||||
KIWIX_URL: "http://kiwix:8080"
|
||||
volumes:
|
||||
# Uploaded GPX files and the offline PMTiles extract — kept outside
|
||||
# the image so a rebuild/redeploy doesn't wipe them (see
|
||||
@@ -43,3 +50,19 @@ services:
|
||||
restart: unless-stopped
|
||||
network_mode: "service:maptool"
|
||||
command: ["ruby", "bin/gnss_simulator.rb"]
|
||||
|
||||
# Serves an offline Wikipedia ZIM for the popup's "Nearby on Wikipedia"
|
||||
# link (see docs/development.adoc for where to get one and drop it in —
|
||||
# same "not part of the repo, place it under ./data locally" story as
|
||||
# offline.pmtiles/terrain.pmtiles). On the default compose network (not
|
||||
# network_mode: "service:maptool" — unlike gnss-simulator this doesn't
|
||||
# need a hardcoded localhost port, KIWIX_URL above reaches it by this
|
||||
# service's own name), so maptool and kiwix stay independent containers.
|
||||
# Keeps restarting (harmlessly) if data/kiwix/wikipedia.zim isn't there
|
||||
# yet — GET /api/kiwix just reports unavailable until it comes up.
|
||||
kiwix:
|
||||
image: ghcr.io/kiwix/kiwix-serve:latest
|
||||
restart: unless-stopped
|
||||
command: ["--port=8080", "/data/wikipedia.zim"]
|
||||
volumes:
|
||||
- ./data/kiwix:/data
|
||||
Reference in new issue
Block a user