145 lines
9.8 KiB
Markdown
145 lines
9.8 KiB
Markdown
# 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, en de eerste is niet
|
|||
|
|
meer uit te stellen** (bijgewerkt 20-08-2026).
|
|||
|
|
|
|||
|
|
De container is gestopt maar de compose staat er nog: een `alpine:latest` met een `apk add stunnel` bij
|
|||
|
|
elke start, met `restart: unless-stopped` en een mount op de certificaten van Zoraxy. Wat er nu aan de
|
|||
|
|
orde is:
|
|||
|
|
|
|||
|
|
- **de container weghalen, nu.** Hij bindt poort **50002**, en dat is precies de poort die Fulcrum op de
|
|||
|
|
host wil. Zolang hij bestaat kan het omschakelen naar Fulcrum niet slagen, en dat staat in fase 6 als
|
|||
|
|
taak. `restart: unless-stopped` betekent bovendien dat hij een herstart van de Umbrel overleeft;
|
|||
|
|
- **de map laten 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. Let op de volgorde: de container mount zijn
|
|||
|
|
`entrypoint.sh` uit die map, dus eerst de container weg en dan de map.
|
|||
|
|
|
|||
|
|
**Moment:** stap 1 nu, 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.
|
|||
|
|
|
|||
|
|
**Wat er wél open blijft, en nu voor het eerst echt aan de orde is:** of een geïnstalleerde app een
|
|||
|
|
wisseling van **store-URL** overleeft, of dat de store verwijderd en opnieuw toegevoegd moet worden en
|
|||
|
|
de app daarna opnieuw geïnstalleerd. Niet uitgezocht, en niet aannemen dat het meevalt. **Eigenaar:**
|
|||
|
|
gebruiker, bij het omzetten van de store in umbrelOS.
|
|||
|
|
|
|||
|
|
|
|||
|
|
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.
|