73 lines
4.5 KiB
Markdown
73 lines
4.5 KiB
Markdown
# Taken - Eigenimage
|
||||
|
|
|
|||
|
|
> Prioriteit: **A** | Wacht op: –
|
|||
|
|
>
|
|||
|
|
> **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.
|
|||
|
|
>
|
|||
|
|
> **Lees vóór de eerste taak [OPEN.md](OPEN.md) punt 1.** Blijft het Gitea-register ook bij publicatie de
|
|||
|
|
> bron? Dat bepaalt waar `build.sh` naartoe duwt en wat er in de compose komt te staan. Beginnen zonder dat
|
|||
|
|
> antwoord betekent de kans lopen dat het bouwrecept en de compose twee keer geschreven worden.
|
|||
|
|
>
|
|||
|
|
> **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
|
|||
|
|
|
|||
|
|
- [ ] **Open punt 1 beantwoorden: Gitea ook bij publicatie, of niet?** Dit is geen bouwtaak maar het
|
|||
|
|
bepaalt de eerste. **Eigenaar: gebruiker**
|
|||
|
|
|
|||
|
|
## Fase 1 - Het bouwrecept
|
|||
|
|
|
|||
|
|
- [ ] Beslissen: één image of twee (open punt 2). [PLAN.md](PLAN.md) §6 stelt één voor
|
|||
|
|
- [ ] Beslissen: waar wordt gebouwd (open punt 3). De Umbrel is amd64 en een productiemachine
|
|||
|
|
- [ ] `tools/electrum-gate/Dockerfile` schrijven: basisimage, `agent.py`, de nginx-configuratie, de pagina,
|
|||
|
|
en een `entrypoint.sh`. **Niet in de app-map**: een `Dockerfile` staat niet in de update-whitelist,
|
|||
|
|
dus bouwen-in-de-app kost bij elke versie een deïnstallatie
|
|||
|
|
- [ ] `tools/electrum-gate/build.sh` naar het voorbeeld van `tools/evolu-relay/build.sh`: pin op de
|
|||
|
|
basisimage, bouwen, naar het register duwen, en de digest afdrukken die in de compose moet
|
|||
|
|
- [ ] **Multi-arch bouwen, en dat is nieuw werk.** `linux/amd64` én `linux/arm64` in de manifest-lijst.
|
|||
|
|
Vraagt `buildx` met QEMU en is hier nog nooit geprobeerd; zie [PLAN.md](PLAN.md) §4
|
|||
|
|
- [ ] **Controleren dat de image anoniem te halen is.** umbreld krijgt geen inloggegevens mee. Uitloggen in
|
|||
|
|
dezelfde context waarin je inlogde, anders meet je je eigen sessie. Het commando staat onderaan
|
|||
|
|
`tools/evolu-relay/build.sh`
|
|||
|
|
|
|||
|
|
## Fase 2 - Het `command`-blok wordt een script
|
|||
|
|
|
|||
|
|
- [ ] Het inline `command`-blok uit `docker-compose.yml` omzetten naar `entrypoint.sh` in de image. Dat is
|
|||
|
|
ruim honderd regels shell in een YAML-string met een eigen ontsnappingsregel voor het dollarteken;
|
|||
|
|
zie [PLAN.md](PLAN.md) §2. **Dit is de grootste inhoudelijke winst van het hele plan**
|
|||
|
|
- [ ] Let op wat daarbij niet mag sneuvelen: het `log_format` met `$$`, de sessieteller uit
|
|||
|
|
`/proc/net/tcp`, de herlaadlus met zijn vangnettak, en het feit dat nginx met `exec` het hoofdproces
|
|||
|
|
wordt. Die laatste is geen detail: andersom blijft de shell PID 1, geeft signalen niet door, en ziet
|
|||
|
|
Docker een geslaagde afsluiting als nginx omvalt
|
|||
|
|
|
|||
|
|
## Fase 3 - De app-map opschonen
|
|||
|
|
|
|||
|
|
- [ ] `agent.py.template`, `nginx.conf.template`, `stream.conf.template` en `index.html.template` uit de
|
|||
|
|
app-map halen zodra ze in de image zitten
|
|||
|
|
- [ ] **`index.html` heeft dan geen template-invulling meer.** Vandaag staat er
|
|||
|
|
`${APP_ELECTRS_NODE_IP}:${APP_ELECTRS_NODE_PORT}` in, ingevuld door umbreld bij het starten. Zit de
|
|||
|
|
pagina in de image, dan moet dat adres langs de omgeving naar binnen, bijvoorbeeld doordat de agent
|
|||
|
|
het in `status.json` zet en de pagina het daaruit leest. Dat is werk dat nu nog gratis is
|
|||
|
|
- [ ] De compose houdt zijn `environment`-blok; dat is hoe `${APP_ELECTRS_NODE_IP}` binnenkomt, en die weg
|
|||
|
|
is op 27-08-2026 bewezen bij de omschakeling naar Fulcrum
|
|||
|
|
- [ ] Wat er in de app-map overblijft: `docker-compose.yml`, `umbrel-app.yml`, `icon.png` en `data/` met
|
|||
|
|
zijn twee `.gitkeep`-bestanden
|
|||
|
|
|
|||
|
|
## Fase 4 - Uitrollen en verifiëren
|
|||
|
|
|
|||
|
|
- [ ] Image gepind als `repo:tag@sha256:<digest>` in de compose, en `version` verhoogd in het manifest.
|
|||
|
|
Zonder die verhoging rolt umbrelOS niets uit
|
|||
|
|
- [ ] Op de Umbrel installeren en controleren dat alles het nog doet: de pagina, de certificaatkeuze, de
|
|||
|
|
TLS-poort, de zelfcontrole en het activiteitenlog
|
|||
|
|
- [ ] **`icon.png` wordt hiermee updatebaar**, want die zit dan in de image. Dat was de enige echte
|
|||
|
|
uitzondering op "alles komt al aan bij een update"; zie [PLAN.md](PLAN.md) §1
|
|||
|
|
|
|||
|
|
## Geblokkeerd / wacht op
|
|||
|
|
|
|||
|
|
Niets, behalve open punt 1 hierboven, en dat is een vraag van één regel aan de gebruiker.
|