De backendwissel is geen aanname meer: Fulcrum werkt zonder aanpassing

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>
This commit is contained in:
Harmen
2026-08-27 14:42:02 +02:00
co-authored by Claude Opus 5
parent c80d587100
commit 9d53612db8
5 changed files with 63 additions and 14 deletions
+1 -1
View File
@@ -31,7 +31,7 @@
| Plan | App | Volgende stap | Status | | Plan | App | Volgende stap | Status |
|-|-|-|-| |-|-|-|-|
| [Appstore](Plannen/Actief/010-Appstore/TAKEN.md) | Gate | De repo `ElectrumTLS` weghalen op de Git-server; daar staat het domein nog in de historie. Verder wacht alles op iets dat vanzelf komt: de eerste sync van Fulcrum (72% op 25-08) voor de omschakeltest, en een herstart voor de herstartcontrole | 🔶 | | [Appstore](Plannen/Actief/010-Appstore/TAKEN.md) | Gate | De repo `ElectrumTLS` weghalen op de Git-server; daar staat het domein nog in de historie. **De omschakeling naar Fulcrum is op 27-08-2026 gelukt zonder aanpassing**, dus daarvan is alleen de herstartcontrole nog over, en die komt vanzelf bij de eerstvolgende herstart | 🔶 |
## C - Wacht op afhankelijkheid ## C - Wacht op afhankelijkheid
+3 -1
View File
@@ -18,7 +18,9 @@
- **De container is weg (25-08-2026).** Hij bond poort **50002**, precies de poort die Fulcrum op de - **De container is weg (25-08-2026).** Hij bond poort **50002**, precies de poort die Fulcrum op de
host wil, en `restart: unless-stopped` betekende dat hij een herstart overleefde. Daarmee is de host wil, en `restart: unless-stopped` betekende dat hij een herstart overleefde. Daarmee is de
Fulcrum-test uit fase 6 niet langer geblokkeerd door iets wat je zelf kunt opheffen; wat er nog Fulcrum-test uit fase 6 niet langer geblokkeerd door iets wat je zelf kunt opheffen; wat er nog
tussen zit is de eerste sync van Fulcrum, en dat is wachten. tussen zat was de eerste sync van Fulcrum, en dat was wachten. **Dat wachten is voorbij: de
omschakeling is op 27-08-2026 gedaan en geslaagd**, dus het weghalen van deze container heeft
opgeleverd waarvoor het bedoeld was.
- **De map blijft staan tot de herstart-controle gedaan is.** Dat is een compose plus een - **De map blijft staan tot de herstart-controle gedaan is.** Dat is een compose plus een
`entrypoint.sh` en het kost niets. Het is de gedocumenteerde weg terug, en die vervalt pas als `entrypoint.sh` en het kost niets. Het is de gedocumenteerde weg terug, en die vervalt pas als
bewezen is dat de app na een herstart vanzelf terugkomt. De volgorde-val die hier stond (de container bewezen is dat de app na een herstart vanzelf terugkomt. De volgorde-val die hier stond (de container
@@ -3,6 +3,24 @@
> Chronologisch sessielog, nieuwste bovenaan. Kort: 3 tot 6 regels per entry. Wat er is gebeurd en > 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). > waarom, niet wat er nog moet: dat staat in [TAKEN.md](TAKEN.md).
## 27-08-2026 - Fulcrum is uitgesynct, de omschakeling gedaan, en er hoefde niets aangepast
De controle die sinds 19-08-2026 alleen nog op tijd wachtte, is gedaan en geslaagd. Fase 3 is daarmee
helemaal af. De app merkte van de wissel niets: hij leest `${APP_ELECTRS_NODE_IP}` en
`${APP_ELECTRS_NODE_PORT}`, en Fulcrum aliast zichzelf naar die namen in zijn eigen `exports.sh`. Bevestigd
langs alle drie de wegen die er zijn: een wallet van buiten over TLS op 50022, een wallet binnen het
netwerk, en het dashboard met het Fulcrum-adres en een antwoordende server. Daarmee is §4 van
`Umbrel-appstore-spec.md` geen broncode-afleiding meer maar waargenomen gedrag, en is ook de poortbotsing
op 50002 in de praktijk weg: Fulcrum en de gate draaien naast elkaar.
**Er kwam één controle gratis bij.** umbrelOS stopte en startte de app zelf omdat zijn afhankelijkheid
wijzigde, en hij kwam terug met dezelfde certificaatkeuze en werkende TLS. Dat is de vervangende
start/stop-controle uit fase 6. Het is nadrukkelijk **geen** antwoord op open punt 7: Zoraxy draaide al,
dus het certificaat bestond al toen de app opkwam, en juist die volgorde is de enige echte twijfel.
**Geraakt:** alleen documentatie: `Umbrel-appstore-spec.md`, dit plan, `Docs/CONTINUE_HERE.md`.
**Tests:** niet van toepassing.
## 25-08-2026 - de repo werd een store met twee apps, en dat kostte een herinstallatie ## 25-08-2026 - de repo werd een store met twee apps, en dat kostte een herinstallatie
Evolu Relay komt erbij en umbrelOS leest per store één repo, dus de repo `ElectrumTLS` is opgegaan in Evolu Relay komt erbij en umbrelOS leest per store één repo, dus de repo `ElectrumTLS` is opgegaan in
+29 -10
View File
@@ -11,9 +11,20 @@
> **Bijgewerkt 25-08-2026:** alles wat hier nog openstaat wacht op iets dat vanzelf komt (de eerste sync > **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 > van Fulcrum, een herstart) of ligt bij de gebruiker (de oude repo weghalen). Er is niets meer dat een
> sessie zelf kan oppakken. > 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 ## 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 - [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 `~/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 de vorm die de appstore-eis vraagt, en samen met de twee `.gitkeep`-bestanden in de repo is dat punt
@@ -81,8 +92,10 @@ Daarna, in deze volgorde:
- [x] **Uitzoeken hoe `entrypoint.sh`, `cert-watch.sh` en `web/` in `${APP_DATA_DIR}` terechtkomen.** - [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 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 een **update** wordt alleen een whitelist ververst; zie [OPEN.md](OPEN.md) punt 6
- [ ] Logica die later nog moet kunnen wijzigen uit `entrypoint.sh` halen en in de compose of in een - [x] **Vervallen: ingehaald door fase 4 (opgemerkt 27-08-2026).** Deze regel wilde de logica uit
`*.template` zetten, anders levert een `git push` geen update op bij een bestaande installatie `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 ## Fase 3 - Backend-onafhankelijk
@@ -94,8 +107,10 @@ Daarna, in deze volgorde:
en `NODE_PORT` worden door Fulcrum en ElectrumX gealiast 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; - [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 een oude containernaam als standaard laat de app draaien terwijl hij naar niets wijst
- [ ] Op de Umbrel verifiëren: omschakelen naar Fulcrum en controleren dat het zonder aanpassing werkt - [x] **Op de Umbrel geverifieerd: omgeschakeld naar Fulcrum, werkt zonder aanpassing (27-08-2026).**
(staat ook in fase 6) 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 ## Fase 4 - De image
@@ -133,17 +148,21 @@ Daarna, in deze volgorde:
- [ ] **Na `sudo reboot` controleren dat de app vanzelf terugkomt.** Dit is de aanleiding voor het plan - [ ] **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 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 productiemachine en wordt niet op verzoek herstart. Zie [OPEN.md](OPEN.md) punt 7
- [ ] Vervanger die nu wél kan: de app stoppen en starten via umbrelOS. Dat gebruikt hetzelfde - [x] **Vervanger gedaan, en gratis meegekomen met de omschakeling (27-08-2026):** umbrelOS stopte en
`app-script start`-pad als het opstarten na een herstart, maar bewijst niet de volgorde ten startte de app zelf omdat zijn afhankelijkheid wijzigde, en hij kwam terug met dezelfde
opzichte van Zoraxy 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 - [ ] 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 - [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 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 blokkade voor de Fulcrum-test weg die je zelf kon opheffen. Het externe `umbrel_main_network` blijft
staan; dat verwijdert compose nooit staan; dat verwijdert compose nooit
- [ ] Omschakelen naar Fulcrum in de umbrelOS-instellingen en controleren dat het zonder aanpassing werkt. - [x] **Omgeschakeld naar Fulcrum in de umbrelOS-instellingen. Gelukt, zonder aanpassing (27-08-2026),**
**Wacht nog op één ding, en dat is tijd: de eerste sync van Fulcrum, op 25-08-2026 op 72%.** nadat Fulcrum was uitgesynct. Bevestigd langs alle drie de wegen: een wallet van buiten over TLS op
Omschakelen naar een backend die nog niet klaar is meet de sync en niet de app 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 - [ ] 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 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 `entrypoint.sh` uit die map) speelt niet meer
+12 -2
View File
@@ -455,6 +455,13 @@ Daarnaast krijgt een app de exports van zijn **afhankelijkheden** (§4).
Dit is het antwoord op de vraag "moet de gebruiker kunnen kiezen tussen Electrs en Fulcrum": umbrelOS Dit is het antwoord op de vraag "moet de gebruiker kunnen kiezen tussen Electrs en Fulcrum": umbrelOS
1.3 doet dat al, en een app hoeft er niets voor te bouwen. 1.3 doet dat al, en een app hoeft er niets voor te bouwen.
**Bevestigd op de machine op 27-08-2026.** Alles hieronder was tot dan afgeleid uit de bron van umbreld en
uit de drie manifesten, en nooit uitgeprobeerd. Na de eerste volledige sync van Fulcrum heeft de gebruiker
in de umbrelOS-instellingen omgeschakeld van Electrs naar Fulcrum. Electrum Gate hoefde niet aangepast te
worden, en daarna kreeg een wallet van buiten over TLS gewoon data terug. Het aliassen van `NODE_IP` en
`NODE_PORT` werkt dus zoals hier beschreven. Wat het omschakelen zelf nog liet zien: umbrelOS herstart de
afnemende app erbij, en de app kwam terug met dezelfde certificaatkeuze.
**Het mechanisme.** Een app declareert een afhankelijkheid op een app-id, en een andere app kan zeggen **Het mechanisme.** Een app declareert een afhankelijkheid op een app-id, en een andere app kan zeggen
dat hij die rol vervult: dat hij die rol vervult:
@@ -554,8 +561,11 @@ De poorten die de drie backends op de **host** publiceren:
| Fulcrum | 50002 | | Fulcrum | 50002 |
| ElectrumX | 50001 intern, 50003 als publieke poort | | ElectrumX | 50001 intern, 50003 als publieke poort |
Deze app publiceert nu zelf 50002 voor stunnel. Met Fulcrum geïnstalleerd botst dat en start de app niet. **Opgelost, en op 27-08-2026 in de praktijk bevestigd.** Hier stond dat deze app zelf 50002 publiceerde
De keuze hierover staat als open punt in het plan **Configuratie**. voor stunnel, en dat de app daardoor met Fulcrum erbij niet zou starten. Dat gold voor de oude opstelling.
Open punt 1 van het plan **Configuratie** is op 19-08-2026 beslist op **50022**, en de handmatige
stunnel-container die 50002 vasthield is op 25-08-2026 weggehaald. Sinds de omschakeling draaien Fulcrum op
50002 en Electrum Gate op 50022 naast elkaar op dezelfde host.
## 5. Wat deze repo nu níet heeft ## 5. Wat deze repo nu níet heeft