Files
HarmenandClaude Opus 5 9d53612db8 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>
2026-08-27 14:42:02 +02:00

161 lines
11 KiB
Markdown
Raw Permalink 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.
# Open punten - Appstore
> Beslissingen die nog een **eigenaar** of een **moment** nodig hebben. Staat een punt hier zonder
> allebei, dan is dat de eerste fout om op te lossen. Wordt een punt een taak, dan verhuist het naar
> [TAKEN.md](TAKEN.md).
>
> **Nummers blijven staan**, ook als een punt beslist is: er kan elders naar verwezen worden, ook vanuit
> codecommentaar. Beslissen betekent verplaatsen naar de kop hieronder, niet hernummeren.
## Nog te beslissen
2. **Wat gebeurt er met de bestaande handmatige installatie?** - **In twee stappen; stap 1 is gedaan op
25-08-2026, stap 2 wacht bewust.**
Het ging om een `alpine:latest` met een `apk add stunnel` bij elke start, met `restart: unless-stopped`
en een mount op de certificaten van Zoraxy.
- **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
Fulcrum-test uit fase 6 niet langer geblokkeerd door iets wat je zelf kunt opheffen; wat er nog
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
`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
mountte zijn `entrypoint.sh` uit die map) speelt niet meer, want de container is er al af.
**Moment:** stap 2 na de herstart-controle · **Eigenaar:** gebruiker
4. **Eigen icoon en gallery.**
Het manifest wijst nu naar het Electrs-icoon en een screenshot van Electrs in `getumbrel/umbrel-apps`,
dus naar andermans bestanden en naar plaatjes van een andere app. Er moet een eigen SVG komen. De
gallery is minder dringend: die is er voor een winkelpagina die hier niemand bezoekt, zie
[KNOWLEDGE.md](../../../KNOWLEDGE.md). Vraag is wie het icoon maakt en of het in de repo komt of extern
gehost wordt.
**Moment:** fase 5 · **Eigenaar:** gebruiker
7. **Hoe wordt de herstart-controle alsnog gedaan?**
Dit is de controle waar het hele plan om begon: komt de app na een herstart van de Umbrel vanzelf
terug. Hij is op 18-08-2026 uitgesteld omdat de Umbrel een productiemachine is en niet op verzoek
herstart wordt. Dat is een geldige reden, maar het betekent wel dat het plan **niet afgerond kan
worden**: alles wat er nu ligt is een sterke aanwijzing en geen bewijs.
Wat er specifiek niet mee getest is, en waar de enige echte twijfel zit: de **volgorde bij het
opstarten**. Zoraxy kan later klaar zijn dan deze app, en dan bestaat het certificaat nog niet.
Bijgewerkt op 20-08-2026: hier stond dat de compose daarvoor een wachtlus heeft. Die is er niet meer,
want juist die lus was de klem van 0.0.3. De opvolger is de vangnettak in de herlaadlus, die TLS
aanzet zodra `cert.conf` verschijnt zonder dat er een vlag bij hoort. Dat is precies het
Zoraxy-is-later-klaar-geval, en het is nog nooit echt voorgekomen; alleen getoetst tegen tijdelijke
bestanden.
**Moment:** bij de eerstvolgende herstart die er toch komt, bijvoorbeeld een umbrelOS-update of een
stroomonderbreking. Noteer de uitkomst dan in `PROGRESS.md`. · **Eigenaar:** gebruiker
9. **Volgt de app-map de conventie van andere apps?** Gevraagd door de gebruiker op 20-08-2026, die
opmerkte dat hij bij andere apps geen app-code in `app-data` ziet. Uitgezocht en vastgelegd in
[Umbrel-appstore-spec.md](../../../Referenties/Umbrel-appstore-spec.md); de korte versie is dat
config-in-app-data een bestaand patroon is (`electrs` mount zijn `torrc` zo) en dat code-in-app-data
het gevolg is van geen eigen image bouwen, wat een besluit is en geen ongeluk.
**Beide vervolgpunten zijn diezelfde dag gedaan in 0.0.9**, nadat de gebruiker zei dat hij de app wil
publiceren als standaard-app: de data staat onder `data/` met een `.gitkeep` per map, en `backupIgnore`
noemt de sessielog en `status.json`. Niet `data/runtime/config`, want daar zit de certificaatkeuze.
Wat het uitzoeken daarna opleverde is groter dan dit punt en staat daarom in een eigen masterplan
**Publicatie**: de eisen van de officiële store, wat er al aan voldoet, en het risico dat niet in een
checklist staat, namelijk de leesmount op de certificaten van Zoraxy.
**Moment:** afgerond · **Eigenaar:**
## Beslist
8. **Wordt de repo hernoemd, en wat wordt dan het store-id?** - **Store-id `whatsnext`, app-id
`whatsnext-electrum-gate`, repo-naam nog niet** (19-08-2026, gebruiker).
Het app-id **moet** met het store-id beginnen en de mapnaam moet gelijk zijn aan het app-id (zie
[Umbrel-appstore-spec.md](../../../Referenties/Umbrel-appstore-spec.md)). De aanname bij het stellen
van deze vraag was dat de repo-naam daar ook in zat, want de store-URL ís de repo-URL. **Dat klopte
niet:** het store-id is gewoon een veld in `umbrel-app-store.yml` en staat los van de naam van de
repo. Daardoor kon het store-id meteen goed gezet worden en kan de repo-naam wachten.
De store heet nu naar de maker en niet naar deze ene app. Dat is de variant die later een tweede app
toelaat zonder opnieuw te hernoemen, en dat weegt hier zwaarder dan de kosten, want die zijn nul: de
gebruiker gaf aan de app zonder bezwaar opnieuw te kunnen installeren.
**Afgerond op 25-08-2026, en eerder dan gedacht.** Hier stond dat de repo nog `ElectrumTLS` heette en
dat het hernoemen zou meeliften op een publieke versie op GitHub. Wat het versnelde was Evolu Relay:
umbrelOS leest per store één repo, dus een tweede app dwong de vraag af. De repo is
`UmbrelApps` geworden, met `website`, `repo`, `support`, `submission` en `icon` mee, in 0.0.15.
**Het app-id is niet meegegaan** en dat is de reden dat dit goedkoop was: `whatsnext-electrum-gate`
hangt aan het store-id en niet aan de URL. Voor umbrelOS is het dus dezelfde app in een andere store.
**En daarmee beantwoord, diezelfde dag: een geïnstalleerde app overleeft een wisseling van store-URL
níet.** Dit stond hier als "niet uitgezocht, en niet aannemen dat het meevalt"; dat was terecht.
Wat er precies gebeurde: na het toevoegen van de nieuwe store **zag** umbrelOS de update naar 0.0.15
wel, maar het bijwerken gebeurde niet. Geen foutmelding, geen zichtbare reden. Dat is het lastigste
soort uitkomst, want "de update wordt gezien" leest als "de koppeling is gelegd" en dat is hij niet:
het tonen van een nieuwere versie en het ophálen ervan gaan niet langs dezelfde weg. De herkomst van
een geïnstalleerde app blijft de store waaruit hij geïnstalleerd is, en een gelijk app-id in een andere
store maakt daar geen dezelfde app van.
**Deïnstalleren plus opnieuw installeren loste het op** (25-08-2026); de app draait weer op 0.0.15. De
prijs is `app-data`, dus de certificaatkeuze in `data/runtime/config/selected-cert` moet daarna opnieuw
gemaakt worden. Wie een certificaat had geüpload in plaats van uit Zoraxy te kiezen, raakt dat kwijt en
moet `data/certs/` vooraf wegkopiëren.
**De regel die hieruit volgt en verder gaat dan deze ene keer:** behandel een verhuizing van de
store-URL als een herinstallatie van elke app erin, en niet als een update. Dat maakt het ook een
afweging bij het masterplan **Publicatie-Gate**, want daar verandert het app-id nog een keer.
1. **Draait `nginx:alpine` met de `stream`- en `stream_ssl`-module?** - **Ja** (18-08-2026).
Op de Umbrel gecontroleerd met `docker run --rm nginx:alpine nginx -V`. Aanwezig zijn
`--with-stream`, `--with-stream_realip_module`, `--with-stream_ssl_module` en
`--with-stream_ssl_preread_module`, alle vier statisch meegebouwd, dus zonder `load_module`.
Daarmee gaat het ontwerp uit [PLAN.md](PLAN.md) §4c door in de kleine variant: één container die de
web-UI serveert én TLS termineert, geen stunnel-installatie bij het starten, geen losse
`cert-monitor`, en de Docker-socket-mount vervalt.
Twee dingen die deze uitkomst meebracht en die het opschrijven waard zijn. nginx wil de **volledige
keten** in `ssl_certificate`, terwijl stunnel het gesplitst wilde; de `awk`-splitsing uit
`entrypoint.sh` is daarmee overbodig in plaats van overgenomen. En dit antwoord geldt voor de tag
`nginx:alpine` van vandaag: bij het pinnen op een digest wordt dezelfde controle op díe digest
herhaald, anders is er iets anders bewezen dan er uitgeleverd wordt.
6. **Hoe komen `entrypoint.sh` en `web/` in `${APP_DATA_DIR}`?** - **Bij installatie automatisch, bij
een update niet** (18-08-2026).
umbreld doet bij installatie `rsync --archive` van de hele app-map naar `${APP_DATA_DIR}`, dus de
mounts in de compose kloppen. Bij een **update** wordt alleen een whitelist ververst:
`docker-compose.yml`, `*.template`, `exports.sh`, `torrc`, `hooks` en `umbrel-app.yml`.
Gevolg dat het ontwerp stuurt: een gewijzigde `entrypoint.sh` bereikt een bestaande installatie nooit,
zonder foutmelding. Logica die later nog moet kunnen wijzigen hoort daarom in de compose, in de image,
of in een `*.template`-bestand; dat laatste staat in de whitelist én wordt bij elke start met de
omgevingsvariabelen ingevuld. Zie de naslag
[Umbrel-appstore-spec.md](../../../Referenties/Umbrel-appstore-spec.md).
3. **Wanneer wordt er voor het eerst gepusht?** - **Meteen, vóór de opschoning** (18-08-2026).
De repo staat sindsdien publiek op `https://sc.kamenier-hamer.nl/sysop/ElectrumTLS.git`, met het
domein en het certificaatpad er nog in. Publiek zijn was geen keuze (umbreld kloont anoniem), alleen
de volgorde was dat. Afweging van de gebruiker: de repo is voor eigen gebruik en wordt niet
aangekondigd, dus vindbaarheid is laag.
Gevolg dat vastligt: die waarden staan nu in de **historie**. Het plan **Configuratie** haalt ze uit de
bestanden, niet uit de historie; dat laatste zou een herschrijving vragen. Behandel het domein dus als
bekend, en laat het geen reden zijn om Configuratie uit te stellen of juist te haasten.
**Bijgewerkt 25-08-2026: die historie is bij de verhuizing achtergebleven.** `UmbrelApps` is als lege
repo begonnen met alleen de huidige toestand erin, op verzoek van de gebruiker die de historie niet
nodig had. Daarmee vervalt de vaststelling hierboven, maar **pas als de oude repo weg is**: zolang
`ElectrumTLS` op de Git-server staat, staat het domein daar nog in de historie. Dat weghalen is dus
geen opruimwerk maar het laatste stuk van deze beslissing. **Eigenaar:** gebruiker
5. **Mag de app-id later nog wijzigen?** - **Ja** (18-08-2026).
Er zijn geen andere installaties, dus achterwaartse compatibiliteit is geen eis. Een wijziging kost
één keer opnieuw installeren. Genoteerd omdat de prefix-regel anders zwaarder lijkt dan hij is: de
keuze `electrumtls-electrum-tls` mag herzien worden zolang dat vóór fase 6 gebeurt.