#!/bin/sh # ═══════════════════════════════════════════════════════════════════════════════ # Bouwt de image voor de app whatsnext-evolu-relay. # # Waarom dit bestand bestaat: Trezor publiceert geen image. Hun werkproces duwt # naar een eigen Amazon ECR en op Docker Hub staat niets, dus er is geen # `docker pull` die iets oplevert. De broncode is wel publiek, met een Dockerfile # erin. Dit script is de brug: het haalt de broncode op een vastgezette commit en # bouwt hún Dockerfile. # # Waarom het NIET in de app-map staat: umbreld kopieert de hele app-map naar het # apparaat, en bij een update wordt alleen een whitelist ververst waar een # Dockerfile niet in zit. Bouwen tijdens het starten van de app zou de installatie # bovendien minuten laten hangen. Het recept hoort dus in de repo en het resultaat # in een register of in de lokale Docker-opslag; de app verwijst alleen naar de tag. # # Waarom we hun Dockerfile gebruiken en geen eigen: dan hoeven we hun bouwstappen # niet na te bouwen en niet bij te houden. Wat wij toevoegen is uitsluitend de pin. # # Draaien: sh build.sh # Vereist: docker en git op de machine waar je bouwt. # ═══════════════════════════════════════════════════════════════════════════════ set -eu # ── De pin ──────────────────────────────────────────────────────────────────── # Dit is het enige wat je aanpast als je een nieuwere versie wil. Verhoog daarna # ook `version` in whatsnext-evolu-relay/umbrel-app.yml, anders rolt umbrelOS de # wijziging niet uit. UPSTREAM_REPO="https://github.com/trezor/trezor-suite-sync.git" UPSTREAM_COMMIT="c03a2043acec48d4a1bbafca65e94da33dce1edd" # De tag waar docker-compose.yml van de app naar verwijst. De korte commit zit # erin, zodat je op het apparaat kunt zien wat er draait. # # Het register staat er expres in en dit is geen smaakkwestie: umbreld haalt élke # image op via de Docker Engine API, dus een tag die alleen lokaal bestaat is voor # hem onbereikbaar en de installatie faalt met "pull access denied". Dat is op # 25-08-2026 op het apparaat vastgesteld. Zie Umbrel-appstore-spec.md. IMAGE="sc.kamenier-hamer.nl/sysop/evolu-relay:c03a204" # ── Bouwen ──────────────────────────────────────────────────────────────────── WORKDIR="$(mktemp -d)" cleanup() { rm -rf "$WORKDIR"; } trap cleanup EXIT INT TERM echo "Broncode ophalen op ${UPSTREAM_COMMIT}" # Niet `clone --branch`: dat pint op een naam die meebeweegt. Een fetch van één # commit haalt precies deze toestand op en niets anders. GitHub staat het ophalen # van een losse commit-sha toe; een Git-server die dat niet doet, geeft hier een # foutmelding in plaats van stil een andere versie te bouwen. git init --quiet "$WORKDIR" git -C "$WORKDIR" remote add origin "$UPSTREAM_REPO" git -C "$WORKDIR" fetch --quiet --depth 1 origin "$UPSTREAM_COMMIT" git -C "$WORKDIR" checkout --quiet FETCH_HEAD # Controle dat we hebben wat we dachten. Zonder deze regel bouwt het script bij # een gewijzigde afspraak over sha's stil de verkeerde toestand. GEVONDEN="$(git -C "$WORKDIR" rev-parse HEAD)" if [ "$GEVONDEN" != "$UPSTREAM_COMMIT" ]; then echo "FOUT: opgehaald ${GEVONDEN}, verwacht ${UPSTREAM_COMMIT}" >&2 exit 1 fi echo "Bouwen als ${IMAGE}" docker build --tag "$IMAGE" "$WORKDIR" echo echo "Klaar. De app verwijst naar deze tag:" docker image inspect --format '{{.RepoTags}} {{.Id}}' "$IMAGE" echo echo "Bouwen is niet genoeg: de app verwijst naar het register, want umbreld kan" echo "niet bij een image die alleen lokaal staat. Nog te doen:" echo echo " docker login sc.kamenier-hamer.nl" echo " docker push ${IMAGE}" echo echo "Zet daarna de digest uit de push-uitvoer achter de tag in" echo "whatsnext-evolu-relay/docker-compose.yml, op beide services, en verhoog" echo "\`version\` in het manifest. Zonder die verhoging rolt umbrelOS het niet uit." echo echo "Controleer dat het anoniem te halen is, want umbreld krijgt geen" echo "inloggegevens mee. Log uit in dezelfde context waarin je inlogde, anders" echo "meet je je eigen sessie:" echo echo " docker logout sc.kamenier-hamer.nl && docker pull ${IMAGE}"