2026-08-27 16:42:56 +02:00
|
|
|
|
# Taken - Eigenimage
|
|
|
|
|
|
|
2026-09-08 17:08:47 +02:00
|
|
|
|
> **Afgerond op 08-09-2026.** Beide apps draaien op een eigen image, gepind, met een lege app-datamap.
|
|
|
|
|
|
> Dit plan staat in `Archief/` en wordt niet meer bewerkt.
|
|
|
|
|
|
>
|
|
|
|
|
|
> Prioriteit: – (was **A**) | Wacht op: –
|
2026-08-27 16:42:56 +02:00
|
|
|
|
>
|
|
|
|
|
|
> **Gepromoveerd van masterplan naar `Actief/` op 27-08-2026**, direct na het afronden van
|
|
|
|
|
|
> **Webinterface**. Dat was de volgorde die de gebruiker die dag afsprak, en de reden staat in
|
|
|
|
|
|
> [PLAN.md](PLAN.md) §9: een eigen image maakt van elke paginawijziging een bouwronde, en dat had het
|
|
|
|
|
|
> werk aan de webinterface geremd. Dat werk is nu klaar.
|
|
|
|
|
|
>
|
2026-08-27 16:47:29 +02:00
|
|
|
|
> **Het register is beslist (27-08-2026): Gitea, net als bij Evolu Relay.** Bij inlevering wordt het
|
|
|
|
|
|
> opnieuw bekeken, en dat is dan een taak van **Publicatie-Gate**. De gebruiker is uitdrukkelijk nog niet
|
|
|
|
|
|
> toe aan publiceren: dit is voorlopig zijn eigen app voor eigen gebruik. Zie [OPEN.md](OPEN.md) punt 1,
|
|
|
|
|
|
> inclusief het ene ding dat daar nog uitgezocht moet worden.
|
2026-08-27 16:42:56 +02:00
|
|
|
|
>
|
|
|
|
|
|
> **En lees §1 van het plan.** Het argument dat voor de hand ligt, "dan komen wijzigingen eindelijk aan bij
|
|
|
|
|
|
> een bestaande installatie", geldt hier níet: alle code staat in een `*.template` en die staan in de
|
|
|
|
|
|
> update-whitelist. Wat dit plan wél oplevert, staat in §3.
|
|
|
|
|
|
|
|
|
|
|
|
## Volgende stap
|
|
|
|
|
|
|
2026-09-07 20:20:42 +02:00
|
|
|
|
> **Opgepakt op 07-09-2026 op verzoek van de gebruiker.** Fase 1 tot en met 3 zijn in één sessie gedaan
|
2026-09-08 16:20:48 +02:00
|
|
|
|
> en gecommit als Electrum Gate 0.1.0. **Op 08-09-2026 is de image op de Umbrel gebouwd, geduwd, gepind
|
|
|
|
|
|
> en geïnstalleerd**; de bouw slaagde in één keer en de app draait. Voor Electrum Gate is dit plan af.
|
|
|
|
|
|
> Wat overblijft is Evolu Relay (§8 van het plan) en, voor **Publicatie-Gate**, multi-arch.
|
2026-09-07 20:20:42 +02:00
|
|
|
|
|
|
|
|
|
|
- [x] **Fase 1 tot en met 3 gedaan (07-09-2026), als 0.1.0.** De vier `*.template`-bestanden staan nu in
|
|
|
|
|
|
`tools/electrum-gate/` zonder de extensie, plus `Dockerfile`, `build.sh` en `entrypoint.sh`. De
|
|
|
|
|
|
compose gebruikt één image voor beide containers, ongepind tot de eerste push. Tests aangepast en
|
|
|
|
|
|
mutatie-getest; details in [PROGRESS.md](PROGRESS.md)
|
2026-09-08 16:20:48 +02:00
|
|
|
|
- [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
|
2026-09-08 17:08:47 +02:00
|
|
|
|
- [x] **Evolu Relay gedaan (08-09-2026), als 0.6.0:** één image met de relay erbij, gebouwd, gepind en in
|
|
|
|
|
|
gebruik. Zie fase 5
|
|
|
|
|
|
- [x] **Dit plan is af voor beide apps** en staat in `Archief/`. Wat overblijft is geen werk van dit plan:
|
|
|
|
|
|
multi-arch bouwen en de anonieme pull per verhoging horen bij **Publicatie-Gate** en
|
|
|
|
|
|
**Publicatie-Relay**; `build.sh` van beide apps heeft er de schakelaar voor
|
2026-08-27 16:47:29 +02:00
|
|
|
|
|
|
|
|
|
|
- [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)
|
|
|
|
|
|
|
2026-08-27 16:42:56 +02:00
|
|
|
|
## Fase 1 - Het bouwrecept
|
|
|
|
|
|
|
2026-09-07 20:20:42 +02:00
|
|
|
|
- [x] Beslissen: één image of twee (open punt 2). **Eén**, zoals [PLAN.md](PLAN.md) §6 voorstelt; beslist
|
|
|
|
|
|
07-09-2026, zie [OPEN.md](OPEN.md)
|
|
|
|
|
|
- [x] Beslissen: waar wordt gebouwd (open punt 3). **Op de Umbrel**, want dat is de enige machine met
|
|
|
|
|
|
Docker; de werkplek heeft het niet. Zie [OPEN.md](OPEN.md)
|
|
|
|
|
|
- [x] `tools/electrum-gate/Dockerfile`: `nginx:1.30-alpine` plus `python3` uit apk, de vijf bestanden
|
|
|
|
|
|
erin, `ENTRYPOINT []` zodat het envsubst-script van de nginx-image niet meedraait. De bouwcontext is
|
|
|
|
|
|
de repo-root, want `icon.png` blijft in de app-map (het manifest wijst ernaar) en wordt van daar
|
|
|
|
|
|
gekopieerd; `.dockerignore` in de root houdt de context klein
|
|
|
|
|
|
- [x] `tools/electrum-gate/build.sh` naar het voorbeeld van Evolu Relay: `VERSION`, controles vooraf
|
|
|
|
|
|
(ontbrekende bestanden, een `${` die niemand meer invult), bouwen, en de vervolgstappen afdrukken
|
|
|
|
|
|
- [ ] **Multi-arch bouwen, en dat is nieuw werk.** `build.sh` heeft er een schakelaar voor:
|
|
|
|
|
|
`PLATFORMS="linux/amd64,linux/arm64"` bouwt met `buildx` en duwt meteen. Nog nooit geprobeerd, en
|
|
|
|
|
|
niet nodig voor eigen gebruik op een amd64-Umbrel. Hoort bij **Publicatie-Gate**; zie
|
|
|
|
|
|
[PLAN.md](PLAN.md) §4
|
2026-09-08 16:15:43 +02:00
|
|
|
|
- [x] **Anoniem te halen, gecontroleerd 08-09-2026.** Na `docker logout` gaf `docker pull` dezelfde digest
|
|
|
|
|
|
terug als de push. umbreld krijgt geen inloggegevens mee, dus dit was de laatste voorwaarde voor de
|
|
|
|
|
|
update
|
2026-08-27 16:42:56 +02:00
|
|
|
|
|
|
|
|
|
|
## Fase 2 - Het `command`-blok wordt een script
|
|
|
|
|
|
|
2026-09-07 20:20:42 +02:00
|
|
|
|
- [x] `tools/electrum-gate/entrypoint.sh`, uit het `command`-blok van de compose. Zelfde gedrag, geen
|
|
|
|
|
|
`$$` meer, en het `log_format` staat nu gewoon in `stream.conf` in plaats van in een los bestand dat
|
|
|
|
|
|
het script wegschreef. Nieuw erin: het invullen van het backend-adres in het stream-blok (zie fase 3)
|
|
|
|
|
|
- [x] Wat niet mocht sneuvelen en er staat: de sessieteller uit `/proc/net/tcp`, de herlaadlus met zijn
|
|
|
|
|
|
vangnettak, en `exec nginx` als laatste regel. Alle drie met een toets in
|
|
|
|
|
|
`test_server_start_zonder_certificaat.py`, en die zijn gezien te falen
|
2026-08-27 16:42:56 +02:00
|
|
|
|
|
|
|
|
|
|
## Fase 3 - De app-map opschonen
|
|
|
|
|
|
|
2026-09-07 20:20:42 +02:00
|
|
|
|
- [x] De vier templates uit de app-map, met `git mv` naar `tools/electrum-gate/` zonder `.template`
|
|
|
|
|
|
- [x] **`index.html` heeft geen template-invulling meer.** `${APP_VERSION}` en het backend-adres komen uit
|
|
|
|
|
|
`status.json`: de agent krijgt `GATE_APP_VERSION: ${APP_VERSION}` uit de compose en zet `version` in
|
|
|
|
|
|
de status; het adres stond er al als `backend.address`
|
|
|
|
|
|
- [x] **`stream.conf` heeft geen template-invulling meer.** Twee plaatshouders zonder dollarteken,
|
|
|
|
|
|
`__GATE_ELECTRUM_HOST__` en `__GATE_ELECTRUM_PORT__`, die `entrypoint.sh` uit de omgeving invult;
|
|
|
|
|
|
de server-service krijgt daarvoor dezelfde twee variabelen als de agent
|
|
|
|
|
|
- [x] De compose houdt zijn `environment`-blok; de mounts van de vijf losse bestanden zijn eruit
|
|
|
|
|
|
- [x] Wat er in de app-map overblijft: `docker-compose.yml`, `umbrel-app.yml`, `icon.png` en `data/` met
|
|
|
|
|
|
zijn twee `.gitkeep`-bestanden. Precies wat [PLAN.md](PLAN.md) §6 zei
|
|
|
|
|
|
- [x] De tests mee verhuisd: `test_agent_certificates.py` laadt `tools/electrum-gate/agent.py`;
|
|
|
|
|
|
`test_server_start_zonder_certificaat.py` toetst `entrypoint.sh` en de Dockerfile in plaats van het
|
|
|
|
|
|
`command`-blok, plus dat de tag in de compose `VERSION` uit `build.sh` is; `test_appstore_vorm.py`
|
|
|
|
|
|
leest ook de nginx-config onder `tools/` en toetst tag gelijk aan `VERSION` voor élke eigen image;
|
|
|
|
|
|
`test_paginas_parsen.mjs` en `tools/voorbeeldpagina.mjs` vinden een pagina op beide plekken
|
2026-08-27 16:42:56 +02:00
|
|
|
|
|
|
|
|
|
|
## Fase 4 - Uitrollen en verifiëren
|
|
|
|
|
|
|
2026-09-08 16:15:29 +02:00
|
|
|
|
- [x] Image gebouwd en geduwd op de Umbrel (08-09-2026) en gepind als `0.1.0@sha256:97fee09b…7cfd8f`,
|
|
|
|
|
|
twee keer in de compose. `version` stond al op 0.1.0
|
2026-09-08 16:20:48 +02:00
|
|
|
|
- [x] Op de Umbrel geüpdatet en daarna ook gedeïnstalleerd en opnieuw geïnstalleerd (08-09-2026), zodat
|
|
|
|
|
|
de app-datamap geen oude templates meer bevat. De gebruiker meldt dat alles werkt; welke van de vijf
|
|
|
|
|
|
controles hij precies deed staat niet vast, de pagina en de versie zijn gezien
|
|
|
|
|
|
- [x] **De versie in de kop van de pagina** toont v0.1.0, dus de weg via `status.json` werkt
|
|
|
|
|
|
- [x] **`icon.png` is hiermee updatebaar**, want die zit in de image. Dat was de enige echte uitzondering
|
2026-09-07 20:20:42 +02:00
|
|
|
|
op "alles komt al aan bij een update"; zie [PLAN.md](PLAN.md) §1
|
|
|
|
|
|
|
2026-09-08 16:36:30 +02:00
|
|
|
|
## Fase 5 - Evolu Relay
|
2026-09-07 20:20:42 +02:00
|
|
|
|
|
2026-09-08 16:36:30 +02:00
|
|
|
|
- [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
|
2026-09-08 17:08:47 +02:00
|
|
|
|
- [x] **Gebouwd, geduwd, gepind, geüpdatet en nagekeken (08-09-2026).** De bouw met apt erin slaagde in
|
|
|
|
|
|
één keer; digest `sha256:4dc56b8a…08b5b54` drie keer in de compose. Na de update toont de pagina
|
|
|
|
|
|
v0.6.0 en werkt een sync vanuit Trezor Suite, dus de relay schrijft als `node` nog in `data/relay`.
|
|
|
|
|
|
Niet herinstalleerd, want de database moest blijven; de gebruiker heeft de zes achtergebleven
|
|
|
|
|
|
programmabestanden met de hand uit de app-datamap gehaald
|
2026-08-27 16:42:56 +02:00
|
|
|
|
|
|
|
|
|
|
## Geblokkeerd / wacht op
|
|
|
|
|
|
|
2026-09-08 17:08:47 +02:00
|
|
|
|
Niets. Het plan is af.
|