Files
UmbrelApps/Docs/Plannen/Actief/006-Eigenimage/TAKEN.md
T
HarmenandClaude Opus 5 940b2582f9 Webinterface is af en zakt naar B, Eigenimage neemt het over
De opruimronde eerst. Zes vinkjes stonden open terwijl het werk gedaan was: open
punt 5, fase 5, "draaien op de Umbrel", "verifiëren tegen een echte status.json",
en het nakijken van de eerste indeling op een breed scherm, een indeling die na
fase 6 niet meer bestaat. Elk staat nu afgevinkt met de reden erbij, want een
regel wegpoetsen laat de vraag "is dit ooit gebeurd" open.

Ook de regel "Niets" onder Geblokkeerd is geen vinkje meer. Een leeg vakje bij
het woord niets telt mee zodra iemand de openstaande punten telt, en dat is
precies wat die kop moet uitsluiten.

Wat er in Webinterface overblijft is niet te plannen of ligt bij de gebruiker:
een etmaal wachten op het log, waar Nginx Proxy Manager zijn certificaten
neerzet, en of Zoraxy een harde afhankelijkheid wordt. Vandaar tier B.

Eigenimage is daarmee gepromoveerd naar Actief met nummer 006 en tier A, zoals
op 27-08 afgesproken. Het masterplan is omgezet: de drie open beslissingen zijn
naar OPEN.md gegaan, het werk naar TAKEN.md in vier fasen, en PLAN.md houdt het
ontwerp. Het origineel blijft nog even staan; dat verhuist pas naar Archief nu
deze commit er is.

De eerste stap daar is geen bouwtaak maar een vraag: blijft het Gitea-register
ook bij publicatie de bron.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 16:42:56 +02:00

73 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.