108 lines
7.1 KiB
Markdown
108 lines
7.1 KiB
Markdown
# Publicatie-Gate - masterplan
|
|||
|
|
|
||
|
|
> **App: Electrum Gate.** Er is ook een **Publicatie-Relay**; inleveren bij de officiële store is per app
|
||
|
|
> en de twee plannen delen alleen de eisen, niet het werk. Hernoemd op 25-08-2026, toen Evolu Relay bij
|
||
|
|
> deze store kwam; daarvoor heette dit plan **Publicatie**.
|
||
|
|
|
||
|
|
## 1. Waarom dit een eigen plan is
|
||
|
|
|
||
|
|
Op 20-08-2026 zei de gebruiker dat hij de app uiteindelijk als standaard-app voor Umbrel wil publiceren.
|
||
|
|
Dat verandert wat "af" betekent. Tot nu toe was de maatstaf "hij werkt op deze Umbrel", en de app haalt die
|
||
|
|
sinds diezelfde dag. De maatstaf van dit plan is een andere: **iemand anders keurt het pakket goed**, tegen
|
||
|
|
eisen die niet van ons zijn.
|
||
|
|
|
||
|
|
Daarom staat dit los van het plan **Appstore**. Dat plan gaat over de app als umbrelOS-app en over de
|
||
|
|
eigen community store, en die twee doelen zijn haalbaar zonder dat er ooit iemand meekijkt. Twee taken uit
|
||
|
|
dat plan verhuizen hier inhoudelijk naartoe (de images pinnen, de repo hernoemen); ze blijven daar staan
|
||
|
|
tot dit plan actief wordt, want een taak op twee plekken loopt uit elkaar.
|
||
|
|
|
||
|
|
## 2. Wat er af is
|
||
|
|
|
||
|
|
Niet alles hoeft nog te gebeuren. Bij het uitzoeken op 20-08-2026 bleek een deel al goed, en dat is geen
|
||
|
|
toeval: de eisen zijn dezelfde als die van de spec die dit project vanaf 18-08 als naslag bijhoudt.
|
||
|
|
|
||
|
|
- `app_proxy` met alleen omgevingsvariabelen, geen eigen poorten;
|
||
|
|
- de umbrelOS-inlog staat aan en er is geen `PROXY_AUTH_WHITELIST`, dus ook het API-pad zit erachter;
|
||
|
|
- `gallery: []`, wat voor een nieuw pakket precies goed is;
|
||
|
|
- alle gebruikersstaat onder `${APP_DATA_DIR}/data/...`, met een `.gitkeep` per map (sinds 0.0.9);
|
||
|
|
- de manifestvelden in de voorgeschreven volgorde, met een toets erop, en `icon` als laatste regel zodat
|
||
|
|
dat de enige is die bij inlevering weg hoeft (20-08-2026);
|
||
|
|
- niets wordt buiten `${APP_DATA_DIR}` geschreven;
|
||
|
|
- geen Docker-socket, geen privileged container, geen host-netwerk.
|
||
|
|
|
||
|
|
## 3. Wat er nog moet, in volgorde van moeilijkheid
|
||
|
|
|
||
|
|
1. **De images pinnen.** `python:3-alpine` en `nginx:alpine` staan kaal in de compose. Het moet
|
||
|
|
`repo:versie@sha256:<digest>` worden, met `linux/amd64` én `linux/arm64` in de manifest-lijst. Dit kan
|
||
|
|
alleen op de Umbrel en het is de grootste openstaande eis. Bijkomend voordeel dat losstaat van
|
||
|
|
publicatie: een gepinde image maakt de app reproduceerbaar, en dat was al een doel van het plan
|
||
|
|
**Appstore**, fase 4.
|
||
|
|
|
||
|
|
**Niet nu doen.** Besloten met de gebruiker op 20-08-2026: zolang er nog gedraaid, verbeterd en getest
|
||
|
|
wordt, kost een pin alleen werk. Elke keer dat je een nieuwere basisimage wilt, moet je opnieuw pinnen,
|
||
|
|
en tot de inlevering levert het niets op wat er nu ontbreekt.
|
||
|
|
|
||
|
|
De commando's staan in [Images-pinnen.md](../../Referenties/Images-pinnen.md), met de drie dingen die
|
||
|
|
erbij stil mis kunnen gaan: een tag die meebeweegt, de digest van één architectuur in plaats van die van
|
||
|
|
de index, en de aanname dat pinnen een eenmalige handeling is. Werkwijze: de gebruiker draait het
|
||
|
|
commando op de Umbrel en plakt de uitvoer, waarna de pin in `docker-compose.yml` gaat. Dat is een commit
|
||
|
|
met een versieverhoging, want de compose wordt daadwerkelijk uitgerold.
|
||
|
|
2. **Het app-id kaal maken.** `whatsnext-electrum-gate` wordt `electrum-gate`, en de mapnaam mee. Het
|
||
|
|
voorvoegsel is een eis van een community store, niet van de officiële. Let op: een id-wijziging is voor
|
||
|
|
umbrelOS een andere app, dus dat is opnieuw installeren. De gebruiker heeft daar op 20-08-2026 geen
|
||
|
|
bezwaar tegen.
|
||
|
|
3. **`icon` weghalen**, en dat kan pas op het moment van inleveren: zolang dit een eigen store is moet het
|
||
|
|
icoon er juist in. De volgorde zelf is op 20-08-2026 al goed gezet, en het icoon staat als laatste regel
|
||
|
|
zodat dit één verwijdering is. Wat er dan ook nog moet: `submission` naar de PR-URL laten wijzen.
|
||
|
|
4. **Drie tot vijf schermafbeeldingen aanleveren.** Niet zelf opmaken: het store-team maakt de
|
||
|
|
promo-afbeeldingen (achtergrond met het plaatje erop) en daarom zien ze er allemaal hetzelfde uit. Wie
|
||
|
|
het wél zelf wil, levert 1440 bij 900 in PNG. Details en de vorm voor een eigen store staan in
|
||
|
|
[Umbrel-appstore-spec.md](../../Referenties/Umbrel-appstore-spec.md).
|
||
|
|
|
||
|
|
Wat er op moet: het dashboard met echte gegevens, de certificaatkeuze open met meerdere kandidaten, en
|
||
|
|
de verbindingsregels per wallet. Dat laatste is waar iemand voor komt en het eerste is het bewijs dat het
|
||
|
|
werkt. **Met plaatsvervangende hostnamen**, want een echte schermafbeelding van deze machine zet veertien
|
||
|
|
subdomeinen van de gebruiker op een publieke winkelpagina.
|
||
|
|
|
||
|
|
5. **De repo verhuizen naar een publieke plek** met de URL-velden mee. Staat nu als taak in **Appstore**
|
||
|
|
fase 7, en is hier een voorwaarde: `repo`, `website`, `support` en `submission` moeten naar iets wijzen
|
||
|
|
dat een reviewer kan openen.
|
||
|
|
6. **De herstart-controle afronden.** Geen formele eis, maar wel de enige controle die dit project nooit
|
||
|
|
heeft kunnen doen, en het is een slecht idee om iets in te leveren waarvan je dat niet weet. Zie
|
||
|
|
**Appstore**, open punt 7.
|
||
|
|
|
||
|
|
## 3b. Bestaat dit al, en wat zeggen we in de PR
|
||
|
|
|
||
|
|
Uitgezocht op 20-08-2026, want dat is de eerste vraag die een reviewer stelt. Antwoord: **nee**, en de
|
||
|
|
onderbouwing is scherper dan "ik heb niets gevonden". De reverse proxies die al in de store staan, Nginx
|
||
|
|
Proxy Manager op kop, kunnen een certificaat wel op HTTP zetten maar niet op een gewone TCP-poort; daar
|
||
|
|
staat bij NPM een openstaand verzoek voor. Een Electrum-wallet praat geen HTTP, dus die apps lossen dit
|
||
|
|
niet op. Met bronnen in
|
||
|
|
[Vergelijkbare-apps.md](../../Referenties/Vergelijkbare-apps.md).
|
||
|
|
|
||
|
|
Die ene zin is de kern van de PR-tekst. Reken er daarnaast op dat er gevraagd wordt waarom dit geen VPN of
|
||
|
|
tunnel is. Het antwoord staat in datzelfde document en is **geen** afweging maar een verschil in soort: een
|
||
|
|
tunneldienst zit in het pad en termineert het verkeer daar, een mesh-VPN vraagt een account, een
|
||
|
|
coördinatieserver en een client op elk apparaat, en deze app vraagt geen van beide. De Engelse formulering
|
||
|
|
staat er ook, en sinds 0.0.11 in de `description` van het manifest.
|
||
|
|
|
||
|
|
## 4. Het risico dat niet in een checklist staat
|
||
|
|
|
||
|
|
De app leest de certificaatmap van een ándere app: `${UMBREL_ROOT}/app-data/zoraxy/...` staat alleen-lezen
|
||
|
|
gemount. Dat is toegestaan (de regel gaat over schrijven), maar het is het meest ongebruikelijke aan dit
|
||
|
|
pakket en het is precies het soort ding waar een review over valt.
|
||
|
|
|
||
|
|
Wat het antwoord daarop wordt, is nog niet beslist. Denkrichtingen, niet in volgorde:
|
||
|
|
|
||
|
|
- laten staan en uitleggen. Het is alleen-lezen, het is de kern van wat de app doet, en het alternatief is
|
||
|
|
dat iedere gebruiker zijn certificaat met de hand kopieert;
|
||
|
|
- het uploadpad uit 0.0.7 is er al en werkt zonder die mount. De app is dus bruikbaar zonder Zoraxy, en dat
|
||
|
|
maakt de mount een gemak in plaats van een voorwaarde;
|
||
|
|
- vragen vóór het inleveren in plaats van erna. Een issue in `umbrel-apps` kost minder dan een afgewezen PR.
|
||
|
|
|
||
|
|
## 5. Onderbouwing
|
||
|
|
|
||
|
|
De eisen staan niet in de README van `umbrel-apps` maar in de skill-documentatie waar die naar verwijst.
|
||
|
|
Met bron per regel, plus wat deze app er nu van doet, in
|
||
|
|
[Umbrel-appstore-spec.md](../../Referenties/Umbrel-appstore-spec.md).
|