What it is
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.
What the relay can see
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.
Pointing an app at it
Set the address at the bottom of this page as the sync address in your 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.
Away from home you will need a way in, such as Tailscale or a reverse proxy with your own
domain.
Who may use it
What this app adds is the part a self-hosted relay needs and a public one does not: control
over who may use it. Opening the window for new owners accepts and remembers whoever connects
while it is open, so open it only while you pair a device of your own. One app can use more
than one owner id, so wait until nothing new appears before you close it again.
An owner that is refused syncs nothing at all, and nothing of it is stored: the relay turns
the connection away before it starts. Its device keeps everything locally and retries, so
allowing it later still brings the whole history across.
Owner ids are long and meaningless on purpose. Hover a row and use Label to
give one a name of your own; the name is kept on the Umbrel and is only ever shown here.