2026-08-25 16:27:57 +02:00
|
|
|
# Bereikbaarheid - masterplan
|
|
|
|
|
|
|
|
|
|
> **App: Evolu Relay.** Status: nog niet actief. Dit is één bestand en dat is bewust: er wordt nog niet
|
|
|
|
|
> aan gewerkt. Bij
|
|
|
|
|
> promotie naar `Plannen/Actief/NNN-Bereikbaarheid/` worden de paragrafen hieronder over de vier
|
|
|
|
|
> bestanden verdeeld; zie `HomeGit/Docs/Werkproces.md` §1b.
|
|
|
|
|
>
|
|
|
|
|
> Afhankelijk van: **Umbrelapp**. Er valt niets bereikbaar te maken zolang er niets draait. Eén bevinding
|
|
|
|
|
> uit **Proefopstelling** stuurt dit plan wel al: accepteert Trezor Suite een `http://`-adres, of eist het
|
|
|
|
|
> TLS?
|
|
|
|
|
|
|
|
|
|
## 1. Doel
|
|
|
|
|
|
|
|
|
|
Trezor Suite ook buiten het thuisnetwerk laten synchroniseren met de eigen relay, zonder dat daarvoor een
|
|
|
|
|
poort op de router open hoeft.
|
|
|
|
|
|
|
|
|
|
## 2. Afbakening
|
|
|
|
|
|
|
|
|
|
De weg van een apparaat onderweg naar de relay op de Umbrel, en wat daarvoor op de Umbrel en op het
|
|
|
|
|
apparaat geregeld moet worden. Inclusief de vraag wat er gebeurt als die weg wegvalt: een client die
|
|
|
|
|
buiten het netwerk niets kan synchroniseren, moet dat binnen het netwerk nog wel gewoon doen.
|
|
|
|
|
|
|
|
|
|
## 3. Niet-doelen
|
|
|
|
|
|
|
|
|
|
- **Geen poort openzetten op de router als het te vermijden is.** Een sync-relay die rechtstreeks aan het
|
|
|
|
|
internet hangt is een ander soort ding dan een relay op je eigen netwerk, en niets in dit project vraagt
|
|
|
|
|
erom.
|
|
|
|
|
- **Geen eigen certificaatbeheer bouwen.** Bestaat dat al op deze Umbrel, dan gebruiken we het. Zo niet,
|
|
|
|
|
dan is dat een reden om voor de weg te kiezen die geen certificaat nodig heeft.
|
|
|
|
|
- **Geen dienst van derden in het datapad die het verkeer termineert.** Dat is precies wat zelf hosten
|
|
|
|
|
moest oplossen.
|
|
|
|
|
|
|
|
|
|
## 4. Ontwerp
|
|
|
|
|
|
2026-08-26 07:51:52 +02:00
|
|
|
### 4a. Waar het risico wél en niet zit
|
|
|
|
|
|
|
|
|
|
**Bijgewerkt 25-08-2026**, nadat de gebruiker vroeg of iedereen met kennis van de API zijn labels kan
|
|
|
|
|
opvragen zodra de relay op een domein staat. Dat antwoord is nee, en het verandert waar dit plan over gaat.
|
|
|
|
|
|
|
|
|
|
**Vertrouwelijkheid is geen probleem, ook niet op een open eindpunt.** Uit één `OwnerSecret` worden met
|
|
|
|
|
SLIP-21 drie onafhankelijke waarden afgeleid: een publieke `OwnerId`, een `OwnerEncryptionKey` die
|
|
|
|
|
ontsleutelt en een `OwnerWriteKey` die schrijven autoriseert. Alleen de eerste gaat naar de relay. De
|
|
|
|
|
beveiliging leunt er dus niet op dat je adres onbekend blijft. Uitgeschreven met bron in
|
|
|
|
|
[Upstream-evolu-relay.md](../../Referenties/Upstream-evolu-relay.md) §1b.
|
|
|
|
|
|
|
|
|
|
**Het echte risico is misbruik als opslag.** Een kale Evolu-relay kent geen accounts en geen
|
|
|
|
|
toegangscontrole. Wie hem kan bereiken, kan een eigen owner aanmaken en hem als gratis versleutelde opslag
|
|
|
|
|
gebruiken, en je kunt niet zien van wie het is: dat is het ontwerp en geen tekortkoming. Je schijf groeit
|
|
|
|
|
en er is geen knop.
|
|
|
|
|
|
|
|
|
|
**Dat is met terugwerkende kracht de tweede functie van Trezor's quota-manager**, naast facturering. Wij
|
|
|
|
|
haalden hem eruit omdat hij bij betaalde hosting hoort. Dat klopt, maar dan neem je de misbruikbeheersing
|
|
|
|
|
mee weg.
|
|
|
|
|
|
|
|
|
|
Gevolg voor dit plan: **de keuze tussen Tailscale en een reverse proxy gaat niet meer over gemak maar over
|
|
|
|
|
of er überhaupt een open eindpunt komt.** Zolang alleen jouw eigen apparaten erbij moeten, is een netwerk
|
|
|
|
|
dat vreemden buiten houdt de simpelste en beste oplossing, en is een publiek domein een risico dat niets
|
|
|
|
|
oplevert.
|
|
|
|
|
|
|
|
|
|
### 4b. Wil je tóch een open eindpunt, dan is er een eigenaars-allowlist nodig
|
|
|
|
|
|
|
|
|
|
Voorstel van de gebruiker op 25-08-2026: een eigen quota-manager, met een interface waarin je `OwnerId`'s
|
|
|
|
|
kunt vlaggen en alleen die van jezelf mag schrijven. Dat is de juiste gedachte, en er zijn drie manieren om
|
|
|
|
|
het te doen die sterk in prijs verschillen.
|
|
|
|
|
|
|
|
|
|
1. **De relay uitbreiden via `createRelay`.** De README van Evolu noemt de Node-bibliotheek
|
|
|
|
|
`@evolu/nodejs` met een `createRelay`-API, en noemt expliciet "custom logging, **auth**, or tight server
|
|
|
|
|
integration" als reden om die te gebruiken in plaats van de kant-en-klare image. Dat is het bedoelde
|
|
|
|
|
uitbreidpunt en vrijwel zeker wat Trezor gedaan heeft. Prijs: je schrijft en onderhoudt een eigen kleine
|
|
|
|
|
dienst, en je bouwt weer een eigen image. Dan verlies je precies de winst uit open punt 6 van
|
|
|
|
|
**Umbrelapp**.
|
|
|
|
|
2. **Terug naar de relay van Trezor**, met een eigen interface die rijen in de limietentabel zet in plaats
|
|
|
|
|
van hun quota-manager. De handhaving bestaat daar al (`isOwnerAllowed`). Prijs: schrijven in andermans
|
|
|
|
|
schema, dus breekbaar bij elke bovenstroomse wijziging, plus de Postgres en de eigen image terug.
|
|
|
|
|
3. **Geen allowlist, maar het netwerk.** Tailscale of een IP-beperking op de reverse proxy. Grover, want
|
|
|
|
|
het beperkt wie er mag verbinden en niet welke eigenaar mag schrijven. Voor één huishouden is dat
|
|
|
|
|
praktisch hetzelfde, en het kost geen regel code.
|
|
|
|
|
|
|
|
|
|
**Een detail dat optie 1 en 2 lastiger maakt dan ze klinken: je moet je eigen `OwnerId` kennen om hem te
|
|
|
|
|
kunnen vlaggen.** Trezor Suite toont die waarschijnlijk nergens. De uitweg is de allowlist niet te laten
|
|
|
|
|
typen maar te laten leren: **de eerste eigenaar die verbindt wordt toegelaten, de rest geweigerd**, met een
|
|
|
|
|
knop om die keuze te wissen. Dat is dezelfde gedachte als een sleutel die je bij de eerste verbinding
|
|
|
|
|
vastlegt, het vraagt geen interface om een id in te tikken, en het is precies genoeg voor het doel.
|
|
|
|
|
|
|
|
|
|
**Voorstel: doe optie 3 eerst.** Hij is gratis, hij lost het echte risico op, en hij houdt de deur open
|
|
|
|
|
voor optie 1 als er ooit iemand anders bij moet.
|
|
|
|
|
|
|
|
|
|
### 4c. De twee wegen naar buiten
|
|
|
|
|
|
2026-08-25 16:27:57 +02:00
|
|
|
Twee wegen, en ze sluiten elkaar niet uit.
|
|
|
|
|
|
|
|
|
|
**Tailscale.** umbrelOS heeft er een officiële app voor, en het is de weg van de minste weerstand: geen
|
|
|
|
|
poort open, geen certificaat, geen domein. De prijs is een account bij een derde partij en een client op
|
|
|
|
|
elk apparaat dat mee wil doen. Voor het datapad is dat geen bezwaar, want het verkeer loopt versleuteld
|
|
|
|
|
tussen de apparaten zelf en niet via die partij, maar de coördinatie loopt er wel langs.
|
|
|
|
|
|
|
|
|
|
**Een reverse proxy met een eigen domein en TLS.** Zwaarder op te zetten, maar er is één ding dat het
|
|
|
|
|
makkelijker maakt dan het lijkt: op deze Umbrel draait al een reverse proxy die certificaten beheert. Dat
|
|
|
|
|
is dezelfde die Electrum Gate gebruikt. Het nadeel blijft dat er dan wél een poort open moet.
|
|
|
|
|
|
|
|
|
|
**Voorstel: beginnen met Tailscale**, en de reverse proxy pas overwegen als er een apparaat is dat geen
|
|
|
|
|
Tailscale-client kan draaien.
|
|
|
|
|
|
|
|
|
|
Wat dit plan stuurt en wat hier nu nog onbekend is: **eist Trezor Suite een `https://`-adres?** Zo ja, dan
|
|
|
|
|
valt de kale Tailscale-route weg of moet er alsnog een certificaat bij. Dat antwoord komt uit
|
|
|
|
|
**Proefopstelling**, fase 4.
|
|
|
|
|
|
|
|
|
|
## 5. Het werk in grote lijnen
|
|
|
|
|
|
|
|
|
|
**Fase 1 - de keuze onderbouwen.** Vastleggen welke apparaten mee moeten doen en of Suite TLS eist.
|
|
|
|
|
Uitkomst: één gekozen weg, met de reden erbij.
|
|
|
|
|
|
|
|
|
|
**Fase 2 - opzetten.** De gekozen weg inrichten op de Umbrel en op één apparaat.
|
|
|
|
|
|
|
|
|
|
**Fase 3 - verifiëren onderweg.** Synchroniseren vanaf een verbinding die niet het thuisnetwerk is, en
|
|
|
|
|
daarna controleren dat het thuis nog steeds werkt.
|
|
|
|
|
|
|
|
|
|
## 6. Open punten
|
|
|
|
|
|
|
|
|
|
1. **Welke apparaten moeten buitenshuis kunnen synchroniseren?** Alleen een laptop is iets anders dan een
|
|
|
|
|
telefoon, en het bepaalt of Tailscale volstaat.
|
|
|
|
|
**Moment:** fase 1 · **Eigenaar:** gebruiker
|
2026-08-26 07:51:52 +02:00
|
|
|
2. **Eist Trezor Suite TLS?** - **nee, `http://` volstaat** (25-08-2026). Afgelezen uit de e2e-test van de
|
|
|
|
|
mobiele app in de broncode van Suite, die `http://10.0.2.2:4000` invult. Daarmee blijft de kale
|
|
|
|
|
Tailscale-route open en is een certificaat geen voorwaarde. Nog niet met de hand nagedaan, en het is
|
|
|
|
|
alleen gecontroleerd voor `suite-native`; de desktopversie is niet nagekeken.
|
|
|
|
|
3. **Komt er een eigenaars-allowlist, en zo ja welke van de drie uit §4b?**
|
|
|
|
|
Alleen aan de orde als er een open eindpunt komt. Bij Tailscale of een IP-beperking is de vraag niet
|
|
|
|
|
nodig, en dat is meteen het argument om daarmee te beginnen.
|
|
|
|
|
**Moment:** pas als fase 1 uitwijst dat een apparaat geen Tailscale kan draaien · **Eigenaar:** gebruiker
|
2026-08-25 16:27:57 +02:00
|
|
|
|
|
|
|
|
## 7. Verificatie
|
|
|
|
|
|
|
|
|
|
Synchroniseren vanaf een mobiel netwerk, dus niet vanaf de wifi thuis. Dat is de enige test die telt; een
|
|
|
|
|
test op het eigen netwerk met een externe naam kan slagen op een router die het verkeer naar binnen lust.
|
|
|
|
|
|
|
|
|
|
Daarna de tegenproef: werkt het thuis nog steeds, en werkt het nog als de gekozen weg wegvalt.
|