Files
UmbrelApps/Docs/Plannen/Actief/008-Umbrelapp/OPEN.md
T
HarmenandClaude Opus 5 836bc58bd6 Er zijn twee relays, en we pakketteerden de zware
De gebruiker droeg evolu.dev/docs/relay aan met de vraag of dat de server is
waarop deze app gebaseerd is. Niet dezelfde, wel de bovenstroom, en dat verschil
is groot genoeg om het pakket ter discussie te stellen.

trezor/trezor-suite-sync is niet Evolu maar Trezor's inzet ervan, met een
Postgres en een quota-manager voor hun gehoste dienst. Het project eronder,
evoluhq/evolu, heeft een eigen relay: een container, een gepubliceerde image
docker.io/evoluhq/relay:latest, een datavolume in plaats van een database, en
niets gedocumenteerd over toegangscontrole. De documentatie noemt die relay
stateless en geschikt voor serverless.

Praat Trezor Suite daarmee, dan vervalt vrijwel alles wat dit pakket ingewikkeld
maakt: de bouwstap, het eigen register, de onderhoudsplicht op een image, de
Postgres met zijn wachtwoord, en de eigenaarsregistratie die nu de blokkade is.
Drie containers worden er een.

Niet aangenomen en niet gemeten, dus het staat als open punt 6 met de proef
erbij: docker run, Suite ernaartoe wijzen, label maken. Dat kost minuten en het
antwoord bepaalt of er nog iets aan de huidige vorm verbeterd moet worden. Daarom
staat het ook als eerste in "Volgende stap", vóór het nakijken van het
databaseschema: dat laatste is weggegooid werk als de kale relay volstaat.

Dat het huidige pakket deze laag heeft, is geen fout maar het gevolg van de
volgorde waarin het gevonden is. Dat staat er ook zo bij, want anders leest dit
over een maand als een verkeerde beslissing in plaats van als een ontdekking.

Tests: niet gedraaid, dit raakt alleen documentatie.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 07:30:04 +02:00

112 lines
7.2 KiB
Markdown

# Open punten - Umbrelapp
> Beslissingen die nog een **eigenaar** of een **moment** nodig hebben. Staat een punt hier zonder allebei,
> dan is dat de eerste fout om op te lossen. Wordt een punt een taak, dan verhuist het naar
> [TAKEN.md](TAKEN.md).
>
> **Nummers blijven staan**, ook als een punt beslist is: er kan elders naar verwezen worden, ook vanuit
> codecommentaar. Beslissen betekent verplaatsen naar de kop hieronder, niet hernummeren.
## Nog te beslissen
6. **Pakketteren we wel de juiste relay?** - **de zwaarste vraag die dit plan heeft**, en hij kwam pas op
25-08-2026 aan het eind van de dag boven, nadat de gebruiker de documentatie van Evolu zelf aandroeg.
`trezor/trezor-suite-sync` is niet Evolu maar Trezor's inzet ervan, met een Postgres en een
quota-manager voor hún gehoste dienst. Het project eronder, `evoluhq/evolu`, heeft een eigen relay: één
container, een **gepubliceerde** image `docker.io/evoluhq/relay:latest`, een datavolume in plaats van een
database, en niets gedocumenteerd over toegangscontrole. Zie
[Upstream-evolu-relay.md](../../../Referenties/Upstream-evolu-relay.md) §0.
Werkt Trezor Suite daarmee, dan vervalt zowat alles waar dit pakket moeilijk van doet: de bouwstap, het
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.
**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.
**Moment:** eerste taak van de volgende sessie, vóór er nog iets aan het huidige pakket verbeterd wordt ·
**Eigenaar:** gebruiker
5. **Is de app bruikbaar voor iemand anders die deze store toevoegt?**
Nieuw op 25-08-2026, en het is de keerzijde van punt 1. De store is publiek, dus een vreemde kan hem
toevoegen en Evolu Relay installeren. Zijn Umbrel haalt de image dan uit
`sc.kamenier-hamer.nl` van de gebruiker. Dat gaat vandaag waarschijnlijk gewoon werken, en dat is
precies wat het een keuze maakt in plaats van een detail: je serveert dan images van je eigen server aan
onbekenden, en jouw uptime bepaalt of hun app installeert. Electrum Gate heeft dit niet, want die draait
op images uit Docker Hub.
Drie richtingen: laten zoals het is; `disabled: true` in het manifest zolang de image niet op een neutrale
plek staat (dat veld bestaat in het schema); of de image naar Docker Hub duwen en het probleem weghalen.
**Moment:** als fase 4 helemaal af is, dus als bewezen is dat er iets te delen valt · **Eigenaar:**
gebruiker
2. **Komt er een statuspagina?**
Electrum Gate heeft er een en die bleek in de praktijk het nuttigste deel van die app. Hier zou dat
kunnen: draait de relay, hoe groot is de database, wanneer was de laatste synchronisatie, en is er een
eigenaar geregistreerd. Dat laatste is meer dan gemak, want het is precies waar het stil kan misgaan.
Ertegen: het is een eigen container en een eigen onderhoudslast, en het is geen voorwaarde om te kunnen
synchroniseren. Ervoor, en dat is nieuw sinds de samenvoeging van de repo's: de pagina en de agent van
Electrum Gate staan in dezelfde repo en zijn grotendeels over te nemen.
Let op één ding als het ervan komt: de app-proxy staat op `PROXY_AUTH_ADD: "false"`, dus een pagina zou
net zo onbeschermd zijn als de relay. Bij Electrum Gate zit de pagina juist wél achter de inlog. Dat
vraagt dan een tweede poort of een smalle whitelist.
**En dat weegt zwaarder dan het leek, want er zijn twee wegen naar binnen en de tweede is onzichtbaar
in de compose** (vastgesteld op 25-08-2026, nadat de gebruiker vroeg of deze app kwaad kon):
- **het thuisnetwerk.** De app-proxy publiceert `0.0.0.0:3851`, dus alle interfaces en niet alleen
localhost. Alles op het LAN kan bij de relay, zonder aanmelding;
- **Tor.** umbrelOS maakt per app een hidden service, en die stond bij de eerste installatie gewoon aan.
Zonder inlog betekent dat **bereikbaar vanaf het internet**, alleen beschermd doordat het
`.onion`-adres onraadbaar is. Te zien aan `~/umbrel/tor/data/app-<app-id>/hostname` en uit te zetten
in umbrelOS. De gebruiker zet hem uit.
Wat de schade in beide gevallen beperkt is een applicatiecontrole en geen netwerkgrens: de relay weigert
elke eigenaar zonder limietenrij. Dat is precies waarom een statuspagina hier een andere afweging is dan
bij Electrum Gate: die zou achter geen van beide grenzen liggen, en een statuspagina vertelt per definitie
iets over de machine waarop hij draait.
**Moment:** pas overwegen als fase 4 geslaagd is · **Eigenaar:** gebruiker
3. **Wat doen we met de quota-manager als blijkt dat hij iets extern nodig heeft?**
Hij is meegepakketteerd omdat de relay zonder limietenrij niemand toelaat. Als het registreren van een
eigenaar een betaalprovider of een Notion-sleutel vraagt, klopt die keuze niet meer en wordt de tweede
weg uit [PLAN.md](PLAN.md) §4b weer actueel: de rij met de hand in de database zetten.
**Moment:** zodra **Proefopstelling** de registratievraag beantwoordt · **Eigenaar:** volgt uit dat plan
## Beslist
1. **Waar komt de image te staan?** - **het ingebouwde containerregister van de eigen Gitea**
(25-08-2026), als `sc.kamenier-hamer.nl/sysop/evolu-relay`.
Hier stond dat lokaal bouwen de eerste stap was en dat dit beslist zou worden "zodra lokaal niet meer
volstaat". Dat moment kwam dezelfde dag, en niet uit vrije keuze: **lokaal volstaat nooit.** umbreld haalt
élke image via de Docker Engine API op en niet via compose, dus een lokaal gebouwde tag is onbereikbaar en
de installatie faalt met `pull access denied` voordat er iets start. Met bron in
[Umbrel-appstore-spec.md](../../../Referenties/Umbrel-appstore-spec.md).
Waarom Gitea en niet Docker Hub: zelfde host als de store, geldig certificaat, geen nieuw account, en de
eigenaar `sysop` staat publiek zodat anoniem halen werkt. Dat laatste is gecontroleerd met een uitgelogde
pull, en daarna bewezen door de installatie zelf met de lokale images vooraf weggehaald.
Wat hiermee **niet** beslist is: Docker Hub blijft nodig zodra het de officiële store in gaat, en dan moet
er ook arm64 bij. Zie **Publicatie-Relay**. En lees dan eerst `LICENSE.md` van Trezor, dat door GitHub als
"other" geclassificeerd staat.
## Bewust uitgesteld
4. **`SERVER_ENV` op `prod` of `dev`?** - `prod`, tot het tegendeel gemeten is (25-08-2026).
`.env.sample` zegt dat prod authenticatie aanzet; in de code die gelezen is bepaalt die vlag alleen het
logniveau en staan de autorisatiecontroles onvoorwaardelijk aan. Eén van de twee is achterhaald.
`prod` is de veilige kant van die onduidelijkheid: als het iets aanzet, willen we dat het aanstaat. Maar
het is een gok tot het gemeten is, en het is met één keer starten te meten. Staat als taak in
**Proefopstelling** fase 2.
**Moment:** bij de eerste geslaagde start · **Eigenaar:** volgt uit Proefopstelling