Files
UmbrelApps/Docs/Plannen/Actief/008-Umbrelapp/OPEN.md
T
HarmenandClaude Opus 5 fd62f48309 De Tor hidden service is de tweede weg naar binnen, en die staat nergens
De gebruiker vroeg of Evolu Relay kwaad kan op zijn Umbrel. Het eerlijke antwoord
was nee met twee kanttekeningen, en de tweede stond in geen enkel bestand:
umbrelOS maakt per app een Tor hidden service en die stond gewoon aan. Samen met
PROXY_AUTH_ADD: "false" betekent dat de relay bereikbaar vanaf het internet,
alleen beschermd doordat het .onion-adres onraadbaar is. De gebruiker zet hem uit.

Wat dit lastig maakt om te zien: het staat niet in de compose van de app. Je kunt
dat bestand volledig lezen en concluderen dat alleen je LAN erbij kan. Vandaar dat
het nu op drie plekken staat: in de compose bij de instelling waar de afweging
gemaakt wordt, in het plan bij de statuspagina-vraag, en in de naslag.

De naslag is de belangrijkste van die drie, want het mechanisme is een eigenschap
van umbrelOS en geldt voor elke app. Het gevolg niet: bij Electrum Gate legt
dezelfde hidden service alleen de inlogpagina bloot, want daar staat de
proxy-inlog aan en loopt de TLS-poort niet via de proxy. Die vergelijking staat er
als tabel bij, want de instelling alleen zegt niets; het is de combinatie.

Opgemerkt door de gebruiker dat het ook voor Electrum Gate zou gelden. Deels
terecht, en dat is precies waarom het in de gedeelde naslag hoort en niet in het
plan van één app.

Tests: 32 goed 0 fout, 54 goed 0 fout en 39 goed 0 fout, niets overgeslagen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 18:43:41 +02:00

89 lines
5.7 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
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