# Taken - Umbrelapp > **App: Evolu Relay.** Prioriteit: **A** | Afhankelijk van: – > > Actief sinds 25-08-2026. Gepromoveerd uit `Masterplannen/` omdat de gebruiker besloot het pakket meteen te > maken. De afhankelijkheid op **Proefopstelling** is daarmee geen blokkade meer maar een parallelle bron: > fase 1 daarvan is af en leverde de feiten waarop dit pakket rust. Wat er nog uit moet komen zijn twee > vragen die pas bij het installeren pijn doen, en die staan hieronder als eigen taak. ## Volgende stap - [ ] **In de logs van de relay kijken of het databaseschema zichzelf aanmaakt.** De drie containers staan omhoog, maar "Up" is nog geen "werkt": de relay kan draaien en toch klagen over ontbrekende tabellen. `sudo docker logs whatsnext-evolu-relay_relay_1`. Dit is nu het eerste punt waar het misgaat als het misgaat. **Eigenaar: gebruiker** ## Fase 1 - De app-map - [x] **`whatsnext-evolu-relay/` aangemaakt met `umbrel-app.yml` en `docker-compose.yml` (25-08-2026).** Mapnaam gelijk aan het `id`, met het store-voorvoegsel `whatsnext-`, en de manifestvelden in de voorgeschreven volgorde - [x] `data/postgres/.gitkeep` erin, zodat de mount bij de eerste start niet als root wordt aangemaakt - [x] **`dependencies` weggelaten en niet leeg gezet.** Deze app hangt van geen enkele andere app af; een leeg veld zou suggereren dat er iets te kiezen valt - [ ] **Een eigen icoon.** Er staat nu géén `icon` in het manifest, dus de tegel blijft naamloos in de store. Bewust leeg: een geleend of verkeerd icoon is erger dan geen. **Eigenaar: gebruiker** ## Fase 2 - De compose - [x] **`app_proxy` met `PROXY_AUTH_ADD: "false"`, en geen eigen `ports:`.** Trezor Suite is geen browser met een sessiecookie. Dit is het patroon van de eigen `nostr-relay`-app van Umbrel, dus een precedent en geen omweg; zie [PLAN.md](PLAN.md) §4c - [x] **Relay en quota-manager uit één image met een ander `command`.** Expliciet en niet leunend op de `CMD` van de Dockerfile, want daar staat `yarn start` met bovenstrooms zelf een twijfel erbij - [x] **De quota-manager gaat mee.** Niet omdat de relay hem aanroept, maar omdat de relay elke eigenaar zonder limietenrij weigert en dit is wat die rijen maakt - [x] **Postgres onder `${APP_DATA_DIR}/data/postgres`**, wachtwoord uit `${APP_PASSWORD}`, `PGDATA` op een submap, en `postgres:17-alpine` in plaats van `postgres` kaal - [x] **Healthcheck op de eigen database en gebruiker**, niet op `-d postgres` zoals bovenstrooms: die database bestaat hier niet, en dan is de controle groen op het verkeerde antwoord - [x] **De eigen image gepind op tag plus digest (25-08-2026).** `sc.kamenier-hamer.nl/sysop/evolu-relay:c03a204@sha256:2fe1e9e9…`, op beide services. Dat moest wel: zie fase 4. **Let op dat dit één architectuur is** (amd64), want er is alleen amd64 geduwd. Voor de officiele store hoort er een multi-arch index-digest met arm64 in; dat staat bij **Publicatie-Relay** - [ ] **`postgres:17-alpine` pinnen op de multi-arch index-digest.** Kan meteen, met `docker buildx imagetools inspect`, en het is het laatste ongepinde in deze app. Staat als TODO in de compose ## Fase 3 - Het bouwrecept - [x] **`tools/evolu-relay/build.sh` (25-08-2026).** Haalt de broncode op een vastgezette commit en bouwt de Dockerfile van Trezor. Niet hun bouwstappen nabouwen; wat wij toevoegen is de pin - [x] **Niet in de app-map gezet, en dat is geen netheid.** Een `Dockerfile` staat niet in de update-whitelist, dus bouwen-in-de-app zou elke nieuwe versie een herinstallatie kosten. Zie [PLAN.md](PLAN.md) §4f - [x] **Onder `tools/` en niet onder `build/`:** dat laatste staat in `.gitignore` als bouwselmap, dus het recept zou stilzwijgend buiten de repo blijven. Gevonden bij het stagen, niet bij het schrijven - [x] Het script controleert na het ophalen dat de commit is wat hij verwachtte, en faalt hard als dat niet zo is. Zonder die regel bouwt het stil de verkeerde toestand ## Fase 4 - Installeren en verifiëren op de Umbrel Niets hiervan is op een laptop te doen. Eigenaar van deze hele fase: **gebruiker**. - [x] **De image gebouwd op de Umbrel (25-08-2026), in 50 seconden.** Twee dingen die het opleverde: de gebruiker `umbrel` zit hier níet in de groep `docker`, dus het moet met `sudo`; en de Dockerfile van Trezor bouwt zonder aanpassing - [x] **In een register gezet, want anders kan umbreld er niet bij (25-08-2026).** Dit was de grote verrassing van de dag en het staat met bron in [Umbrel-appstore-spec.md](../../../Referenties/Umbrel-appstore-spec.md): umbreld haalt élke image via de Docker Engine API op, niet via compose. Een lokaal gebouwde tag is dus onbereikbaar en `pull_policy: never` doet niets, want de compose wordt niet gelezen om te pullen. Het Gitea-register op dezelfde server als de store bleek de kortste weg, en anoniem halen werkt daar - [x] **De app geïnstalleerd en alle drie de containers blijven draaien (25-08-2026).** `relay`, `quota-manager` en `db`, met `db` op healthy en de app-proxy op 3851. De lokale images waren vooraf weggehaald, dus de pull uit het register is echt gedaan en het hele pad is bewezen: broncode → bouwrecept → register → gepinde digest → installatie - [ ] **Gecontroleerd of het databaseschema zichzelf aanmaakt.** Niet uitgezocht, en dit is de eerste plek waar het misgaat als het antwoord nee is. Kijk in de logs van de relay-container - [ ] Trezor Suite naar `:3851` laten wijzen en een label synchroniseren. **Dit is de enige controle die telt**, en hij kan mislukken op de eigenaarsregistratie zonder dat er iets mis is met het pakket - [ ] De app gestopt en gestart, en de database heeft het overleefd - [ ] Gecontroleerd dat het toevoegen van deze app Electrum Gate niet raakt ## Geblokkeerd / wacht op - [ ] **Hoe registreer je een eigenaar bij de quota-manager?** Zonder antwoord kan er niet gesynchroniseerd worden, ook al draait alles. Wacht op **Proefopstelling** fase 1; begin bij `bruno-collection/` in de bovenstroomse repo - [ ] **Accepteert Trezor Suite dit adres, en in welke vorm?** Wacht op **Proefopstelling**, "Volgende stap". Als het antwoord nee is, is dit pakket zonder waarde