Gate 0.1.0: eigen image, het command-blok is een script, de app-map is leeg

Plan Eigenimage, fase 1 tot en met 3. De vier templates verhuizen naar
tools/electrum-gate/ zonder extensie; daarnaast Dockerfile (nginx:1.30-alpine
plus python3), entrypoint.sh (het command-blok van de compose, zonder $$) en
build.sh naar het voorbeeld van Evolu Relay. Een image voor beide containers,
gebouwd op de Umbrel; open punt 2 en 3 daarmee beslist.

Inhoudelijk anders dan alleen verplaatst: het log_format staat in stream.conf
zelf, het backend-adres komt via twee plaatshouders zonder dollarteken uit de
omgeving (ook in de server-service), en de pagina haalt versie en adres uit
status.json via GATE_APP_VERSION.

Tests mee verhuisd en uitgebreid: entrypoint.sh en Dockerfile in plaats van het
command-blok, en de tag in de compose gelijk aan VERSION in build.sh voor elke
eigen image. Mutatie-getest met drie ingrepen.

Nog niet gebouwd: er is hier geen Docker. De tag staat ongepind tot de eerste
push; dat is fase 4 en die is van de gebruiker.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-09-07 20:20:42 +02:00
co-authored by Claude Fable 5.1
parent 7b3804df89
commit 973b24a23f
25 changed files with 981 additions and 410 deletions
+35
View File
@@ -8,6 +8,41 @@ Wat er nog moet gebeuren staat **niet** hier maar in de plannen; zie [CONTINUE_H
Een lijst met geplande features op twee plekken loopt uit elkaar, en dan is geen van beide meer te
vertrouwen.
## [0.1.0] - 2026-09-07
**Nog niet gebouwd.** De compose verwijst naar `sc.kamenier-hamer.nl/sysop/electrum-gate:0.1.0` zonder
digest; die komt erbij zodra de gebruiker de image op de Umbrel gebouwd en geduwd heeft. Tot die tijd is
dit een versie in de repo en niet op het apparaat.
### Changed
- **De app heeft een eigen image**, gebouwd uit `tools/electrum-gate/` met `build.sh`, op basis van
`nginx:1.30-alpine` plus `python3`. Eén image voor beide containers; de compose start hem als `server`
met het standaardcommando en als `agent` met `python3 /app/agent.py`. Tot nu draaide de app op
`python:3-alpine` en `nginx:alpine` met zijn eigen bestanden als `*.template` uit de app-map gemount.
Waarom, staat in het plan **Eigenimage**, `PLAN.md` §3; het korte antwoord is dat de programmacode nu
niet meer in de app-data staat, en dat het startscript weer leesbaar is.
- **Het `command`-blok van de compose is `entrypoint.sh` in de image.** Ruim honderd regels shell in een
YAML-string, met elk dollarteken verdubbeld omdat umbreld anders elke `${...}` leegmaakte, is nu een
gewoon script. Zelfde gedrag: TLS aan of uit naar de toestand van `cert.conf`, de verbindingsteller uit
`/proc/net/tcp`, de herlaadlus met vangnettak, en `exec nginx` als laatste regel.
- **Het `log_format` staat in `stream.conf` zelf.** Het stond in een los bestand dat het `command`-blok
wegschreef, omdat een dollarteken in een template niet mocht. Die omweg is weg.
- **Het backend-adres komt uit de omgeving, in beide containers.** `stream.conf` heeft twee plaatshouders
zonder dollarteken die `entrypoint.sh` bij het starten invult; de server-service krijgt daarvoor dezelfde
`GATE_ELECTRUM_HOST` en `GATE_ELECTRUM_PORT` als de agent.
- **De pagina haalt de versie en het backend-adres uit `status.json`.** umbreld vulde die tot nu
rechtstreeks in de pagina in; nu de pagina in de image zit, geeft de compose `APP_VERSION` aan de agent
door als `GATE_APP_VERSION`, en zet de agent `version` in de status. Ontbreekt hij, dan toont de kop
geen versie in plaats van een verzonnen.
- **`icon.png` is updatebaar**, want de image kopieert hem uit de app-map. Het bestand blijft ook daar
staan, want het manifest wijst ernaar voor de tegel in de winkel.
### Removed
- De vier `*.template`-bestanden en hun mounts uit de app-map. Wat er overblijft: `docker-compose.yml`,
`umbrel-app.yml`, `icon.png` en `data/`.
## [0.0.29] - 2026-09-04
### Changed