2026-08-25 17:18:22 +02:00
|
|
|
# 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
|
2026-08-28 11:49:15 +02:00
|
|
|
category: files
|
2026-08-25 17:18:22 +02:00
|
|
|
name: Evolu Relay
|
2026-09-10 09:54:22 +02:00
|
|
|
version: "0.7.1"
|
2026-08-28 11:49:15 +02:00
|
|
|
tagline: Encrypted sync and backup for your local-first apps
|
2026-08-25 17:18:22 +02:00
|
|
|
description: >-
|
2026-08-28 11:49:15 +02:00
|
|
|
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.
|
2026-08-25 17:18:22 +02:00
|
|
|
|
|
|
|
|
|
2026-08-28 11:49:15 +02:00
|
|
|
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.
|
2026-08-25 17:18:22 +02:00
|
|
|
|
|
|
|
|
|
2026-08-28 11:49:15 +02:00
|
|
|
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.
|
2026-08-28 11:22:32 +02:00
|
|
|
|
|
|
|
|
|
2026-08-28 11:49:15 +02:00
|
|
|
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.
|
2026-08-25 17:18:22 +02:00
|
|
|
|
|
|
|
|
|
2026-08-28 11:49:15 +02:00
|
|
|
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.
|
2026-08-25 17:18:22 +02:00
|
|
|
releaseNotes: >-
|
2026-09-10 10:01:15 +02:00
|
|
|
Tidying up the two owner panels. They are called Accepted and Waiting now, the count of owners waiting
|
|
|
|
|
sits in that panel's own heading instead of a widget at the top, the note under the relay address is
|
|
|
|
|
gone, and a row on the waiting list no longer carries a "Waiting" tag: the panel it sits in already says
|
|
|
|
|
that, and a blocked owner is now the only row with a tag.
|
2026-09-09 15:45:55 +02:00
|
|
|
|
|
|
|
|
|
2026-09-10 09:54:22 +02:00
|
|
|
Every row is the same height as well, in both panels. A row used to grow the moment you gave it a
|
|
|
|
|
name, because the name pushed the owner id onto a line of its own; the id now shares the second line
|
|
|
|
|
with the timestamps.
|
2026-09-09 15:45:55 +02:00
|
|
|
|
|
|
|
|
|
2026-09-10 10:01:15 +02:00
|
|
|
About this app no longer insists the sync address must start with http. Which scheme the field in your
|
|
|
|
|
app wants depends on the app; the host and the port are the same either way.
|
|
|
|
|
|
|
|
|
|
|
2026-09-09 15:45:55 +02:00
|
|
|
Everything in 0.6.0:
|
|
|
|
|
|
|
|
|
|
|
2026-09-08 16:36:30 +02:00
|
|
|
The whole app now ships as one image: the relay, the status page and the small helper behind it. Until
|
|
|
|
|
now only the relay did, and the other two were mounted into stock images from the app folder. Nothing
|
|
|
|
|
changes in what the app does; the app data folder now holds only your data, and the icon updates along
|
|
|
|
|
with everything else.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Everything in 0.5.6:
|
|
|
|
|
|
|
|
|
|
|
2026-09-07 19:24:40 +02:00
|
|
|
Owners are now listed most recently seen first, in both panels. Until now the rows kept the order in
|
|
|
|
|
which owners first showed up, which stops meaning anything after a week. The order follows along on its
|
|
|
|
|
own: the page refreshes its lists every few seconds, so a reconnecting owner moves to the top without a
|
|
|
|
|
reload.
|
2026-09-04 09:55:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
Everything in 0.5.4:
|
|
|
|
|
|
|
|
|
|
|
2026-08-31 12:14:37 +02:00
|
|
|
The status widget has moved to the right of the top row and is now called Status, matching Electrum
|
|
|
|
|
Gate. The two pages are one app store and they should read the same way.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Everything in 0.5.3:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Two adjustments to the refresh. The Relay card reads in the accent colour again when it says
|
2026-08-31 11:47:30 +02:00
|
|
|
Running, and on a phone the page drops back to the flat look: the glow is wider than a phone screen,
|
|
|
|
|
so it stopped being a gradient and became a haze over everything.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Everything in 0.5.2:
|
|
|
|
|
|
|
|
|
|
|
2026-08-31 11:28:11 +02:00
|
|
|
A visual refresh, shared with the other apps in this store. The page now has a soft glow behind it in
|
|
|
|
|
the accent colour, and the cards are translucent with a light edge and a shadow, so they read as
|
|
|
|
|
panels sitting on the page instead of flat blocks painted on it. Card corners are a little tighter,
|
|
|
|
|
and every framed element now uses the same corner radius. Nothing about what the relay does has
|
|
|
|
|
changed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Everything in 0.5.1:
|
|
|
|
|
|
|
|
|
|
|
2026-08-30 13:17:26 +02:00
|
|
|
Fixes a message at the top of the page that never went away. Confirming that a command was sent is worth
|
|
|
|
|
saying for a second or two, but it stayed until you reloaded the page, so it was still there long after it
|
|
|
|
|
stopped being true. It now clears itself as soon as the relay has picked the command up. A refusal is the
|
|
|
|
|
exception and stays put: that is the only explanation you get of what went wrong.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Everything in 0.5.0, released the same day:
|
|
|
|
|
|
|
|
|
|
|
2026-08-30 12:26:56 +02:00
|
|
|
Accepting a new owner is now a two minute window instead of a switch you have to remember to turn
|
|
|
|
|
back off. Open it, pair your device, and it closes on its own; you can close it early or restart the
|
|
|
|
|
two minutes if you need longer. The countdown runs on the Umbrel, so closing the page does not leave
|
|
|
|
|
the door open.
|
2026-08-28 11:41:58 +02:00
|
|
|
|
|
|
|
|
|
2026-08-30 12:26:56 +02:00
|
|
|
Owner ids can be given a name. They are long strings of random characters that say nothing about
|
|
|
|
|
which of your devices or wallets they are, so hover a row and label it. Names are kept on your Umbrel
|
|
|
|
|
and are never sent anywhere.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Blocked owners and refused attempts were two lists and are now one, because what you do with them is
|
|
|
|
|
the same: allow, or forget. Each row carries a badge saying which it was.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The page itself has been rebuilt to match Electrum Gate in this store: the same width, the same
|
|
|
|
|
layout, the same header, and the version number where you can see it. Buttons appear when you hover a
|
|
|
|
|
row, so a page you are only reading stays quiet. Explanatory paragraphs have moved into a new
|
|
|
|
|
"About this app" item in the menu, which also spells out what the relay can and cannot see.
|
2026-08-28 11:49:15 +02:00
|
|
|
|
|
|
|
|
|
2026-08-28 11:41:58 +02:00
|
|
|
Earlier releases:
|
|
|
|
|
|
|
|
|
|
|
2026-08-30 12:26:56 +02:00
|
|
|
0.4.0 fixed 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0.4.0 also dropped 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.
|
|
|
|
|
|
|
|
|
|
|
2026-08-28 11:49:15 +02:00
|
|
|
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.
|
2026-08-25 18:31:20 +02:00
|
|
|
|
|
|
|
|
|
2026-08-28 11:49:15 +02:00
|
|
|
0.2.0 also added the status page behind your umbrelOS login, and control over who may sync.
|
2026-08-25 17:18:22 +02:00
|
|
|
|
|
|
|
|
|
2026-08-28 11:49:15 +02:00
|
|
|
Not verified yet: reading back from a second device, and whether every client platform can use a
|
|
|
|
|
relay of your own.
|
2026-08-25 17:18:22 +02:00
|
|
|
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
|
2026-08-28 11:22:32 +02:00
|
|
|
# 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
|
2026-08-28 11:49:15 +02:00
|
|
|
# een pagina wel achter en een relay niet. De cliënt wijst naar 3852, die de
|
2026-08-28 11:22:32 +02:00
|
|
|
# relay zelf publiceert. Zie docker-compose.yml en het plan Umbrelapp, PLAN.md §4h.
|
2026-08-25 17:18:22 +02:00
|
|
|
#
|
|
|
|
|
# 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 ────────────────
|
|
|
|
|
#
|
2026-08-28 11:13:23 +02:00
|
|
|
# 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
|
2026-08-25 17:18:22 +02:00
|
|
|
|
|
|
|
|
# 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: []
|