Relay 0.6.0: alles in een image, de app-map is leeg

Plan Eigenimage, fase 5, op keuze van de gebruiker: een image met de relay
erbij en geen tweede recept. agent.py, nginx.conf en index.html verhuizen
naar tools/evolu-relay/ naast src/; de Dockerfile blijft op node:24-slim en
haalt nginx en python3 uit apt. Drie containers uit een image: de relay als
node via de compose, de agent en nginx als root.

Anders dan alleen verplaatst: user www-data in nginx.conf (Debian heeft geen
gebruiker nginx), geen USER meer in de image, de versie in de kop via
api/status met RELAY_APP_VERSION. VERSION 0.6.0, manifest 0.6.0, drie keer
dezelfde tag in de compose, ongepind tot de eerste push.

Tests mee verhuisd; de vormtest toetst de drie tags tegen VERSION. Niet
gebouwd: er is hier geen Docker.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-09-08 16:36:30 +02:00
co-authored by Claude Fable 5.1
parent 0e824a6354
commit a694a9cbd1
18 changed files with 327 additions and 177 deletions
+18 -8
View File
@@ -26,8 +26,8 @@ Deze gelden voor élke app hier, want het zijn eigenschappen van umbrelOS. Met b
sloopt Python-code, en in een nginx-config betekent het geen `$host`, geen `log_format` en geen
`access_log` met variabelen. Moet er tóch een dollarteken in een nginx-directive, dan hoort die directive
in een bestand dat het `command`-blok van de compose wegschrijft (daar is `$$` te ontsnappen), of in een
eigen image, waar geen envsubst aan te pas komt. Electrum Gate doet sinds 0.1.0 het tweede; Evolu Relay
heeft zijn agent en pagina nog als `*.template`.
eigen image, waar geen envsubst aan te pas komt. Beide apps doen sinds september 2026 het tweede; er
staat geen `*.template` meer in deze repo, maar de regel blijft gelden voor wie er een bij zet.
**Wat bij een update meekomt is een whitelist**: `docker-compose.yml`, `*.template`, `exports.sh`, `torrc`,
`hooks` en `umbrel-app.yml`. Al het andere bereikt een bestaande installatie nooit, zonder foutmelding.
@@ -78,11 +78,12 @@ Er is ook een test over de **pagina's** van beide apps, en die is geen Python:
node tests/test_paginas_parsen.mjs
```
Hij toetst dat de JavaScript in elke statuspagina parseert. Een pagina staat op een van twee plekken: als
`index.html.template` in de app-map (Evolu Relay; dan toetst hij ook dat het script heel blijft ná de
invulling door umbreld) of als `index.html` in `tools/<app>/` (Electrum Gate sinds 0.1.0; dan toetst hij
dat er geen accolade-variabele meer in staat). Dat is de enige klasse paginafouten die niet op het
apparaat gevonden hoeft te worden; alles wat de pagina *toont* blijft handwerk in een browser.
Hij toetst dat de JavaScript in elke statuspagina parseert. Een pagina kan op twee plekken staan: als
`index.html.template` in de app-map (dan toetst hij ook dat het script heel blijft ná de invulling door
umbreld) of als `index.html` in `tools/<app>/` (dan toetst hij dat er geen accolade-variabele meer in
staat). Sinds september 2026 staan beide pagina's op de tweede plek. Dat is de enige klasse paginafouten
die niet op het apparaat gevonden hoeft te worden; alles wat de pagina *toont* blijft handwerk in een
browser.
**Wil je een pagina bekijken, gebruik `tools/voorbeeldpagina.mjs`.** Een statuspagina is niet zomaar te
openen: de gegevens komen van een agent die alleen in de app bestaat, en in een `*.template` staan
@@ -215,8 +216,17 @@ relay ergens kunt neerzetten is dat hij de sleutel niet heeft, en het manifest b
Onderhoudsfuncties die de inhoud kennen horen in de tool in `HomeGit/Trezor`. Zie §11 van hetzelfde
naslagdocument en `OPEN.md` punt 11.
**Alles zit in één image, sinds 0.6.0 (08-09-2026): de relay, de agent en de pagina.** `tools/evolu-relay/`
heeft naast `src/` ook `agent.py`, `nginx.conf` en `index.html`; in de app-map staan alleen nog compose,
manifest, icoon en `data/`. Basis is `node:24-slim` (om `better-sqlite3`, dat geen musl-binaries heeft)
met nginx en python3 uit apt. Twee gevolgen die je moet kennen: nginx draait als `www-data`, want Debian
heeft geen gebruiker `nginx`; en de image heeft geen `USER`, dus de compose zet `user: node` op de
relay-service en de andere twee draaien als root. De versie in de kop van de pagina komt uit `api/status`
via `RELAY_APP_VERSION`. Verhoog je `VERSION` in `build.sh`, dan ook het manifest en de tag in de compose,
**drie keer**.
**Deze app draait en wordt gebruikt sinds 28-08-2026**, maar dat geldt niet voor elke wijziging: er zit een
bouwstap tussen de repo en het apparaat. Een wijziging in `tools/evolu-relay/src/` is pas uitgerold als de
bouwstap tussen de repo en het apparaat. Een wijziging in `tools/evolu-relay/` is pas uitgerold als de
image gebouwd, geduwd en met zijn digest in de compose gezet is, en dat kan alleen de gebruiker. Meld dus
per wijziging wat er wél geverifieerd is; "de app werkt" is geen uitspraak over de code van vandaag.