De bovenstroomse repo gelezen, en twee aannames sneuvelden

De gebruiker wil de Evolu Relay-app meteen pakketteren. Daarvoor moest fase 1 van
Proefopstelling eerst af, want een compose schrijven op aannames is precies wat
dat plan moet voorkomen. Upstream-evolu-relay.md gaat daarmee van vooronderzoek
naar nagetrokken, met een bron-URL per feit.

De quota-manager is in de praktijk verplicht, en om een andere reden dan gedacht.
Niet omdat de relay hem aanroept: er is geen HTTP-koppeling en geen URL in de
configuratie, ze delen alleen de Postgres. Maar isOwnerAllowed() eist een rij in
de limietentabel en de quota-manager maakt die rijen. Zonder hem is de relay dus
niet open maar dicht voor iedereen. Dat maakt de tweede weg interessant, want een
rij is ook met de hand te zetten; de prijs daarvan is schrijven in andermans
schema.

Er is geen publieke image. Trezor bouwt er wel een maar duwt hem naar een eigen
Amazon ECR, en op Docker Hub staat niets. Zelf bouwen en publiceren, of geen app,
en dat is een doorlopende verplichting. Bijvangst die een risico wegneemt:
datzelfde werkproces bouwt amd64 en arm64, dus de Dockerfile is bovenstrooms
bewezen op een Pi. Nieuw risico dat ervoor terugkomt: LICENSE.md is door GitHub
geclassificeerd als "other", en zodra je een image publiceert distribueer je hun
software.

Twee kleinere correcties. De compose van Trezor draait de relay niet, er staan
alleen Postgres en Prometheus in; het is een ontwikkelopstelling en wat zij
uitrollen staat in .k8s/. En alle processen komen uit één image met per service
een ander command, dus het worden geen drie images.

Eén tegenspraak blijft staan en is expres niet weggeschreven als feit:
.env.sample zegt dat SERVER_ENV=prod authenticatie aanzet, maar in de code die ik
las bepaalt die vlag alleen het logniveau en staan de controles onvoorwaardelijk
aan. Eén van de twee is achterhaald. Dat is met één keer starten te meten en het
staat als taak in fase 2.

Tests: niet gedraaid, dit raakt alleen documentatie.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-08-25 16:57:39 +02:00
co-authored by Claude Opus 5
parent 5cf23bb83d
commit 1a87a45685
4 changed files with 184 additions and 57 deletions
@@ -3,6 +3,34 @@
> Chronologisch sessielog, nieuwste bovenaan. Kort: 3 tot 6 regels per entry. Wat er is gebeurd en
> waarom, niet wat er nog moet: dat staat in [TAKEN.md](TAKEN.md).
## 25-08-2026 - de bovenstroomse repo gelezen, en twee aannames sneuvelden
De gebruiker wil de app meteen pakketteren en een installatie proberen. Daarvoor moest fase 1 eerst
gedaan worden, want een compose schrijven op aannames is precies wat dit plan moet voorkomen. Alles staat
met bron per feit in [Upstream-evolu-relay.md](../../../Referenties/Upstream-evolu-relay.md).
**De quota-manager is in de praktijk verplicht.** Niet omdat de relay hem aanroept (er is geen HTTP-koppeling
en geen URL in de configuratie), maar omdat `isOwnerAllowed()` een rij in de limietentabel eist en de
quota-manager die aanmaakt. Zonder hem is de relay dus niet open maar dicht voor iedereen. Dat is de
tegengestelde uitkomst van waar het vooronderzoek op hoopte, en het maakt de tweede weg interessant: de
tabel is ook met de hand te vullen, want ze delen alleen de Postgres.
**Er is geen publieke image.** Trezor bouwt er wel een, maar duwt hem naar een eigen Amazon ECR; op Docker
Hub staat niets. Zelf bouwen en publiceren, of geen Umbrel-app, en dat is een doorlopende verplichting en
geen eenmalige handeling. Bijvangst die een risico wegneemt: datzelfde werkproces bouwt amd64 én arm64, dus
de Dockerfile is bovenstrooms bewezen op een Raspberry Pi.
Twee kleinere correcties op het vooronderzoek: de compose van Trezor draait de relay **niet** (alleen
Postgres en Prometheus, het is een ontwikkelopstelling), en alle processen komen uit **één** image met per
service een ander `command`, dus het worden geen drie images.
Wat er onopgelost bleef en waar niet op gegokt moet worden: `.env.sample` zegt dat `SERVER_ENV=prod`
authenticatie aanzet, maar in de code die ik las bepaalt die vlag alleen het logniveau en staan de controles
onvoorwaardelijk aan. Eén van de twee is achterhaald; met één keer starten te meten.
**Geraakt:** `Referenties/Upstream-evolu-relay.md` (van vooronderzoek naar nagetrokken), `TAKEN.md`,
`Docs/CONTINUE_HERE.md`. **Tests:** niet van toepassing, alleen documentatie.
## 25-08-2026 - plan werd actief
Dit project bestond uit één document, `trezor-suite-sync-umbrel-app-plan.md`, met het vooronderzoek van
@@ -15,19 +15,38 @@
## Fase 1 - Kan dit überhaupt
- [ ] Het veld voor een eigen sync-server in Trezor Suite gevonden, met de vorm die het verwacht
- [ ] `.env.sample`, `docker-compose.yaml` en de relay-broncode van `trezor/trezor-suite-sync` gelezen op
de vraag of de quota-manager verplicht is. **Lezen, nog niet draaien:** als het antwoord in de
broncode staat, scheelt dat een halve middag proberen
- [ ] Vastgesteld of Trezor een image publiceert of alleen een Dockerfile levert. Zie
[Upstream-evolu-relay.md](../../../Referenties/Upstream-evolu-relay.md) §4 punt 1; dit bepaalt of
het masterplan **Publicatie** haalbaar is
- [x] **`.env.sample`, `docker-compose.yaml`, `Dockerfile`, `README.md` en de relay-broncode gelezen
(25-08-2026).** Dat leverde meer op dan de vraag stelde en het staat met bron per feit in
[Upstream-evolu-relay.md](../../../Referenties/Upstream-evolu-relay.md). De drie uitkomsten die het
pakket bepalen:
**(a) de quota-manager is in de praktijk verplicht** - de relay weigert elke eigenaar die geen rij in
de limietentabel heeft, en de quota-manager maakt die rijen. Er is geen HTTP-koppeling tussen de twee,
ze delen alleen de Postgres, dus de tabel gevuld krijgen is wat telt en niet de dienst zelf;
**(b) er is geen publieke image** - Trezor duwt naar een eigen Amazon ECR. Zelf bouwen en publiceren,
of geen app;
**(c) alle processen komen uit één image** met per service een ander `command`, dus geen drie images
- [x] **Vastgesteld dat Trezor geen image publiceert (25-08-2026).** Zie hierboven. Bijvangst die een
risico wegneemt: hun eigen werkproces bouwt `linux/amd64` én `linux/arm64`, dus de Dockerfile is
bovenstrooms bewezen op arm64
- [x] **De compose van Trezor draait de relay niet** (25-08-2026), tegen wat het vooronderzoek aannam. Er
staan alleen Postgres en Prometheus in; het is een ontwikkelopstelling. Wat Trezor zelf uitrolt staat
in `.k8s/`
- [ ] **Uitzoeken hoe je een eigenaar bij de quota-manager registreert**, en of daar iets extern voor nodig
is. Dit is nu de vraag die bepaalt of dit een bruikbare app wordt. Begin bij `bruno-collection/` in
de repo; de README verwijst voor de API-spec naar Notion
- [ ] **Uitzoeken wat `SERVER_ENV=prod` doet dat `dev` niet doet.** `.env.sample` zegt dat prod
authenticatie aanzet, maar in de code die ik las bepaalt die vlag alleen het logniveau en staan de
controles onvoorwaardelijk aan. Niet aannemen dat dev de deur opent, en ook niet dat hij dicht is
## Fase 2 - De stack lokaal draaien
- [ ] `trezor/trezor-suite-sync` gekloond
- [ ] `docker compose up` met **alleen** Postgres en `evolu-relay`, de quota-manager weggelaten
- [ ] Postgres uit de compose van Trezor gestart, en de relay ernaast met `yarn start-evolu-relay` of uit
een zelfgebouwde image. **Niet "docker compose up en klaar":** die compose draait de relay niet
- [ ] De relay antwoordt op poort 4000 en blijft draaien. Blijft hij niet draaien, dan is de foutmelding
de bevinding: schrijf hem letterlijk op in [PROGRESS.md](PROGRESS.md)
- [ ] Gemeten wat er gebeurt bij een eigenaar zónder limietenrij, in `dev` én in `prod`. Dat beslecht de
tegenspraak uit fase 1 in één keer
- [ ] **Blocker-check:** is de relay hard afhankelijk van de quota-manager? Zo ja, die erbij en
uitzoeken wat hij zelf nodig heeft. Vraagt hij een externe dienst, dan is dat geen taak meer maar
open punt 4 in [OPEN.md](OPEN.md)