Het ontwerp van de limiter en de pagina, en de limiter is klein

createRelay uit @evolu/nodejs neemt twee terugroepfuncties, isOwnerAllowed en
isOwnerWithinQuota, en Trezor doet in createEvoluRelay.ts zelf niets anders. Hun
hele quota-manager met Postgres bestaat alleen om de tabel te vullen die die twee
raadplegen. Wij vullen ze met eigen logica en bouwen niets na. Weg 1 uit
Bereikbaarheid 4b is daarmee veel goedkoper dan daar aangenomen, en dat is wat de
keuze van de gebruiker mogelijk maakt.

De logica zoals hij hem formuleerde: de eerste eigenaar die zich meldt wint, een
schakelaar bepaalt of er nog nieuwe bij mogen, en data is per eigenaar te wissen.
Dat laatste doet het relay-proces zelf, aangestuurd met een vlagbestand vanaf de
pagina; geen tweede container die langszij in de SQLite schrijft en geen
Docker-socket.

Twee feiten uit de broncode van Evolu die het ontwerp sturen en die in de naslag
staan met bron. De gepubliceerde image zet isOwnerWithinQuota op 1 MB per eigenaar
en laat isOwnerAllowed weg, dus een kale relay is niet volledig ongelimiteerd,
maar dat plafond geldt ook voor de echte gebruiker. En de relay-URL van de client
bevat een pad dat letterlijk wordt overgenomen, wat een goedkope proxy-controle
mogelijk maakt; die is bewust niet genomen nu de allowlist er komt.

De poorten gaan om: pagina achter app_proxy met de inlog aan, relay op een eigen
gepubliceerde poort waar Zoraxy met TLS naartoe wijst. Dat lost open punt 2 op
zonder het bezwaar dat daar stond, en het volgt het patroon dat Electrum Gate in
deze repo al gebruikt. De pagina volgt hetzelfde ontwerpsysteem, zonder de Google
Fonts-verwijzing eruit.

Open punt 8 en 2 zijn beslist, fase 5 staat als takenlijst. De gebruiker heeft de
oude installatie van de Umbrel gehaald; er wordt niet geupdatet maar opnieuw
gebouwd.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-08-28 11:02:51 +02:00
co-authored by Claude Opus 5
parent 6b114475d5
commit edb91c4749
5 changed files with 198 additions and 21 deletions
+37 -18
View File
@@ -26,27 +26,46 @@
Nu de desktop bewijst dat de relay in orde is, is dit een schone vraag geworden: het ligt aan de app
of aan het platform, niet aan ons. Zonder antwoord werkt de app alleen op de desktop, en dat scheelt
voor de waarde van dit hele plan
- [ ] **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 Postgres en het wachtwoord. Werkt hij niet,
dan is de limietenrij met de hand zetten de enige weg vooruit
- [x] **Besloten wat er met het huidige pakket gebeurt (28-08-2026): het gaat eruit.** De relay van Trezor,
de quota-manager en de Postgres vervallen. Wat ervoor in de plaats komt staat in [PLAN.md](PLAN.md)
§4g en §4h
- [x] **De limiter gekozen (28-08-2026): weg 1, uitbreiden via `createRelay`.** Dat bleek veel kleiner dan
**Bereikbaarheid** §4b aannam: het zijn twee terugroepfuncties, `isOwnerAllowed` en
`isOwnerWithinQuota`, en Trezor doet zelf niets anders. De gebruiker breidde het ontwerp uit met een
schakelaar voor nieuwe eigenaars en met wissen per eigenaar. Zie [OPEN.md](OPEN.md) punt 8
- [x] **De vraag of het databaseschema zichzelf aanmaakt is vervallen.** Hij ging over het pakket dat eruit
gaat, en de kale relay maakt zijn database bij de start zelf aan; dat is op 28-08-2026 gezien
**De richting is al gekozen op 27-08-2026: kaal, met een eigen limiter erop en de statuspagina
erbij.** Zie [OPEN.md](OPEN.md) punt 6, 8 en 2. Wat daarbij vastligt en makkelijk verkeerd onthouden
wordt: de kale relay heeft géén toegangscontrole, dus de limiter is geen extraatje maar de vervanging
van de enige bescherming die er vandaag is. En de quota-manager die er nu in zit is daarvoor niet te
hergebruiken: die schrijft in Trezor's limietentabel, en die tabel bestaat straks niet meer
## Fase 5 - De verbouwing naar de kale relay
**Een eigen image blijft daardoor waarschijnlijk nodig**, want de meest voor de hand liggende limiter
breidt de relay uit via `createRelay`. Dat is geen obstakel: de gebruiker meldde op 27-08-2026 dat de
broncode nog op zijn Umbrel staat, dus opnieuw bouwen en naar het eigen Gitea-register duwen kan
gewoon. De bouwstap en het register vervallen dus mogelijk tóch niet; de Postgres en het wachtwoord
wel
Nog niets van begonnen. De volgorde is bewust: eerst het programma dat de limiter draagt, dan de app
eromheen, want de compose hangt af van wat dat programma nodig heeft.
- [ ] **De limiter kiezen uit de drie wegen van Bereikbaarheid §4b**, met de leer-variant erbij: de eerste
eigenaar die verbindt wordt toegelaten, de rest geweigerd, met een wisknop op de statuspagina. Zie
[OPEN.md](OPEN.md) punt 8. **Pas nadat de proef geslaagd is**
- [ ] **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`
- [ ] **Het eigen relay-programma schrijven.** Een klein Node-project dat `createRelay` uit `@evolu/nodejs`
aanroept met onze twee functies. Niets van Evolu aanpassen en niets nabouwen. Zie [PLAN.md](PLAN.md)
§4g en [Upstream-evolu-relay.md](../../../Referenties/Upstream-evolu-relay.md) §8
- [ ] **Bewust een getal kiezen voor `isOwnerWithinQuota`.** De gepubliceerde image staat op 1 MB per
eigenaar. Overnemen zonder nadenken betekent dat het synchroniseren stilvalt zodra de
labelgeschiedenis daar tegenaan loopt
- [ ] **De allowlist als staat onder `${APP_DATA_DIR}/data/`**, naast de relay-database en niet erin, met
een `.gitkeep` voor de map
- [ ] **Wissen per eigenaar laten doen door het relay-proces zelf**, aangestuurd met een vlagbestand vanaf
de pagina. Geen tweede container die langszij in de SQLite schrijft, en geen Docker-socket
- [ ] **`tools/evolu-relay/build.sh` omschrijven:** niet meer de repo van Trezor bouwen maar het eigen
programma. De pin blijft, en met de pin mee gaat `version` in het manifest omhoog
- [ ] **De compose omzetten:** pagina achter `app_proxy` met de inlog aan, relay op een eigen `ports:`.
Postgres, wachtwoord en quota-manager eruit. Zie [PLAN.md](PLAN.md) §4h
- [ ] **De statuspagina bouwen**, met de pagina en de agent van Electrum Gate als vertrekpunt en met
hetzelfde ontwerpsysteem (`HomeGit/Docs/website-design-system.html`), maar zonder de Google
Fonts-verwijzing daaruit. Toont of de relay draait, welke eigenaars bekend en toegelaten zijn, de
omvang van de database en het laatste schrijfmoment. Draagt de schakelaar voor nieuwe eigenaars en de
wisknop per eigenaar
- [ ] **De app opnieuw installeren in plaats van updaten.** De gebruiker heeft de oude installatie op
28-08-2026 weggehaald; dat is ook de nette weg, want niet elk bestand bereikt een bestaande
installatie via een update
- [ ] **Zoraxy inrichten** op het eigen subdomein met TLS, doorverwijzend naar de relay-poort, met de
WebSocket-upgrade aan. Testen met de handshake-curl uit [PLAN.md](PLAN.md) §6a stap 3, met de
publieke naam in plaats van het IP. **Eigenaar: gebruiker**
## Fase 1 - De app-map