Drie containers omhoog, db gezond, de app-proxy op 3851. De lokale images waren vooraf weggehaald, dus de pull uit het eigen register is echt gedaan en het hele pad is bewezen: broncode van Trezor, bouwrecept, eigen register, gepinde digest, installatie. Open punt 1 is beslist en niet zoals het geformuleerd stond. Daar stond dat lokaal bouwen de eerste stap was en dat een register beslist zou worden "zodra lokaal niet meer volstaat". Lokaal volstaat nooit: umbreld haalt elke image via de Docker Engine API op. Dus geen keuze maar een voorwaarde, en de uitkomst is het Gitea-register op dezelfde server als de store. Nieuw open punt 5, als keerzijde daarvan: de store is publiek en de image staat op een privéserver. Voegt een vreemde deze store toe, dan haalt zijn Umbrel images van de server van de gebruiker, en diens uptime bepaalt of die installatie slaagt. Electrum Gate heeft dat niet, want die draait op images uit Docker Hub. Drie richtingen genoteerd, waaronder disabled: true in het manifest. In PROGRESS staat de fout die twee rondes kostte, met de reden dat hij overtuigend was: app-script noemt een compose pull bij install, en dat leest als het antwoord. Het is de legacy-compat-laag en niet het pad dat umbrelOS 1.x loopt. De les is breder dan deze app en daarom staat hij er. Ook opgeschreven omdat het bij elke herbouw terugkomt: de gebruiker umbrel zit hier niet in de groep docker, dus bouwen vraagt sudo. De kopstructuur van OPEN.md stond na het bijwerken door de war (een tweede kop "Nog te beslissen"); die is weer conform het sjabloon. Tests: niet gedraaid, dit raakt alleen documentatie. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
74 lines
4.9 KiB
Markdown
74 lines
4.9 KiB
Markdown
# Voortgang - Umbrelapp
|
|
|
|
> 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).
|
|
|
|
## 25-08-2026 - hij draait, en de weg erheen liep via een verkeerde aanname
|
|
|
|
Gebouwd op de Umbrel in 50 seconden, en toen twee keer misgegaan op dezelfde muur voordat die muur
|
|
begrepen was.
|
|
|
|
**De installatie faalde met `pull access denied` op een image die lokaal gebouwd was.** Mijn eerste
|
|
verklaring kwam uit `app-script` van umbreld, waar `install` een `compose "${app}" pull` doet, en de
|
|
reparatie was `pull_policy: never`. Dat faalde identiek. De oorzaak stond in de stacktrace en niet in de
|
|
foutmelding: `at /opt/umbreld/node_modules/docker-modem/lib/modem.js:382`. **umbreld haalt élke image via
|
|
de Docker Engine API op en niet via compose**, dus `pull_policy` wordt nooit gelezen. `app-script` is de
|
|
legacy-compat-laag en niet het pad dat umbrelOS 1.x loopt. Les die breder is dan deze app: een bron die
|
|
overtuigend leest, is nog geen bron die het draaiende pad beschrijft.
|
|
|
|
**Daarmee was "lokaal bouwen als eerste stap" geen keuze meer.** Elke image moet anoniem uit een register
|
|
komen. Dat werd het Gitea-register op dezelfde server als de store: `sc.kamenier-hamer.nl/sysop/evolu-relay`,
|
|
gepind op tag plus digest. Anoniem halen is eerst met een uitgelogde pull gecontroleerd, met dezelfde
|
|
valkuil als bij het klonen van de store (uitloggen in de context waarin je inlogde, anders meet je je eigen
|
|
sessie).
|
|
|
|
**Daarna draaide hij in één keer.** Drie containers omhoog, `db` gezond, de app-proxy op 3851. De lokale
|
|
images waren vooraf weggehaald, dus de pull is echt gedaan en het hele pad is bewezen: broncode van Trezor →
|
|
bouwrecept → eigen register → gepinde digest → installatie.
|
|
|
|
Kleinigheid met een staart: de gebruiker `umbrel` zit hier niet in de groep `docker`, dus bouwen vraagt
|
|
`sudo`. Dat komt bij elke herbouw terug en staat daarom in het plan.
|
|
|
|
**Geraakt:** `whatsnext-evolu-relay/docker-compose.yml` en `umbrel-app.yml` (0.0.2),
|
|
`tools/evolu-relay/build.sh`, `Docs/Referenties/Umbrel-appstore-spec.md`, dit plan.
|
|
**Tests:** 32 goed 0 fout, 54 goed 0 fout en 39 goed 0 fout, niets overgeslagen.
|
|
|
|
**Wat nog steeds niet bewezen is:** of het databaseschema zichzelf aanmaakt, of Trezor Suite dit adres
|
|
accepteert, en of een eigenaar te registreren is. "Draait" is hier nog geen "synchroniseert".
|
|
|
|
## 25-08-2026 - plan werd actief, en het pakket staat er
|
|
|
|
De gebruiker besloot het pakket meteen te maken in plaats van te wachten op de proefopstelling. Dat kon,
|
|
omdat fase 1 van **Proefopstelling** die middag de feiten had opgeleverd: één image met meerdere
|
|
startscripts, een quota-manager die in de praktijk verplicht is, en geen publieke image.
|
|
|
|
**De zwaarste ontwerpvraag is met een precedent beslecht en niet met een gok.** Trezor Suite kan niet achter
|
|
de inlog van umbrelOS, en het was onduidelijk of `PROXY_AUTH_ADD: "false"` dan een verantwoorde keuze is of
|
|
een omweg. De eigen `nostr-relay`-app van Umbrel doet exact hetzelfde, om precies dezelfde reden, en heeft
|
|
ook geen eigen `ports:`. Daarmee is de vorm van de compose niet zelfbedacht.
|
|
|
|
**Twee dingen kwamen boven die niet in het ontwerp zaten.** `build/` staat in `.gitignore` als bouwselmap,
|
|
dus het bouwrecept zou stilzwijgend buiten de repo zijn gebleven; het staat nu onder `tools/`. Dat kwam pas
|
|
bij het stagen aan het licht en niet bij het schrijven, wat precies is waarom `git status` lezen erbij hoort.
|
|
En de poort werd 3851 en niet 4000: 4000 is de eigen poort van de relay, maar ook een veelgebruikte poort,
|
|
en een botsing op de host merk je pas als de app niet start. Die les komt van 50002 tegen Fulcrum.
|
|
|
|
**Er is een derde testbestand**, `tests/test_appstore_vorm.py`, en het gaat over de store en niet over één
|
|
app: id gelijk aan mapnaam, store-voorvoegsel, veldvolgorde, `app_proxy` die naar een bestaande service
|
|
wijst, en elke gemounte map die in de repo bestaat. Het vindt zijn apps zelf, dus een derde app valt er
|
|
automatisch onder. Digests toetst het expres niet: geen van de twee apps haalt die regel vandaag, en een
|
|
suite die altijd rood staat wordt niet gelezen.
|
|
|
|
Mutatie-getest met drie ingrepen: het app-id laten afwijken van de mapnaam, `APP_HOST` naar een
|
|
niet-bestaande service laten wijzen, en de `.gitkeep` weghalen. Alle drie vielen om bij de juiste toets, met
|
|
een bruikbare melding, en `git diff` was daarna leeg.
|
|
|
|
**Geraakt:** `whatsnext-evolu-relay/` (nieuw), `tools/evolu-relay/build.sh` (nieuw),
|
|
`tests/test_appstore_vorm.py` (nieuw), `Docs/CHANGELOG-evolu-relay.md` (nieuw), dit plan,
|
|
`Docs/CONTINUE_HERE.md`, `CLAUDE.md`, `README.md`.
|
|
**Tests:** 32 goed 0 fout (nieuw), 39 goed 0 fout en 54 goed 0 fout (bestaand), niets overgeslagen.
|
|
|
|
**Wat er níet geverifieerd is, en dat is veel:** er is nog niets gebouwd en niets geïnstalleerd. Of het
|
|
databaseschema zichzelf aanmaakt, of Trezor Suite dit adres accepteert, en of een eigenaar te registreren is
|
|
zonder iets extern: alle drie onbekend. "Gebouwd" is hier nadrukkelijk niet "werkend".
|