De app losgetrokken van een enkele client

Op verzoek van de gebruiker is dit geen app meer over de labels van een bepaalde
wallet, maar wat het technisch al was: een relay voor apps die op Evolu gebouwd
zijn. De tagline, de beschrijving, de releaseNotes en de statuspagina noemen geen
enkele client meer, en category gaat van bitcoin naar files, waar de officiele
store ook synchronisatie tussen apparaten onderbrengt.

De tekst leunt op wat Evolu zelf schrijft en niet op een verzinsel: local-first,
end-to-end versleuteld voordat het je apparaat verlaat, en een relay die alleen
een owner id, tijdstempels en gevulde blobs ziet. Daar staat expliciet bij wat
zelf hosten wel en niet verandert, want geheimer wordt de data er niet van; wie de
versleutelde kopie bewaart en wie kan zien dat je synchroniseert wel.

De tegenwerping is niet weerlegd maar geaccepteerd, en dat staat als zodanig in
open punt 7: "Evolu Relay" zegt een Umbrel-gebruiker niets, terwijl de labels van
een bekende wallet een concrete reden zijn om te installeren. Vindbaarheid
inleveren is hier een keuze. Blijkt het te knellen, dan is daar terug te lezen
waarom.

In het Nederlandse codecommentaar blijft de historische toelichting staan, want
die legt uit waarom de relay van Trezor eruit is gegaan. Alleen de regels die de
app beschrijven zijn generiek gemaakt.

Tests: test_appstore_vorm 34 goed, 0 fout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-08-28 11:49:15 +02:00
co-authored by Claude Opus 5
parent 2b17f79181
commit d5bbc3fc0b
4 changed files with 55 additions and 43 deletions
+10 -1
View File
@@ -201,7 +201,16 @@
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
7. **Hoe positioneren we de app als het de generieke Evolu-relay wordt?**
7. **Hoe positioneren we de app als het de generieke Evolu-relay wordt?** - **beslist op 28-08-2026 door
de gebruiker: helemaal generiek.** De app-tekst noemt Trezor niet meer, `category` gaat van `bitcoin`
naar `files`, en de pagina spreekt over "your app" in plaats van één cliënt. De onderbouwing komt van
Evolu zelf: local-first, end-to-end versleuteld, en een relay die alleen een `OwnerId`, tijdstempels en
gevulde blobs ziet.
**De tegenwerping hieronder is niet weerlegd maar geaccepteerd**, en dat hoort erbij: "Evolu Relay" zegt
een Umbrel-gebruiker niets, terwijl de labels van Trezor Suite een concrete reden zijn om te
installeren. Vindbaarheid inleveren is hier een keuze en geen vergissing. Blijkt het later te knellen,
dan is dit de plek om terug te lezen waarom.
Opgemerkt door de gebruiker op 25-08-2026, meteen na punt 6: verpakken we niet langer iets van Trezor maar
een relay van Evolu, dan hoeft de app-tekst niet meer over Trezor te gaan.
+4 -4
View File
@@ -1,5 +1,5 @@
# ═══════════════════════════════════════════════════════════════════════════════
# Evolu Relay - je eigen sync-server voor de labels van Trezor Suite.
# Evolu Relay - je eigen sync-server voor apps die op Evolu gebouwd zijn.
#
# Drie containers: de relay, een agent voor de statuspagina, en nginx die die
# pagina serveert. Geen Postgres en geen quota-manager meer; die hoorden bij de
@@ -14,8 +14,8 @@
# relay daar en moest de inlog dus uit, waardoor een statuspagina net zo
# onbeschermd zou zijn als de relay zelf;
# - de RELAY publiceert zijn eigen poort, waar Zoraxy met TLS naartoe wijst.
# Trezor Suite is geen browser met een sessiecookie en zou achter de inlog een
# inlogpagina krijgen in plaats van de relay.
# een sync-cliënt is geen browser met een sessiecookie en zou achter de inlog
# een inlogpagina krijgen in plaats van de relay.
#
# Dat is hetzelfde patroon als Electrum Gate in deze store: de web-UI via de
# proxy, het protocol op een eigen poort. Zie PLAN.md §4h.
@@ -93,7 +93,7 @@ services:
# netwerk. De vorm <app-id>_<service>_1 is uniek per app.
RELAY_HOST: whatsnext-evolu-relay_relay_1
RELAY_PORT: "4000"
# Alleen om op de pagina het adres te tonen dat je in Trezor Suite invult.
# Alleen om op de pagina het adres te tonen dat je in je cliënt invult.
# Moet gelijk zijn aan de hostpoort hierboven.
RELAY_PUBLIC_PORT: "3852"
RELAY_API_PORT: "8000"
+5 -5
View File
@@ -219,7 +219,7 @@ footer { color: var(--text-ter); font-size: 0.78rem; text-align: center; margin-
<span class="spacer"></span>
<button class="theme-toggle" id="theme">Light</button>
</header>
<p class="sub">Your own sync server for Trezor Suite labels. Nothing leaves your machine.</p>
<p class="sub">Encrypted sync and backup for your local-first apps, on hardware you own.</p>
<div class="notice" id="notice"></div>
@@ -242,12 +242,12 @@ footer { color: var(--text-ter); font-size: 0.78rem; text-align: center; margin-
</div>
<div class="card">
<h2>Point Trezor Suite here</h2>
<h2>Point your app here</h2>
<div class="url-box" id="relay-url">-</div>
<p class="hint">
In Trezor Suite, open the developer settings and set the custom relay URL. Leave the quota manager
URL empty: Suite ignores it once a custom relay is set. The address must start with http or https;
Suite rejects ws.
Set this as the sync address in your Evolu app. Some apps only offer the field in their developer
or advanced settings. The address has to start with http or https, not ws, even though the
connection itself is a websocket: the client works that out on its own.
</p>
</div>
+36 -33
View File
@@ -9,69 +9,72 @@
# andere app af. Een leeg veld zou suggereren dat er iets te kiezen valt.
manifestVersion: 1
id: whatsnext-evolu-relay
category: bitcoin
category: files
name: Evolu Relay
version: "0.2.1"
tagline: Sync your Trezor Suite labels through your own machine
tagline: Encrypted sync and backup for your local-first apps
description: >-
Trezor Suite can sync the labels and account names you give your addresses across your
devices. By default that runs through a server operated by Trezor. This app runs that
server on your Umbrel instead, so the sync goes through a machine you own.
Local-first apps keep your data on your own device and work whether or not you have a
connection. A relay is what lets a second device catch up: it holds the encrypted changes
until your other devices come online. This app runs that relay on your Umbrel, so the copy
in the middle sits on hardware you own.
The data is end to end encrypted on your device before it leaves, so Trezor cannot read
your labels either way. What self-hosting changes is who holds the encrypted copy and who
can see that you are syncing at all.
It is the relay from the Evolu project, taken straight from the package they publish and not
reimplemented here. Any app built on Evolu can use it.
This runs the relay from the Evolu project, the sync layer Trezor Suite is built on, taken
straight from the package they publish. Nothing about it is reimplemented here. What this app
adds is the part a self-hosted relay needs and an open one does not: control over who may use
it.
Your data is encrypted on your device before it leaves. The relay holds encrypted blobs,
padded so their size says nothing, and never has the key. What it can see is an owner id,
which identifies data without identifying you, along with timestamps and the addresses that
connect. Self-hosting does not make the data more secret than it already is; what it changes
is who keeps the encrypted copy, who can see that you are syncing at all, and whether anyone
can pull the service out from under you.
The tile opens a status page. It shows whether the relay is running, how much it stores, and
which devices are allowed. New devices are accepted one at a time: the first owner that
connects is remembered, and you close the door again once your own devices are paired. Any
owner can be blocked or removed later from that same page.
What this app adds is the part a self-hosted relay needs and a public one does not: control
over who may use it. New owners are accepted one at a time. The first one that connects is
remembered, and you close the door again once your own devices are paired; anything new is
refused until you open it. Any owner can be blocked or removed later.
Point Trezor Suite at this Umbrel to use it. Away from home you will need a way in, such as
Tailscale or a reverse proxy with your own domain.
The tile opens a status page behind your umbrelOS login, showing whether the relay is
running, how much it holds, when it was last written to, and which owners are allowed. Point
your app at the address shown there. Away from home you will need a way in, such as Tailscale
or a reverse proxy with your own domain.
releaseNotes: >-
Fixes a status page that alternated between working and showing an error. It reached its helper by a
short name that another app in this store uses as well, so about half of its requests ended up at the
wrong app. It now uses a name that is unique to this one.
This release also drops the wording that tied the app to one particular client. It is a general
purpose Evolu relay: any app built on Evolu can use it.
Earlier releases:
0.2.0 was a different relay, and a much smaller app. 0.0.2 packaged the relay Trezor runs for their own
hosted service, with a quota manager and a PostgreSQL database beside it. That combination
cannot work on your own machine: Suite skips the quota manager as soon as you point it at a
relay of your own, while that relay refuses every owner the quota manager never registered.
0.2.0 replaced the relay this app shipped with. Until 0.0.2 it packaged a vendor's own deployment,
which came with a quota manager and a PostgreSQL database and could not work outside that vendor's
service: clients skip the quota manager as soon as you point them at a relay of your own, while
that relay refuses every owner the quota manager never registered. 0.2.0 uses the relay from the
Evolu project instead. Measured, not assumed: a client synced to it and the data arrived. Three
containers became one relay plus a status page, and the database and its password are gone.
This release uses the relay from the Evolu project instead, which Trezor Suite talks to
directly. Measured, not assumed: Suite sent labels to it and they arrived. The database and
the quota manager are gone, and three containers became one relay plus a status page.
0.2.0 also added the status page behind your umbrelOS login, and control over who may sync.
New: a status page behind your umbrelOS login, and control over who may sync. The first owner
that connects is remembered and accepted; after that you close the door, and anything new is
refused until you open it again.
Not verified yet: reading back from a second device, and whether the iOS app can use a relay
of your own at all.
Not verified yet: reading back from a second device, and whether every client platform can use a
relay of your own.
developer: "WhatsNext?"
website: https://sc.kamenier-hamer.nl/sysop/UmbrelApps
repo: https://sc.kamenier-hamer.nl/sysop/UmbrelApps
support: https://sc.kamenier-hamer.nl/sysop/UmbrelApps/issues
# De poort waarop umbrelOS deze app aanbiedt. Sinds 0.1.0 is dat de STATUSPAGINA
# en niet de relay: de app-proxy zet er de inlog van umbrelOS voor, en daar hoort
# een pagina wel achter en een relay niet. Trezor Suite wijst naar 3852, die de
# een pagina wel achter en een relay niet. De cliënt wijst naar 3852, die de
# relay zelf publiceert. Zie docker-compose.yml en het plan Umbrelapp, PLAN.md §4h.
#
# Niet 4000, de eigen poort van de relay: die is een veelgebruikte poort en een