De client zegt het zelf: bij een eigen relay wordt de quota-manager genegeerd

De gebruiker wees erop dat de broncode van Trezor Suite lokaal staat, in het
project Trezor onder Repos/trezor-suite. Dat beantwoordde in een half uur wat uit
de serverkant alleen niet te halen was, en het draait de vraag van vanavond om.

Uit een commentaarregel van Trezor zelf, in
suite-common/suite-sync-quota-manager/src/createSuiteSyncQuotaManagerCompositionRoot.ts:
"We only want to use QM for our own relay servers. In case custom URL has been
set, QM is ignored, unless enforceQuotaManager is set (used for e2e tests)."
Die vlag staat standaard op false.

Daarmee is het pakket dat nu draait niet alleen zwaar maar waarschijnlijk kapot
bij ontwerp. Met een eigen relay-URL registreert de cliënt geen eigenaar, en de
relay van Trezor weigert iedereen zonder rij in de limietentabel. Die rij komt er
dus nooit: het enige dat hem zou maken wordt door de cliënt overgeslagen. Niet de
kale Evolu-relay was de gok, maar deze.

Twee dingen die er gratis bij kwamen en die vragen van eerder beantwoorden. Suite
neemt http:// (de e2e-test gebruikt http://10.0.2.2:4000 en :4001), dus TLS is
geen eis en dat raakt het masterplan Bereikbaarheid. En de instellingen staan
onder dev-utils, met twee losse velden voor relay en quota-manager, plus een
bevestiging op het apparaat bij het aanzetten.

Wat er nog echt open is, is geen redenering maar een proef: Suite gebruikt
@evolu/web@3.0.0-next.1 met een eigen patch in .yarn/patches, en de gepubliceerde
relay-image hoeft daar niet bij te passen. Dat is met docker run in minuten te
weerleggen en staat als eerste taak.

De vindplaats zelf is als naslag opgeschreven, met de vijf bestanden die iets
opleverden en twee waarschuwingen: het meeste komt uit suite-native, dus de
mobiele app, en het is een kloon op een moment in de tijd.

Tests: niet gedraaid, dit raakt alleen documentatie.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-08-26 07:34:49 +02:00
co-authored by Claude Opus 5
parent 836bc58bd6
commit dc0bb9f0dc
4 changed files with 91 additions and 22 deletions
+1 -1
View File
@@ -24,7 +24,7 @@
| Plan | App | Volgende stap | Status |
|-|-|-|-|
| [Webinterface](Plannen/Actief/005-Webinterface/TAKEN.md) | Gate | 0.0.10 op een telefoon nakijken, en het uploaden op het niet-gelukkige pad proberen met een sleutel die niet bij het certificaat hoort. Daarna open punt 5: laten controleren of de TLS-poort zélf antwoordt | 🔶 |
| [Umbrelapp](Plannen/Actief/008-Umbrelapp/TAKEN.md) | Relay | **Hij draait sinds 25-08-2026**, maar begin niet met verbeteren: eerst open punt 6. Er blijkt een kále Evolu-relay te bestaan met een gepubliceerde image, één container en geen database. Praat Suite daarmee, dan is dit pakket drie keer te vereenvoudigen en vervalt de blokkade over de eigenaarsregistratie | 🔶 |
| [Umbrelapp](Plannen/Actief/008-Umbrelapp/TAKEN.md) | Relay | **Hij draait sinds 25-08-2026, maar kan in de kern niet werken.** Uit de broncode van Suite: bij een eigen relay-URL registreert de cliënt geen eigenaar, terwijl Trezor's relay iedereen zonder limietenrij weigert. Volgende stap is de kále Evolu-relay proberen (`docker.io/evoluhq/relay:latest`, één container, gepubliceerde image) en waarschijnlijk daarnaartoe verbouwen. Zie open punt 6 | 🔶 |
| [Proefopstelling](Plannen/Actief/007-Proefopstelling/TAKEN.md) | Relay | **Eerst beslissen of dit plan nog bestaansrecht heeft.** Fase 1 is af, maar fase 2 en 3 zijn ingehaald: het pakket draait al op de Umbrel, dus een lokale opstelling ernaast meet minder en kost meer. Wat overblijft zijn twee vragen die al als blokkade in **Umbrelapp** staan, en die horen op één plek | 🔶 |
## B - Los oppakbaar (geen blokkade, geen vaste volgorde)
+14 -5
View File
@@ -22,13 +22,22 @@
eigen register, de onderhoudsplicht op een image, de Postgres met zijn wachtwoord, en de
eigenaarsregistratie die nu de blokkade is. Drie containers worden er één.
Werkt het niet, dan is het huidige pakket het juiste en is deze vraag in een half uur beantwoord in
plaats van open blijven staan.
**Nog diezelfde avond grotendeels beantwoord uit de cliëntkant**, nadat de gebruiker erop wees dat de
broncode van Trezor Suite lokaal staat in een ander project. Uit een commentaarregel van Trezor zelf:
*"We only want to use QM for our own relay servers. In case custom URL has been set, QM is ignored."*
Daarmee draait de vraag om. **Met een eigen relay-URL registreert Suite geen eigenaar**, en Trezor's relay
weigert iedereen zonder limietenrij. Die rij komt er dus nooit. Niet de kale Evolu-relay is de gok, maar
het pakket dat er nu staat: **Trezor's relay is als zelf-gehoste relay in de kern onbruikbaar** tenzij je
die rij met de hand zet.
Wat er nog écht open is, is één ding en dat is geen redenering maar een proef: **klopt de
protocolversie?** Suite gebruikt `@evolu/web@3.0.0-next.1` met een eigen patch in `.yarn/patches/`, en
`docker.io/evoluhq/relay:latest` hoeft daar niet bij te passen.
**Meten en niet redeneren:** `docker run --rm -p 4000:4000 docker.io/evoluhq/relay:latest`, Suite
ernaartoe wijzen, label maken. Dat is dezelfde test die al in **Proefopstelling** staat, nu met een
tweede kandidaat ernaast, en het is een extra argument om die twee plannen niet naast elkaar te laten
bestaan.
ernaartoe wijzen, label maken. De instellingen staan onder **dev-utils** en `http://` volstaat; zie
[Upstream-evolu-relay.md](../../../Referenties/Upstream-evolu-relay.md) §0 en §7.
**Moment:** eerste taak van de volgende sessie, vóór er nog iets aan het huidige pakket verbeterd wordt ·
**Eigenaar:** gebruiker
+11 -8
View File
@@ -9,14 +9,17 @@
## Volgende stap
- [ ] **Eerst: praat Trezor Suite met een kále Evolu-relay?** Zie [OPEN.md](OPEN.md) punt 6. Als het antwoord
ja is, wordt dit pakket drie keer eenvoudiger en vervalt de blokkade over de eigenaarsregistratie;
dan is verder sleutelen aan de huidige vorm weggegooid werk. Kost minuten:
`docker run --rm -p 4000:4000 docker.io/evoluhq/relay:latest`, Suite ernaartoe wijzen, label maken.
**Eigenaar: gebruiker**
- [ ] **Daarna pas: in de logs van de relay kijken of het databaseschema zichzelf aanmaakt.** De drie
containers staan omhoog, maar "Up" is nog geen "werkt": de relay kan draaien en toch klagen over
ontbrekende tabellen. `sudo docker logs whatsnext-evolu-relay_relay_1`. **Eigenaar: gebruiker**
- [ ] **De kále Evolu-relay proberen, en waarschijnlijk daarnaartoe verbouwen.** Zie [OPEN.md](OPEN.md)
punt 6: uit de broncode van Suite blijkt dat de cliënt bij een eigen relay-URL géén eigenaar
registreert, terwijl Trezor's relay iedereen zonder limietenrij weigert. Het pakket dat er nu staat kan
dus in de kern niet werken. Wat nog te meten is, is of de protocolversie klopt:
`docker run --rm -p 4000:4000 docker.io/evoluhq/relay:latest`, Suite ernaartoe wijzen onder
**dev-utils**, label maken. **Eigenaar: gebruiker**
- [ ] **Pas daarna beslissen wat er met het huidige pakket gebeurt.** Werkt de kale relay, dan wordt dit
één container op een gepubliceerde image en vervallen de bouwstap, het eigen register, de Postgres en
het wachtwoord. Werkt hij niet, dan is de limietenrij met de hand zetten de enige weg vooruit
- [ ] **In de logs van de relay kijken of het databaseschema zichzelf aanmaakt.** Alleen nog nuttig als het
huidige pakket blijft: `sudo docker logs whatsnext-evolu-relay_relay_1`
## Fase 1 - De app-map
+65 -8
View File
@@ -30,15 +30,47 @@ Evolu-relay?** Zo ja, dan vervalt vrijwel alles wat dit pakket ingewikkeld maakt
register, geen onderhoudsplicht op een image, geen Postgres, geen wachtwoord, en vooral geen
eigenaarsregistratie, wat nu de blokkade is.
Waarom het plausibel is: Suite is een Evolu-app, Evolu-apps praten met Evolu-relays, en de documentatie van
Evolu zegt zelfs dat een app meerdere relays tegelijk kan gebruiken. Waarom het toch mis kan gaan: de
protocolversie van de Evolu die Suite gebruikt hoeft niet die van de image te zijn, en Trezor kan iets
gewijzigd hebben. **Niet aannemen, meten**: `docker run --rm -p 4000:4000 docker.io/evoluhq/relay:latest`
en Suite ernaartoe wijzen kost minuten.
### Wat de cliëntkant zegt, en dat is beslissend
Wat er níet mee vervalt als het werkt: de quota-manager van Trezor is er voor hún gehoste dienst, en die
willen we sowieso niet. Dat het pakket die nu bevat, is geen fout maar het gevolg van het feit dat deze
laag ontdekt is vóórdat de laag eronder gevonden werd.
Nagelezen in de broncode van Trezor Suite zelf, die lokaal staat; zie §7. Drie bevindingen, en de tweede is
de belangrijkste van dit hele document.
**1. Suite kan naar een eigen relay wijzen, en het zijn twee losse adressen.** In de instellingen onder
**dev-utils** staan een relay-URL en een quota-manager-URL, elk met een eigen opslaan-knop. De e2e-test van
de mobiele app vult ze met `http://10.0.2.2:4000` en `http://10.0.2.2:4001`, dus **`http://` volstaat** en
de poorten zijn precies die van ons. Het aanzetten van de synchronisatie vraagt daarna een bevestiging op
het Trezor-apparaat zelf.
**2. Met een eigen relay-URL negeert Suite de quota-manager volledig.** Letterlijk, uit
`suite-common/suite-sync-quota-manager/src/createSuiteSyncQuotaManagerCompositionRoot.ts`:
```ts
// We only want to use QM for our own relay servers. In case custom URL has been set, QM is ignored,
// unless enforceQuotaManager is set (used for e2e tests with a local relay).
const getIsQuotaManagerEnabled = () =>
deps.getIsUsingTrezorRelay() || selectEnforceQuotaManager(deps.getState());
```
`enforceQuotaManager` staat standaard op `false` en bestaat voor hun eigen e2e-tests.
**Dat is een klem, en hij zit in Trezor's relay en niet in ons pakket.** De cliënt registreert geen eigenaar
zodra je een eigen relay gebruikt, maar de relay van Trezor blijft `isOwnerAllowed()` doen en weigert
iedereen zonder limietenrij (§3). Die rij komt er dus nooit, want het enige dat hem zou maken wordt door de
cliënt overgeslagen. **Trezor's relay is daarmee als zelf-gehoste relay in de kern onbruikbaar**, tenzij je
de rij met de hand in de database zet of de quota-manager buitenom aanroept.
**3. En dat maakt de kale Evolu-relay niet alleen eenvoudiger maar waarschijnlijk de enige die werkt.** Daar
is geen limietentabel en geen eigenaarscontrole, en de cliënt wil sowieso geen quota-manager bij een eigen
relay. De twee kanten passen op elkaar.
**Wat nog steeds gemeten moet worden**, want dit is redeneren uit code en geen proef: of de protocolversie
klopt. Suite gebruikt `@evolu/web@3.0.0-next.1` **met een eigen patch** in `.yarn/patches/`, en
`docker.io/evoluhq/relay:latest` hoeft daar niet bij te passen. Dat is nu het enige echte risico, en het is
in minuten te weerleggen: `docker run --rm -p 4000:4000 docker.io/evoluhq/relay:latest`, Suite ernaartoe
wijzen, label maken.
Dat het huidige pakket de zware variant bevat is geen fout maar het gevolg van de volgorde waarin het
gevonden is: de laag van Trezor was eerder zichtbaar dan de laag eronder.
## 1. Wat het is
@@ -183,3 +215,28 @@ Alles hierboven komt uit deze bestanden, geraadpleegd op 25-08-2026:
Het oorspronkelijke vooronderzoek van 25-08-2026 staat ongewijzigd in
[Vooronderzoek.PLAN.md](../Plannen/Masterplannen/Archief/Vooronderzoek.PLAN.md). Wat daar niet meer klopt,
staat hierboven in §2 en §4.
## 7. De broncode van Trezor Suite staat lokaal
Aangedragen door de gebruiker op 25-08-2026, en het beantwoordde in een half uur wat uit de serverkant
alleen niet te halen was. In een ander project van de gebruiker staat een kloon van de cliënt:
```
D:\HomeGit\Trezor\Repos\trezor-suite
```
Dat is de tegenkant van deze relay, en bij een vraag als "verwacht de cliënt dit eigenlijk wel" is dat de
snelste bron. De plekken die hier iets opleverden:
| Pad | Wat je er vindt |
|-|-|
| `suite-common/suite-sync-quota-manager/src/createSuiteSyncQuotaManagerCompositionRoot.ts` | de regel dat de quota-manager genegeerd wordt bij een eigen relay-URL |
| `suite-native/app/e2e/pageObjects/settingsActions.ts` | hoe je het in de interface instelt, met werkende voorbeeld-URL's op 4000 en 4001 |
| `suite-native/module-settings/src/hooks/useSuiteSyncRelayUrlForm.ts` | het formulier: keuze tussen de standaardserver en een eigen URL |
| `suite-native/suite-sync/src/createSuiteSyncNativeCompositionRoot.ts` | hoe de Evolu-cliënt wordt samengesteld |
| `.yarn/patches/@evolu-web-npm-3.0.0-next.1-*.patch` | dat Trezor de Evolu-cliënt **patcht**, en op welke versie |
Twee waarschuwingen bij die bron. Het meeste hierboven komt uit **`suite-native`**, dus de mobiele app; de
desktopversie kan andere instellingen op een andere plek hebben, en dat is niet nagekeken. En het is een
kloon op een moment in de tijd: bij twijfel de datum van die kloon opzoeken voordat je er een conclusie op
bouwt.