halkyon/deploy/compose.search.yaml
Tizian 「ティツィアーン」 c9d3eb4dd1
feat(todo): the server finds places through the instance's Photon (ADR 0033, D32)
Todo's locations search through the person's own instance, as Train's
planner does, not a public service: `SearchEndpoint` on `PlaceSearch`, for
those signed in, 60 searches a minute, nothing kept or logged. Its `Place`
carries the address's parts and the object in OpenStreetMap, and a shop's
car park or charger is left out, which came first for `Lindau EDEKA`.

`compose.todo-search.yaml` puts Todo's server on compose.search.yaml's
Photon. A file of its own: without it Todo starts as it did, and offers no
search.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-07 21:49:35 +01:00

69 lines
2.2 KiB
YAML

# Place search for Halkyon Train (ADR 0030, D50), beside compose.train.yaml, which it
# needs: Photon on GraphHopper's weekly database of Europe, asked by Train's server,
# and by Todo's where compose.todo-search.yaml joins it. Switched on in .env:
#
# COMPOSE_FILE=compose.learn.yaml:compose.train.yaml:compose.search.yaml
#
# Photon has no site and no sign-in: only the apps' servers reach it, on a network of
# their own without a way out, for people signed in, and nothing it is asked is kept
# or logged. Its database (Europe's: a 32.6 GB download on 29 Oct 2026, more
# unpacked, to be measured) is in ./photon/data, renewed monthly, owned by a user ID of
# its own, which no person, no other container and not the CI runner uses. Its memory:
# PHOTON_HEAP (6g) for Java, PHOTON_MEMORY (8g) for the container. Setting it up:
# sidecars/README.md, Train's search.
services:
photon:
build:
context: ..
dockerfile: deploy/photon/Dockerfile
image: halkyon-photon
restart: unless-stopped
user: "61179:61179"
read_only: true
tmpfs:
- /tmp:size=64m,uid=61179,gid=61179
environment:
PHOTON_HEAP: ${PHOTON_HEAP:-6g}
volumes:
- ./photon/data:/data
# Beside the apps' servers alone: no site, no published port, no way out.
networks:
- search
mem_limit: ${PHOTON_MEMORY:-8g}
# No log: what people search for is where they go.
logging:
driver: none
photon-data:
image: halkyon-photon
restart: unless-stopped
user: "61179:61179"
read_only: true
tmpfs:
- /tmp:size=16m,uid=61179,gid=61179
command: ["/app/data.sh"]
environment:
# A path under GraphHopper's downloads; `europe/germany` for Germany alone.
PHOTON_REGION: ${PHOTON_REGION:-europe}
volumes:
- ./photon/data:/data
# Out to GraphHopper's downloads on `downloads`, an ordinary bridge with a way out
# to anywhere, shared with BRouter's segments and the map's downloads.
networks:
- downloads
mem_limit: 256m
logging:
driver: journald
train-server:
environment:
PHOTON_URL: http://photon:2322/
networks:
- search
networks:
# The apps' servers and Photon, without a way out.
search:
internal: true
downloads: