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
@@ -3,6 +3,19 @@
> Chronologisch sessielog, nieuwste bovenaan. Kort: 3 tot 6 regels per entry. Wat er is gebeurd en
> waarom, niet wat er nog moet: dat staat in [TAKEN.md](TAKEN.md).
## 08-09-2026 (later) - Evolu Relay: alles in één image, in de repo klaar
Direct erna, op verzoek van de gebruiker en met zijn keuze: één image met de relay erbij, geen tweede
recept. De drie templates zijn met `git mv` naar `tools/evolu-relay/` gegaan, naast `src/`; de Dockerfile
blijft op `node:24-slim` (om `better-sqlite3`) en haalt nginx en python3 uit apt. Twee dingen die Debian
anders doet dan de nginx-image en die je moet kennen: geen gebruiker `nginx` (dus `www-data`), en geen
`USER` meer in de image, zodat de compose de relay met `user: node` laat draaien en de andere twee als root.
De versie in de kop loopt nu via `api/status`, zoals bij Gate. Versie 0.6.0 in manifest, `VERSION` en drie
keer in de compose, ongepind. Tests: alle zes groen, niets overgeslagen; de vormtest toetst de drie tags
tegen `VERSION`. In de voorbeeldpagina staat v0.6.0 in de kop. **Niet geverifieerd: de image**, en dit is
de eerste met apt erin. Bouwen is aan de gebruiker.
## 08-09-2026 - gebouwd, gepind, geïnstalleerd: Gate draait op zijn eigen image
De gebruiker bouwde en duwde de image op de Umbrel; de bouw slaagde in één keer, dus de zorg over `apk add
+23 -8
View File
@@ -29,9 +29,10 @@
mutatie-getest; details in [PROGRESS.md](PROGRESS.md)
- [x] **Fase 4 gedaan (08-09-2026): gebouwd, geduwd, gepind, geüpdatet, herinstalleerd.** Electrum Gate
draait op zijn eigen image en de app-datamap is schoon. Voor Gate is dit plan klaar
- [ ] **Volgende stap: hetzelfde voor de agent en de pagina van Evolu Relay.** Zie "Daarna" onderaan. De
weg is nu bij Gate bewezen, dus dit kan zonder onbekenden: `tools/evolu-relay/` krijgt naast de
relay-image een tweede recept, of één image met de relay erbij; dat is de eerste keuze om te maken
- [x] **Evolu Relay in de repo gedaan (08-09-2026), als 0.6.0:** één image met de relay erbij, zie fase 5
- [ ] **Volgende stap: de Relay-image bouwen, duwen, pinnen en updaten.** Van de gebruiker; zie fase 5.
Daarna is dit plan voor beide apps af en gaat het naar `Archief/`; wat overblijft (multi-arch,
anonieme pull per verhoging) hoort bij **Publicatie-Gate** en **Publicatie-Relay**
- [x] **Open punt 1 beantwoord (27-08-2026): voor nu Gitea, bij inlevering opnieuw kijken.** Daarmee is de
enige vraag weg die vóór het bouwen beantwoord moest zijn. Zie [OPEN.md](OPEN.md)
@@ -94,12 +95,26 @@
- [x] **`icon.png` is hiermee updatebaar**, want die zit in de image. Dat was de enige echte uitzondering
op "alles komt al aan bij een update"; zie [PLAN.md](PLAN.md) §1
## Daarna - Evolu Relay
## Fase 5 - Evolu Relay
- [ ] **Hetzelfde voor de agent en de pagina van Evolu Relay**, die nog als `*.template` op
`python:3-alpine` en `nginx:alpine` draaien; zie [PLAN.md](PLAN.md) §8. Pas na fase 4 hierboven:
eerst zien dat de weg werkt voordat de tweede app hem gaat
- [x] **Beslist (08-09-2026, gebruiker): één image met de relay erbij**, geen tweede recept. Basis blijft
`node:24-slim` om `better-sqlite3`; nginx en python3 komen uit apt
- [x] **Agent, nginx-config en pagina naar `tools/evolu-relay/`** met `git mv`, zonder `.template`.
Dockerfile en build.sh herschreven; bouwcontext is de repo-root, zoals bij Gate. `VERSION` 0.6.0,
manifest 0.6.0, drie keer dezelfde tag in de compose, ongepind tot de eerste push
- [x] **Wat er anders is dan verplaatst:** `user www-data;` in nginx.conf (Debian heeft geen gebruiker
nginx), `user: node` op de relay-service in de compose (de image heeft geen `USER` meer), de versie
via `api/status` met `RELAY_APP_VERSION`, en `PYTHONUNBUFFERED` als `ENV` in de image
- [x] Tests mee: `test_relay_agent.py` laadt `tools/evolu-relay/agent.py`; de vormtest toetst de drie
tags tegen `VERSION`; de paginatest en `voorbeeldpagina.mjs` vinden de pagina zelf
- [ ] **Bouwen, duwen, pinnen, updaten, nakijken.** Van de gebruiker, op de Umbrel:
`sh tools/evolu-relay/build.sh`, dan de digest **drie keer** in de compose. Nakijken: de pagina met
v0.6.0 in de kop, een sync vanuit Trezor Suite, en of `owners.json` en de labels de update overleefd
hebben (die staan onder `data/relay` en zijn niet aangeraakt). **Eerste keer voor deze image met
apt erin**, dus reken op een ronde: of `nginx` uit Debian zonder `www-data`-verrassingen start, en of
de relay als `node` nog in `data/relay` kan schrijven nu de map niet meer door de image aangemaakt
wordt
## Geblokkeerd / wacht op
Niets. Het Relay-deel kan beginnen; bouwen blijft werk van de gebruiker op de Umbrel.
De laatste stap van fase 5 wacht op de gebruiker: bouwen kan alleen op de Umbrel.
+8 -4
View File
@@ -262,10 +262,14 @@ tonen, maar drie klassen fouten hoeven niet op het apparaat gevonden te worden:
- [x] **De Postgres-pin is vervallen (28-08-2026):** die database zit niet meer in de app
- [x] **De statuspagina verbeteren, op een lijst van de gebruiker.** De lijst kwam op 30-08-2026 en is in
één ronde uitgevoerd; zie fase 6 hieronder
- [ ] **`python:3-alpine` en `nginx:alpine` pinnen op hun multi-arch index-digest. WACHT OP het plan
Eigenimage; doe dit niet eerder.** Op aanwijzing van de gebruiker (30-08-2026): die twee images zijn
de plek waar de agent en de pagina van deze app uitgevoerd worden, en dat is precies wat **Eigenimage**
naar een eigen image verhuist. Pin je ze nu, dan pin je iets dat verdwijnt.
- [x] **`python:3-alpine` en `nginx:alpine` pinnen: vervallen (08-09-2026).** Sinds 0.6.0 zitten de agent
en de pagina in de eigen relay-image (plan **Eigenimage**, fase 5), en die twee images staan niet
meer in de compose. Wat er te pinnen is, is de eigen image, en dat gebeurt bij elke verhoging. De
oude tekst hieronder blijft staan als uitleg waarom er tot dan bewust níet gepind is.
Op aanwijzing van de gebruiker (30-08-2026): die twee images waren
de plek waar de agent en de pagina van deze app uitgevoerd werden, en dat is precies wat **Eigenimage**
naar een eigen image verhuisde. Pin je ze dan, dan pin je iets dat verdwijnt.
De eis komt uit **Publicatie-Relay** en die is nog ver weg, dus er is geen haast. De regel en de hele
keten erachter staan in [KNOWLEDGE.md](../../../KNOWLEDGE.md); de commando's in