De handmatige installatie uit de tijd vóór dit plan bond poort 50002 en stond op restart: unless-stopped, dus hij overleefde een herstart. Dat was de laatste blokkade voor de Fulcrum-test die op te heffen was; wat er nu nog tussen zit is de eerste sync van Fulcrum, en dat is wachten en geen werk. De map ~/umbrel/home/Containers/ElectrumTLS blijft bewust staan tot de herstart-controle gedaan is; dat is de gedocumenteerde weg terug. De volgorde-waarschuwing die er bij die taak stond is eruit: de container mountte zijn entrypoint.sh uit die map, en die container is er nu af. Nagekeken en niet aangepast: de repo ElectrumTLS staat nog op de Git-server en is nog steeds anoniem leesbaar op b6afe67. Het domein staat daar dus nog in de historie, en die taak blijft open. Tests: niet gedraaid, dit raakt alleen documentatie. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
159 lines
11 KiB
Markdown
159 lines
11 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; 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 zit is de eerste sync van Fulcrum, en dat is wachten.
|
||
- **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.
|