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>
This commit is contained in:
Harmen
2026-08-25 18:43:41 +02:00
co-authored by Claude Opus 5
parent c1ed04db84
commit fd62f48309
4 changed files with 59 additions and 0 deletions
+15
View File
@@ -34,6 +34,21 @@
Let op één ding als het ervan komt: de app-proxy staat op `PROXY_AUTH_ADD: "false"`, dus een pagina zou 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 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. 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 **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?** 3. **Wat doen we met de quota-manager als blijkt dat hij iets extern nodig heeft?**
@@ -33,6 +33,16 @@ Kleinigheid met een staart: de gebruiker `umbrel` zit hier niet in de groep `doc
`tools/evolu-relay/build.sh`, `Docs/Referenties/Umbrel-appstore-spec.md`, dit plan. `tools/evolu-relay/build.sh`, `Docs/Referenties/Umbrel-appstore-spec.md`, dit plan.
**Tests:** 32 goed 0 fout, 54 goed 0 fout en 39 goed 0 fout, niets overgeslagen. **Tests:** 32 goed 0 fout, 54 goed 0 fout en 39 goed 0 fout, niets overgeslagen.
**Nagekomen dezelfde dag, op de vraag van de gebruiker of deze app kwaad kan: er is een tweede weg naar
binnen die in geen enkel bestand van deze app staat.** umbrelOS maakt per app een Tor hidden service, en
die stond aan. In combinatie 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.
Het mechanisme geldt voor élke app en staat daarom in de gedeelde naslag en niet alleen hier. Het gevólg
verschilt: bij Electrum Gate legt dezelfde hidden service alleen de inlogpagina van umbrelOS bloot, want
daar staat de proxy-inlog gewoon aan. De les is de combinatie en niet de instelling: wie
`PROXY_AUTH_ADD` op `"false"` zet, moet meteen de hidden service beoordelen.
**Wat nog steeds niet bewezen is:** of het databaseschema zichzelf aanmaakt, of Trezor Suite dit adres **Wat nog steeds niet bewezen is:** of het databaseschema zichzelf aanmaakt, of Trezor Suite dit adres
accepteert, en of een eigenaar te registreren is. "Draait" is hier nog geen "synchroniseert". accepteert, en of een eigenaar te registreren is. "Draait" is hier nog geen "synchroniseert".
+26
View File
@@ -186,6 +186,32 @@ Een eigen `networks:`-blok op topniveau hoort er niet: de skill in `getumbrel/um
dat je `networks: default:` per service alleen gebruikt wanneer je een geteste statische IP of alias nodig dat je `networks: default:` per service alleen gebruikt wanneer je een geteste statische IP of alias nodig
hebt. Het `umbrel_main_network` handmatig als extern netwerk aanhaken is de oude 0.5-manier. hebt. Het `umbrel_main_network` handmatig als extern netwerk aanhaken is de oude 0.5-manier.
### Elke app krijgt een Tor hidden service, en dat is de tweede weg naar binnen
Vastgesteld op 25-08-2026 bij de eerste installatie van Evolu Relay, nadat de gebruiker vroeg of die app
kwaad kon. umbrelOS start per app een `<app-id>-tor_server-1`-container en publiceert de app als hidden
service. **Dat staat niet in de compose van de app en je ziet het dus niet als je die leest.** Controleren:
```sh
cat ~/umbrel/tor/data/app-<app-id>/hostname
```
Bestaat dat bestand, dan is er een `.onion`-adres en is de app vanaf het internet bereikbaar. Uit te zetten
per app in de umbrelOS-interface.
**Of dat erg is, hangt volledig af van `PROXY_AUTH_ADD`**, en dat maakt het een combinatie die je apart moet
beoordelen in plaats van per instelling:
| App | Inlog op de proxy | Wat de hidden service dan blootlegt |
|-|-|-|
| Electrum Gate | aan (standaard) | de inlogpagina van umbrelOS. Het dashboard zelf zit erachter. Zijn TLS-poort 50022 loopt niet via de proxy en zit dus niet op het onion-adres |
| Evolu Relay | **uit** (`"false"`, want Trezor Suite kan niet inloggen) | de relay zelf, zonder enige aanmelding. Alleen beschermd doordat het adres onraadbaar is |
De regel die daaruit volgt: **zet je `PROXY_AUTH_ADD` op `"false"`, beoordeel dan meteen de hidden service.**
Die twee samen maken van "alleen mijn thuisnetwerk" ongemerkt "het internet". Ook bij een app mét inlog is
uitzetten verdedigbaar, want dan staat er tenminste geen aanmeldscherm op het internet dat er niet hoefde
te staan.
**Images gepind op digest.** De regel uit dezelfde skill: pin elke image als **Images gepind op digest.** De regel uit dezelfde skill: pin elke image als
`registry/repo:versie-of-commit@sha256:<digest>`, houd tag en digest samen, en gebruik de **multi-arch `registry/repo:versie-of-commit@sha256:<digest>`, houd tag en digest samen, en gebruik de **multi-arch
index-digest**, niet de architectuurspecifieke. Te controleren met: index-digest**, niet de architectuurspecifieke. Te controleren met:
+8
View File
@@ -25,6 +25,14 @@ services:
# eigenaar weigert die geen limietenrij in de database heeft. Zet deze app # eigenaar weigert die geen limietenrij in de database heeft. Zet deze app
# dus niet zonder meer open naar het internet; zie het masterplan # dus niet zonder meer open naar het internet; zie het masterplan
# Bereikbaarheid. # Bereikbaarheid.
#
# En let op de tweede weg naar binnen, die je niet ziet in deze compose:
# umbrelOS maakt per app een Tor hidden service. Zonder inlog betekent dat
# bereikbaar vanaf het internet, alleen beschermd doordat het .onion-adres
# onraadbaar is. Bij Electrum Gate is dat geen bezwaar, want daar zit de
# inlog van umbrelOS ervoor; hier is die er juist uit. Zet de hidden service
# dus uit in umbrelOS tenzij je hem bewust wilt. Op 25-08-2026 stond hij bij
# de eerste installatie gewoon aan.
PROXY_AUTH_ADD: "false" PROXY_AUTH_ADD: "false"
relay: relay: