Proxy kiwix-serve through this app instead of linking to it directly
map.priesol.net sits behind a reverse proxy that only forwards to maptool itself, so the previous approach (publish kiwix-serve's port, link the browser straight at it) had no address a real browser could ever reach — not just a Docker-internal hostname as first assumed, but no host/port combination at all works from outside. GET /kiwix/* now proxies to kiwix-serve (Kiwix.proxy in lib/maptool/kiwix.rb, a plain Net::HTTP passthrough), and the kiwix service runs with --urlRootLocation=/kiwix so every link/asset it emits already carries that same prefix and needs no rewriting (confirmed against libkiwix/internalServer.cpp, which strips this exact prefix off incoming requests). Drops the port-publishing approach from the previous commit entirely.
This commit is contained in:
1 parent
9997a8a8c0
commit
5ff9b113d9
7 files changed
+107
-51
No files matched your search
+11
-10
@@ -80,12 +80,12 @@ Wikipedia https://library.kiwix.org[ZIM] loaded — set `KIWIX_URL` to
|
||||
wherever *the server* can reach it (`docker-compose.yaml` already runs
|
||||
a `kiwix` service pointed at `data/kiwix/wikipedia.zim` and wires
|
||||
`KIWIX_URL` to it via its compose service name; blank/unset disables
|
||||
the link, same as every other optional integration here). This is
|
||||
used only for the server-side reachability check — a browser can't
|
||||
resolve a Docker-internal hostname like `kiwix`, so the link itself is
|
||||
built from `KIWIX_PUBLIC_PORT` (the host port kiwix-serve is
|
||||
`ports:`-published on, `8090` in `docker-compose.yaml`) plus whatever
|
||||
host the visitor already used to reach maptool itself. Not part of the
|
||||
the link, same as every other optional integration here). Used only
|
||||
server-side: production sits behind a reverse proxy that forwards only
|
||||
to this app, so there's no address a browser could reach kiwix-serve
|
||||
at directly — `GET /kiwix/*` (`app.rb`) proxies to it instead, and the
|
||||
`kiwix` service runs with `--urlRootLocation=/kiwix` so its own
|
||||
emitted links/assets already carry that same prefix. Not part of the
|
||||
repo — a ZIM is a large, self-contained archive, obtain one locally:
|
||||
|
||||
* https://library.kiwix.org/#lang=eng&category=wikipedia[Kiwix's own
|
||||
@@ -105,10 +105,11 @@ repo — a ZIM is a large, self-contained archive, obtain one locally:
|
||||
|
||||
Once it's there, `docker compose up -d kiwix` (or a full restart)
|
||||
picks it up — `GET /api/kiwix` reports `available: true` and the
|
||||
"Nearby on Wikipedia" link appears. kiwix-serve's own geo search
|
||||
(`GET /search?pattern=&latitude=&longitude=&distance=`,
|
||||
`lib/maptool/kiwix.rb`'s docstring) is linked to directly, not
|
||||
proxied/embedded — it already has a full search UI of its own.
|
||||
"Nearby on Wikipedia" link appears, pointed at kiwix-serve's own geo
|
||||
search (`GET /kiwix/search?pattern=&latitude=&longitude=&distance=`)
|
||||
through this app's own proxy rather than at kiwix-serve directly — it
|
||||
already has a full search UI of its own, this just makes it reachable
|
||||
through the same origin/reverse proxy as the rest of the app.
|
||||
|
||||
== GNSS position (gpsd)
|
||||
|
||||
|
||||
Reference in new issue
Block a user