Files
UmbrelApps/whatsnext-evolu-relay/umbrel-app.yml
T
HarmenandClaude Opus 5 c57197637f Wat de eerste echte gebruiksdag opleverde: logging, geschiedenis, uitlijning
Drie dingen die vandaag misgingen of ontbraken, en die alle drie uit gebruik
kwamen en niet uit nadenken.

De allowlist logde niets als een bekende eigenaar terugkwam en niets als er een
geweigerd werd. Daardoor stond er een tweede eigenaar drieentwintig keer aan de
deur zonder dat het log er iets over zei; het stond alleen op de pagina. Nu is er
een regel per eigenaar per keer dat het proces draait, dus ook bij terugkomst en
bij weigering, met een bovengrens omdat een weigering een id bevat dat de ander
zelf verzint. Een geweigerde schrijfactie logt voortaan hoeveel bytes er gevraagd
werden en welke grens gold, met de naam van de variabele erbij.

Allow gooide de geschiedenis weg. Een eigenaar die je alsnog toeliet kreeg "first
seen" op het moment van de klik, terwijl hij al twintig minuten stond te
kloppen. Juist daar wil je zien sinds wanneer. Met een toets erop.

En de knoppen stonden niet recht: id, gegevens en knoppen stonden naast elkaar,
dus de lengte van de gegevensregel bepaalde of de rij afbrak. Een eigenaar met
een last seen duwde zijn knoppen naar de volgende regel en dus naar links.
Nu staan naam en gegevens onder elkaar in een kolom en worden de knoppen altijd
naar rechts geduwd.

Inhoudelijk het belangrijkste: "de eerste eigenaar wint" is te smal. Een enkele
app kan meer dan een eigenaar gebruiken, en de pagina adviseerde de deur te
sluiten zodra de eerste binnen was. Daarmee sluit je je eigen tweede eigenaar
buiten. De tekst zegt nu te wachten tot er een minuut niets nieuws meer bij komt.

Image naar 0.3.0. De digest van 0.2.0 is uit de compose gehaald in plaats van
blijven staan: die zou naar de vorige image wijzen terwijl de tag iets anders
belooft.

Tests: alle vier groen (34, 54, 39 en 61 goed, 0 fout).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 12:08:19 +02:00

106 lines
5.4 KiB
YAML

# De veldvolgorde hieronder is niet vrij: de packaging-documentatie van de
# officiele appstore schrijft hem voor. Zie de tabel in
# Docs/Referenties/Umbrel-appstore-spec.md.
#
# Wat de spec niet noemt staat onderaan dit bestand en niet ertussen. Dan is de
# voorgeschreven kop letterlijk goed en hoeft er bij inlevering alleen iets weg.
#
# `dependencies` is weggelaten en niet leeg gezet: deze app hangt van geen enkele
# andere app af. Een leeg veld zou suggereren dat er iets te kiezen valt.
manifestVersion: 1
id: whatsnext-evolu-relay
category: files
name: Evolu Relay
version: "0.3.0"
tagline: Encrypted sync and backup for your local-first apps
description: >-
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.
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.
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.
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.
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. And the explanation under the new owners
switch now matches the switch: it used to describe the open state even when it was closed.
Earlier releases:
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.
0.2.0 also added the status page behind your umbrelOS login, and control over who may sync.
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. 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
# botsing op de host merk je pas als de app niet start. Dat heeft bij Electrum
# Gate een keer een dag gekost, met 50002 tegen Fulcrum. 3851 sluit aan op de 3850
# van die app.
port: 3851
# Leeg laten bij een nieuw pakket; de plaatjes doet het store-team zelf.
gallery: []
path: ""
submitter: "WhatsNext?"
submission: https://sc.kamenier-hamer.nl/sysop/UmbrelApps
# ── Hieronder staat wat de voorgeschreven volgorde niet noemt ────────────────
#
# Het icoon, sinds 28-08-2026. Het bestand staat in deze repo en wordt door Gitea
# rauw uitgeleverd; dezelfde constructie als bij Electrum Gate. Bij inlevering in
# de officiële store moet deze regel juist weg, want die host iconen apart.
# Daarom staat hij als laatste: dan is het één regel schrappen.
icon: https://sc.kamenier-hamer.nl/sysop/UmbrelApps/raw/branch/main/whatsnext-evolu-relay/icon.png
# Wat niet in de back-up hoeft. Paden zijn relatief aan de app-datamap.
#
# Voor deze app is dat vrijwel niets, en dat is expres: de database ís de waarde
# van de app. Electrum Gate gebruikt dit veld wel, maar daar gaat het om een log
# en een statusbestand. Neem die keuze hier niet uit gewoonte over.
backupIgnore: []