build(train): Train's server and BRouter deployable beside the instance (ADR 0030, D46)

deploy/compose.train.yaml adds Train's server at train.halkyon.eu, a
member of Learn's register, with its database halkyon_train in the
instance's PostgreSQL, and BRouter beside it alone (v1.7.10, checked by
SHA-256, no log), its segments of the operator's region kept current
monthly. Nothing changes until deploy/.env names the compose file:
redeploy.sh and backup.sh take Train in only then, and the operator's
steps are in sidecars/README.md. restic now forgets snapshots grouped by
host alone, so adding Train's dump leaves no group behind for good.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-29 00:05:39 +01:00
commit a8f7c26e69
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -1,6 +1,6 @@
# ADR 0030: Halkyon Train, what it does and where its data comes from
- **Status:** decided 27–28 Oct 2026, by the developer (D1–D45 below). The shell (D12)
- **Status:** decided 27–28 Oct 2026, by the developer (D1–D46 below). The shell (D12)
is built; recording (D13–D28) is built on Android, iOS waiting for a Mac; Health
Connect (D29–D31) is built; the Loop's setup and keeping (7a, D34–D36) and its
daily data (7b, D37, D38), its sessions (7c, D39) and its firmware (D10, D40) are
@ -881,6 +881,28 @@ Strava. What was found, 27 Oct:
(to CoMaps or anything, with waypoints and turn hints) and come in as GPX shared to
Train or opened in it, snapped to a profile or kept as drawn (over out alone, and
over neither yet).
- **D46 Train's server on the instance** (recommended, the developer's; 28 Oct): it
joins learn.halkyon.eu's server, as BRouter needs a server of Train's to ask it
(D11, D22), at **train.halkyon.eu** (over a path on learn.halkyon.eu, which would
carry Learn's name for good); its data in the instance's PostgreSQL as a database of
its own, `halkyon_train`, under a role that can't connect to Learn's (over a second
PostgreSQL, twice the memory and a second backup); a **member of the instance's
register** on Learn's server (ADR 0016: one account a person across the operator's
services, over a register of its own). It is a compose file of its own,
`deploy/compose.train.yaml`, switched on in `.env` as the sidecars are, so nothing
changes on the instance until the operator does (the steps in
`deploy/sidecars/README.md`, *Train*); `redeploy.sh` then builds, dumps, migrates
and waits for it as for Learn's server, and `backup.sh` backs its database up in the
same snapshots. BRouter (v1.7.10, its release checked by SHA-256) runs beside Train's
server alone, on a network without a way out, with no log (it writes the waypoints),
its segments refreshed monthly by a container of its own; Europe's took 3.3 GB on
28 Oct. Whether the server's disk has room is the developer's to check before
switching it on. The map stays OpenFreeMap's: the PMTiles sidecar needs a style for
Protomaps' schema, a step of its own (about 40 GB for Europe, estimated from the
planet's 120 GB). Learn's server signs in to PostgreSQL as its superuser, so it could
read Train's database; a role of its own for it is left for later. restic now forgets
snapshots grouped by host alone, so that the snapshots before Train's dump joined
them aren't kept for good as a group of their own.
## Consequences