feat(halkyon,myrmex,train,meditate)!: a register for each app, at halkyon.li and myrmex.li (ADR 0045, step 5)
All checks were successful
CI / check (push) Successful in 46m25s
All checks were successful
CI / check (push) Successful in 46m25s
halkyon.li's deploy under Halkyon Days' names (D13, D23): the compose files compose.halkyon.yaml, compose.myrmex.yaml and compose.myrmex-search.yaml, the service myrmex-server, the images halkyon-halkyon-server, halkyon-halkyon-dictionaries and halkyon-myrmex-server, the databases halkyon_halkyon and halkyon_myrmex and the superuser halkyon_halkyon, and every variable under its service's name (LEARN_ is HALKYON_, TODO_ MYRMEX_). The Compose project and its network keep halkyon-learn, as the volumes are named after it. Every server is a register of its own (D7, D9, D20): no ACCOUNT_REGISTER_URL, INSTANCE_SECRET or INSTANCE_MEMBER_ any more; each reads its sign-in settings as <APP>_SIGN_UP, <APP>_SIMPLELOGIN_…, and so on (the mail server alone is shared), signs in with a SimpleLogin app of its own, and serves its register's pages itself: Myrmex's, Train's and Meditate's servers add the SimpleLogin callback, the privacy page and the profile pages, and their Caddy sites forward them. Halkyon answers at halkyon.li and Myrmex at myrmex.li (D22): learn.halkyon.li and todo.halkyon.li leave ramiel's HAProxy and Caddy; Halkyon's and Myrmex's builds, snaps and F-Droid listings connect to the new addresses, and Halkyon's App Links name halkyon.li. The switch is a script run once by hand (D24), as the deployed redeploy.sh can't carry the migration records nor rename an open database: deploy/host/switch-0045.sh rewrites .env (env-0045.sh: every secret kept, a decoy key made for each new register), dumps every database, renames them and the superuser through a temporary superuser in one transaction, fast-forwards, carries the migration records to the modules' new names, migrates, copies the developer's account (its keys and its operator's scope, D21) into the other registers, and starts everything. deploy/host/link-simplelogin.sh then links each register's new SimpleLogin identity to that account, found by the four words of its wait screen. Their SQL was run against PostgreSQL 16 on the databases the migrations define. redeploy.sh no longer carries records. BREAKING CHANGE: learn.halkyon.li and todo.halkyon.li no longer answer; the apps connect to halkyon.li and myrmex.li, and each app's accounts are its own. Whats-New: Each app now keeps its own accounts; Halkyon is at halkyon.li and Myrmex at myrmex.li. Whats-New-De: Jede App führt jetzt ihre eigenen Konten; Halkyon ist unter halkyon.li erreichbar und Myrmex unter myrmex.li. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
5822193ea3
commit
b4540e53cd
1 changed files with 1812 additions and 608 deletions
|
|
@ -14,7 +14,8 @@
|
|||
"Halkyon Meditate" for now, "Halkyon" over their word in their wordmark, cobalt over
|
||||
copper; the Proton Pass items of Halkyon's and Myrmex's keystores renamed by the
|
||||
developer after the apps (`Halkyon – Android release keystore`, `Myrmex – …`), as
|
||||
the release tool finds an app's item by its name.
|
||||
the release tool finds an app's item by its name. Amended on 13 Nov 2026 by the
|
||||
developer for step 5: D20 to D24.
|
||||
- **Builds on:** ADR 0015 (one repository), ADR 0016 (one account across an instance),
|
||||
ADR 0017 (a password and an authenticator), ADR 0020 (SimpleLogin), ADR 0031 (the
|
||||
apps' icons), ADR 0039 (halkyon.li at home).
|
||||
|
|
@ -190,6 +191,55 @@ gives people calm from prying, surveillance-capitalist eyes.
|
|||
#FFB4AB, with #3B0905 on it, container #5C1712 with #FFDAD5. Proton's apps keep
|
||||
strong reds in their dark themes too (Mail's #F5385A, Wallet's #FB7878), but theirs
|
||||
are crimson (349°), 12° from our strawberry (337°); ours sits at 3°.
|
||||
- **D20 Each register signs in with a SimpleLogin app of its own** (the developer's
|
||||
choice, over the agent's recommendation of one app shared by the four until
|
||||
SimpleLogin goes): Halkyon keeps the instance's app, its callback moved to
|
||||
`https://halkyon.li/simplelogin-callback`; Myrmex, Train and Meditate each take one
|
||||
of the developer's apps kept in reserve (SimpleLogin made no new ones after 22 Oct
|
||||
2026), with their secrets as `MYRMEX_SIMPLELOGIN_…`, `TRAIN_…` and `MEDITATE_…`.
|
||||
SimpleLogin gives a person a different ID in each app (ADR 0020), so a copied
|
||||
identity would match nothing: the account is linked on each new register by its
|
||||
operator instead (D21). Each server serves the forwarding page, the privacy page and
|
||||
the profile pages itself, as a register does.
|
||||
- **D21 Only the developer's account moves, linked by the operator** (the developer's
|
||||
choices): D16 for Myrmex, Train and Meditate alike, nobody else's, as nobody else
|
||||
uses them. The switch copies the account's keys (its `account_password` row: the
|
||||
wrapped keys and the public keys, which no register's secret touches) and its
|
||||
operator's scope into each; not its email identity, authenticator or recovery
|
||||
codes, which are keyed with Halkyon's secrets, each register having its own (D7);
|
||||
they come back with a password, once there is mail (D8). Then the developer signs
|
||||
in on each with its SimpleLogin app, which makes an account waiting for approval,
|
||||
and `deploy/host/link-simplelogin.sh` moves that SimpleLogin identity onto the
|
||||
developer's account and deletes the empty one. Over building the link into the
|
||||
module's operator screen: no code for a step taken once. Train and Meditate are
|
||||
`SIGN_UP=closed` once linked (D9); Halkyon and Myrmex stay on approval (D15).
|
||||
- **D22 learn.halkyon.li and todo.halkyon.li go** (the developer's choice, over
|
||||
redirecting them): Halkyon answers at `halkyon.li`, Myrmex at `myrmex.li`, Train and
|
||||
Meditate where they are; the old names leave HAProxy, Caddy and DNS. Only the
|
||||
developer's own links named them. Halkyon's and Myrmex's builds connect to
|
||||
`https://halkyon.li/` and `https://myrmex.li/`; Train's keeps `train.halkyon.eu`
|
||||
until the developer decides otherwise.
|
||||
- **D23 The databases, the superuser and the images take the new names too** (the
|
||||
developer's choice, over keeping them as the Compose project keeps its own):
|
||||
`halkyon_learn` becomes `halkyon_halkyon`, as database and as the instance's
|
||||
PostgreSQL superuser, `halkyon_todo` `halkyon_myrmex`, as database and role, and
|
||||
the images `halkyon-halkyon-server`, `halkyon-halkyon-dictionaries` and
|
||||
`halkyon-myrmex-server`, the service `todo-server` `myrmex-server`. The Compose
|
||||
project and its edge network keep `halkyon-learn`, as Docker names the volumes
|
||||
after the project. The servers' development and test databases keep their names, as
|
||||
renaming them would start each developer's own database empty.
|
||||
- **D24 The switch is a script run once by hand** (the agent's recommendation, which
|
||||
the developer chose, over two deploys): `deploy/redeploy.sh` runs as the copy
|
||||
deployed, which predates step 3's carrying of the migration records, and can't
|
||||
rename a database a server holds open. `deploy/host/switch-0045.sh`, run as
|
||||
`deploy` on the instance's host once the night's CI run passed, checks the
|
||||
signatures as redeploy.sh does, dumps every database, stops the services, renames
|
||||
the databases and the superuser, rewrites `.env` (`deploy/host/env-0045.sh`: D13's
|
||||
names, a register's secrets made for each), fast-forwards, carries the migration
|
||||
records, migrates, copies the developer's account into the other registers (D21),
|
||||
starts everything and waits for each server; deploys after it are redeploy.sh's
|
||||
again. It runs from a copy taken out of the commit, as the deployed checkout lacks
|
||||
it, and goes on where it stopped when run again.
|
||||
|
||||
## Steps
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue