Fulcrum is uitgesynct en de gebruiker heeft omgeschakeld. De app hoefde niets
te weten van de wissel, want hij leest ${APP_ELECTRS_NODE_IP} en Fulcrum aliast
zichzelf naar die naam. Bevestigd langs alle drie de wegen: een wallet van
buiten over TLS op 50022, een wallet binnen het netwerk, en het dashboard met
een antwoordende server.
Daarmee is hoofdstuk 4 van de appstore-spec waargenomen gedrag in plaats van
een afleiding uit andermans broncode, en is de poortbotsing op 50002 ook in de
praktijk weg. Fase 3 van Appstore is af.
Gratis meegekomen: umbrelOS herstartte de app zelf bij de wissel en hij kwam
terug met dezelfde certificaatkeuze. Dat is de vervangende start/stop-controle,
maar nadrukkelijk geen antwoord op de volgordevraag, want Zoraxy draaide al.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
201 lines
14 KiB
Markdown
201 lines
14 KiB
Markdown
# Taken - Appstore
|
||
|
||
> Prioriteit: **B** | Afhankelijk van: –
|
||
>
|
||
> **Van A naar B op 20-08-2026**, bij de prioriteitsherziening na de verse installatie van 0.0.9. Alles
|
||
> waar dit plan om begon is af: de app is een echte umbrelOS-app, hij komt op uit een schone installatie,
|
||
> en een wallet van buiten verbindt over TLS. Wat er nog staat is niet te plannen (de herstartcontrole
|
||
> wacht op een herstart die er toch komt) of hoort bij het masterplan **Publicatie-Gate**. Het plan houdt
|
||
> zijn nummer 010; alleen **Webinterface** kreeg een nieuw nummer bij de promotie naar A.
|
||
>
|
||
> **Bijgewerkt 25-08-2026:** alles wat hier nog openstaat wacht op iets dat vanzelf komt (de eerste sync
|
||
> van Fulcrum, een herstart) of ligt bij de gebruiker (de oude repo weghalen). Er is niets meer dat een
|
||
> sessie zelf kan oppakken.
|
||
>
|
||
> **Bijgewerkt 27-08-2026:** de eerste van die twee wachtmomenten is voorbij. Fulcrum is uitgesynct, de
|
||
> omschakeling is gedaan en geslaagd, en daarmee is fase 3 helemaal af. Wat er nu nog staat wacht op één
|
||
> herstart of ligt bij de gebruiker.
|
||
|
||
## Volgende stap
|
||
|
||
- [x] **Omgeschakeld naar Fulcrum, en het werkte zonder één aanpassing (27-08-2026).** Dit is de controle
|
||
die sinds 19-08-2026 op tijd stond te wachten, en hij is langs alle drie de wegen bevestigd: een
|
||
wallet van buiten kreeg data terug, een wallet binnen het netwerk ook, en het dashboard toont het
|
||
Fulcrum-adres met een antwoordende server. Daarmee is de afhankelijkheidsconstructie geen aanname
|
||
meer maar bewezen gedrag; zie
|
||
[Umbrel-appstore-spec.md](../../../Referenties/Umbrel-appstore-spec.md) §4
|
||
|
||
- [x] **De maphiërarchie na een verse installatie nagekeken. In orde (20-08-2026):** in
|
||
`~/umbrel/app-data/whatsnext-electrum-gate/` staat `data/` met `certs/` en `runtime/` eronder. Dat is
|
||
de vorm die de appstore-eis vraagt, en samen met de twee `.gitkeep`-bestanden in de repo is dat punt
|
||
van het masterplan **Publicatie** dus af. Wat deze controle niet onderscheidt is wie de mappen
|
||
aanmaakte, `rsync` of Docker; voor de eis maakt dat niet uit, want die gaat over wat er in de repo
|
||
staat
|
||
|
||
- [x] **0.0.9 opnieuw geïnstalleerd in plaats van geüpdatet. Gelukt (20-08-2026).** De gebruiker koos een
|
||
deïnstallatie plus verse installatie omdat de app-data dan schoon is, en dat werkte. Daarmee is
|
||
bewezen wat op een bestaande installatie niet te bewijzen was: **de pagina komt omhoog op een
|
||
installatie waar nog nooit een certificaat gekozen is.** Dat is precies de situatie waarin 0.0.3
|
||
stukliep
|
||
- [ ] **Na `sudo reboot` controleren dat de app vanzelf terugkomt.** Dit is de aanleiding voor het hele
|
||
plan en nu het enige wat er in de kern nog openstaat; zie fase 6. **Eigenaar: gebruiker, op een
|
||
moment dat het kan**
|
||
|
||
- [x] **De doorstuurregel in de router naar poort 50022 gezet (20-08-2026).** Nodig omdat de app niet meer
|
||
op 50002 luistert; zonder deze regel komt een wallet van buiten niet binnen
|
||
- [x] **Een certificaat kiezen op de pagina, en daarmee het hele pad. Gelukt (20-08-2026):** de keuze werd
|
||
aangenomen, nginx kwam met poort 50022 door, en een wallet van buiten verbindt. De app doet waarvoor
|
||
hij bestaat
|
||
|
||
- [x] **0.0.4 uitrollen en kijken of de pagina nu komt. Gelukt (20-08-2026).** De pagina laadt, de
|
||
melding "No certificate in use" staat er met de reden van de agent, en de veertien certificaten uit
|
||
Zoraxy staan als keuzelijst. Daarmee is de klem uit 0.0.3 bewezen verholpen
|
||
|
||
- [x] De oude app `electrumtls-electrum-tls` verwijderen in umbrelOS, de store-URL opnieuw laten ophalen,
|
||
en `whatsnext-electrum-gate` installeren. **Gedaan (20-08-2026), en het leverde meteen een fout op:**
|
||
er kwam geen UI. Oorzaak was geen installatiefout maar een ontwerpfout, verholpen in 0.0.4, zie
|
||
[PROGRESS.md](PROGRESS.md) en [CHANGELOG-electrum-gate.md](../../../CHANGELOG-electrum-gate.md)
|
||
|
||
Daarna, in deze volgorde:
|
||
|
||
- [x] `version` op **0.0.3** en de release notes herschreven (19-08-2026). Niet 3.0.0: de gebruiker heeft
|
||
de nummering opnieuw onder 1.0 gezet, omdat 1.0.0 en 2.0.x een rijpheid beweerden die er niet was.
|
||
De stap terug in het nummer kan omdat de oude app gedeïnstalleerd wordt en dit een nieuwe app-id is,
|
||
dus er is geen geïnstalleerd manifest om tegen te vergelijken. **Vanaf hier moet het nummer altijd
|
||
omhoog**; zie [CHANGELOG-electrum-gate.md](../../../CHANGELOG-electrum-gate.md)
|
||
- [x] Controleren of de wallet-verbinding de nacht heeft doorstaan. **Gelukt (19-08-2026):** de
|
||
verbinding stond er 's ochtends nog. Daarmee is de `proxy_timeout`-fix bewezen en de storing
|
||
verklaard en verholpen
|
||
- [x] Het plan **Webinterface** promoveren naar `Actief/`; het werk daaraan is begonnen
|
||
- [ ] Het plan **Configuratie** herzien vóórdat het gepromoveerd wordt. Bij het afsluiten van de sessie op
|
||
19-08-2026 bleek het grotendeels ingehaald: de agent doet §4e en §4f al, en het hardgecodeerde
|
||
domein is uit `docker-compose.yml` én uit `nginx.conf.template` verdwenen, dus fase 2 is op de
|
||
README na klaar. Wat er nog echt in zit, is kleiner dan het plan suggereert. Eerst opschonen, dan
|
||
beslissen of promotie nog nodig is
|
||
|
||
## Fase 1 - De repo-vorm
|
||
|
||
- [x] `umbrel-app-store.yml` aanmaken met `id: electrumtls` en een `name`
|
||
- [x] Map `electrumtls-electrum-tls/` aanmaken en de app-bestanden erheen verplaatsen
|
||
- [x] `id` in `umbrel-app.yml` op `electrumtls-electrum-tls` zetten, gelijk aan de mapnaam
|
||
- [x] `install.sh` en `uninstall.sh` verwijderen; umbreld beheert dit onder umbrelOS 1.x
|
||
- [x] Verplaatsen en inhoudelijk wijzigen in **twee** commits houden, anders is de verhuizing niet als
|
||
"alleen verplaatst" na te lezen
|
||
|
||
## Fase 2 - De compose
|
||
|
||
- [x] `app_proxy`-service toevoegen met `APP_HOST: electrumtls-electrum-tls_server_1`
|
||
- [x] Het externe `umbrel_main_network` en het top-level `networks:`-blok verwijderen
|
||
- [x] `version: "3.7"` weghalen; die sleutel is verouderd
|
||
- [x] Certificaatmount op `${UMBREL_ROOT}/app-data/zoraxy/...` in plaats van een absoluut pad
|
||
- [x] De handmatige `${APP_ELECTRUM_TLS_WEB_PORT}`-plaatshouder eruit; de web-UI loopt via `app_proxy`
|
||
- [x] **Uitzoeken hoe `entrypoint.sh`, `cert-watch.sh` en `web/` in `${APP_DATA_DIR}` terechtkomen.**
|
||
Bij installatie kopieert umbreld de hele app-map met `rsync --archive`, dus de mounts kloppen. Bij
|
||
een **update** wordt alleen een whitelist ververst; zie [OPEN.md](OPEN.md) punt 6
|
||
- [x] **Vervallen: ingehaald door fase 4 (opgemerkt 27-08-2026).** Deze regel wilde de logica uit
|
||
`entrypoint.sh` halen; in plaats daarvan is het bestand zelf verdwenen, samen met `cert-watch.sh`.
|
||
Wat er in de app-map staat is nu compose plus drie `*.template`-bestanden, en die staan alle vier in
|
||
de update-whitelist
|
||
|
||
## Fase 3 - Backend-onafhankelijk
|
||
|
||
- [x] `dependencies: [electrs]` in het manifest laten staan en controleren
|
||
- [x] `ELECTRS_HOST` van `${APP_ELECTRS_IP}` naar `${APP_ELECTRS_NODE_IP}` (nu wijst hij naar de
|
||
web-UI-container van Electrs, niet naar de Electrum-server)
|
||
- [x] `ELECTRS_PORT` van de vaste 50001 naar `${APP_ELECTRS_NODE_PORT}`
|
||
- [x] Controleren dat er nergens een Electrs-specifieke variabele gebruikt wordt; alleen `IP`, `NODE_IP`
|
||
en `NODE_PORT` worden door Fulcrum en ElectrumX gealiast
|
||
- [x] De terugval `electrs_electrs_1` in `entrypoint.sh` vervangen door hard stoppen met een melding;
|
||
een oude containernaam als standaard laat de app draaien terwijl hij naar niets wijst
|
||
- [x] **Op de Umbrel geverifieerd: omgeschakeld naar Fulcrum, werkt zonder aanpassing (27-08-2026).**
|
||
Daarmee is deze fase af. De drie wijzigingen hierboven waren precies wat het kostte; de app zag
|
||
alleen een ander `${APP_ELECTRS_NODE_IP}` en `${APP_ELECTRS_NODE_PORT}` en merkte verder niets.
|
||
Uitkomst staat in fase 6
|
||
|
||
## Fase 4 - De image
|
||
|
||
- [x] Uitkomst van de "Volgende stap" verwerken: nginx `stream`, of terugvallen op een eigen image
|
||
- [ ] Image pinnen op de multi-arch index-digest, geverifieerd met `docker buildx imagetools inspect`
|
||
(kan alleen op de Umbrel; staat als TODO in de compose). **Sinds 20-08-2026 ook de grootste
|
||
openstaande eis voor het masterplan Publicatie**, want de officiële store eist
|
||
`repo:versie@sha256:<digest>` met beide architecturen erin. Blijft hier staan tot dat plan actief
|
||
wordt; een taak op twee plekken loopt uit elkaar
|
||
- [x] `apk add` bij het starten verwijderen
|
||
- [x] De `cert-monitor`-service samenvoegen met de proxy en de Docker-socket-mount schrappen
|
||
- [x] Certificaatwissel omzetten naar een reload binnen de container in plaats van een containerherstart
|
||
- [x] `entrypoint.sh` en `cert-watch.sh` verwijderen; de logica staat nu in de compose en in
|
||
`nginx.conf.template`, die allebei bij een update wél ververst worden
|
||
|
||
## Fase 5 - Het manifest
|
||
|
||
- [x] `port` op de web-UI-poort zetten in plaats van 50002
|
||
- [x] Eigen icoon toevoegen; verwijst nu naar het Electrs-icoon in andermans repo
|
||
- [x] `gallery` invullen of tot het minimum beperken; het wijst nu naar een screenshot van Electrs
|
||
- [x] `developer`, `website`, `repo`, `support`, `submitter` en `submission` kloppend maken
|
||
- [x] `releaseNotes` en `version` bijwerken
|
||
- [x] `tagline` en `description` bijwerken; die noemden stunnel, dat er niet meer is
|
||
- [x] Controleren dat Gitea `icon.png` als afbeelding serveert. **Ja**, na het omzetten van de
|
||
accountzichtbaarheid: 33,9 kB als `image/png`. De eerdere 401 en 404 kwamen van dezelfde oorzaak
|
||
als de mislukte kloon, dus er is geen `data:`-URI nodig
|
||
|
||
## Fase 6 - Installeren en verifiëren
|
||
|
||
- [x] De bestaande handmatige installatie stoppen; die hield poort 50002 vast en liet de installatie drie
|
||
keer falen. Stond in `~/umbrel/home/Containers/ElectrumTLS`
|
||
- [x] Store-URL toevoegen in umbrelOS en de app installeren
|
||
- [x] Verbinden met een Electrum-wallet over TLS. Werkt: de wallet krijgt direct data terug, wat het hele
|
||
pad bewijst, dus TLS-terminatie, certificaat en de verbinding naar de Electrum-server
|
||
- [ ] **Na `sudo reboot` controleren dat de app vanzelf terugkomt.** Dit is de aanleiding voor het plan
|
||
en de enige controle die er nog echt toe doet. **Uitgesteld op 18-08-2026:** de Umbrel is een
|
||
productiemachine en wordt niet op verzoek herstart. Zie [OPEN.md](OPEN.md) punt 7
|
||
- [x] **Vervanger gedaan, en gratis meegekomen met de omschakeling (27-08-2026):** umbrelOS stopte en
|
||
startte de app zelf omdat zijn afhankelijkheid wijzigde, en hij kwam terug met dezelfde
|
||
certificaatkeuze en werkende TLS. Dat is hetzelfde `app-script start`-pad als na een herstart.
|
||
**Wat het niet bewijst blijft staan:** Zoraxy draaide hier al, dus het certificaat bestond al toen
|
||
de app opkwam. De volgorde-vraag uit [OPEN.md](OPEN.md) punt 7 is dus niet beantwoord
|
||
- [ ] Controleren dat de app terugkomt nadat Electrs gestopt en gestart is
|
||
- [x] **De oude stunnel-container weggehaald (25-08-2026).** Hij bond poort 50002, de poort die Fulcrum op
|
||
de host wil, en met `restart: unless-stopped` overleefde hij een herstart. Daarmee is de laatste
|
||
blokkade voor de Fulcrum-test weg die je zelf kon opheffen. Het externe `umbrel_main_network` blijft
|
||
staan; dat verwijdert compose nooit
|
||
- [x] **Omgeschakeld naar Fulcrum in de umbrelOS-instellingen. Gelukt, zonder aanpassing (27-08-2026),**
|
||
nadat Fulcrum was uitgesynct. Bevestigd langs alle drie de wegen: een wallet van buiten over TLS op
|
||
50022 kreeg data terug (dus het hele pad inclusief de doorstuurregel), een wallet binnen het netwerk
|
||
ook, en het dashboard toont het Fulcrum-adres met een antwoordende server. Dat de app niets hoefde
|
||
te weten van de wissel is het punt: hij leest `${APP_ELECTRS_NODE_IP}` en die aliast Fulcrum zelf
|
||
- [ ] Pas ná een geslaagde herstart de oude map `~/umbrel/home/Containers/ElectrumTLS` opruimen; tot dan
|
||
is dat de terugweg. De container is er sinds 25-08-2026 al af, dus de volgorde-val (hij mountte zijn
|
||
`entrypoint.sh` uit die map) speelt niet meer
|
||
|
||
## Fase 7 - Naam en identiteit
|
||
|
||
Toegevoegd 18-08-2026. De naam beschreef het middel (TLS) en niet wat je ermee kunt.
|
||
|
||
- [x] Naam wordt **Electrum Gate**. Bijgesteld op 19-08-2026; op 18-08-2026 stond hier nog Electrum
|
||
Gateway. TLS is uit de naam en uit de tagline verdwenen; die gaat nu over de afweging Tor tegenover
|
||
snelheid
|
||
- [x] Store-id `whatsnext`, app-id en mapnaam `whatsnext-electrum-gate`. Zie [OPEN.md](OPEN.md) punt 8
|
||
- [x] `developer` en `submitter` op `WhatsNext?` (19-08-2026)
|
||
- [x] `tagline` en `description` herschreven, in het Engels, met de Tor-afweging en de lijst met clients
|
||
waarvoor de app nuttig is
|
||
- [ ] Eigen icoon van de gebruiker inbouwen, in de kleuren van het design-systeem. Het huidige
|
||
`icon.png` staat er nog en is niet het definitieve
|
||
- [x] **De repo hernoemd naar `UmbrelApps`, met `icon`, `website`, `repo`, `support` en `submission` mee
|
||
(25-08-2026, in 0.0.15).** Niet uitgesteld tot GitHub, zoals hier stond, maar afgedwongen door Evolu
|
||
Relay: umbrelOS leest per store één repo, dus een tweede app maakte een naam naar deze ene app
|
||
onhoudbaar. Het **app-id** ging niet mee en dat hoefde ook niet; dat hangt aan het store-id en niet
|
||
aan de URL
|
||
- [x] **De store omgezet in umbrelOS, en dat kostte een herinstallatie (25-08-2026).** Daarmee is open
|
||
punt 8 beantwoord: een geïnstalleerde app overleeft een wisseling van store-URL **niet**. De update
|
||
naar 0.0.15 werd wél getoond maar niet uitgevoerd, zonder foutmelding. Na deïnstalleren en opnieuw
|
||
installeren draait hij. Zie [OPEN.md](OPEN.md) punt 8 voor wat je vooraf moet wegschrijven
|
||
- [ ] Pas daarna de repo `ElectrumTLS` op de Git-server weghalen. Dat is niet alleen opruimen: zolang hij
|
||
bestaat, staat het domein nog in een publieke historie. Zie [OPEN.md](OPEN.md) punt 3.
|
||
**Eigenaar: gebruiker**
|
||
|
||
## Geblokkeerd / wacht op
|
||
|
||
- [x] Keuze van de TLS-poort - **vervallen 19-08-2026**. Open punt 1 van het plan **Configuratie** is
|
||
beslist op 50022 en meteen doorgevoerd, omdat de app toch opnieuw geïnstalleerd wordt. Daarmee is
|
||
ook de botsing met Fulcrum weg en kan de omschakelcontrole in fase 3 en fase 6 echt gedaan worden
|