2026-08-25 17:18:22 +02:00
|
|
|
#!/bin/sh
|
|
|
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
|
|
|
# Bouwt de image voor de app whatsnext-evolu-relay.
|
|
|
|
|
#
|
2026-08-28 11:12:41 +02:00
|
|
|
# Wat er gebouwd wordt is ONS programma: `src/index.js` roept `createRelay` uit
|
|
|
|
|
# `@evolu/nodejs` aan met onze eigen toegangscontrole erin. De relay zelf komt
|
|
|
|
|
# gewoon uit npm en wordt niet nagebouwd of aangepast.
|
2026-08-25 17:18:22 +02:00
|
|
|
#
|
2026-08-28 11:12:41 +02:00
|
|
|
# Dit verving op 28-08-2026 het vorige recept, dat de repo van Trezor kloonde en
|
|
|
|
|
# hun Dockerfile bouwde. Dat pakket had een Postgres en een quota-manager nodig en
|
|
|
|
|
# kon als zelf-gehoste relay in de kern niet werken; zie het plan Umbrelapp,
|
|
|
|
|
# OPEN.md punt 6.
|
|
|
|
|
#
|
|
|
|
|
# Waarom dit NIET in de app-map staat: umbreld kopieert de hele app-map naar het
|
2026-08-25 17:18:22 +02:00
|
|
|
# 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
|
2026-08-28 11:12:41 +02:00
|
|
|
# in een register; de app verwijst alleen naar de tag.
|
2026-08-25 17:18:22 +02:00
|
|
|
#
|
|
|
|
|
# Draaien: sh build.sh
|
2026-08-28 11:12:41 +02:00
|
|
|
# Vereist: docker op de machine waar je bouwt. Git is niet meer nodig.
|
2026-08-25 17:18:22 +02:00
|
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
|
|
|
|
|
|
|
|
set -eu
|
|
|
|
|
|
|
|
|
|
# ── De pin ────────────────────────────────────────────────────────────────────
|
2026-08-28 11:12:41 +02:00
|
|
|
# De versies van `@evolu/common` en `@evolu/nodejs` staan exact in package.json en
|
|
|
|
|
# zijn dáár de pin. Hier staat alleen het etiket op de uitkomst.
|
2026-08-25 18:31:20 +02:00
|
|
|
#
|
2026-08-28 11:41:58 +02:00
|
|
|
# Dit is het etiket op de IMAGE. Verhoog het als de image verandert, dus als er
|
|
|
|
|
# iets in src/, package.json of de Dockerfile wijzigt, en zet dan dezelfde waarde
|
|
|
|
|
# achter `image:` in de compose.
|
|
|
|
|
#
|
|
|
|
|
# `version` in umbrel-app.yml is een ander nummer en mag hierop vooruitlopen: dat
|
|
|
|
|
# moet bij élke wijziging aan de app omhoog, ook als alleen een template
|
|
|
|
|
# verandert, want anders rolt umbrelOS hem niet uit. Dat heeft hier een keer een
|
|
|
|
|
# dag gekost. Ze zijn dus gelijk zolang alleen de image wijzigt, en lopen uiteen
|
|
|
|
|
# zodra er een reparatie in de app-map zit.
|
2026-08-28 12:08:19 +02:00
|
|
|
VERSION="0.3.0"
|
2026-08-28 11:12:41 +02:00
|
|
|
|
2026-08-25 18:31:20 +02:00
|
|
|
# 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.
|
2026-08-28 11:12:41 +02:00
|
|
|
IMAGE="sc.kamenier-hamer.nl/sysop/evolu-relay:${VERSION}"
|
2026-08-25 17:18:22 +02:00
|
|
|
|
2026-08-28 11:12:41 +02:00
|
|
|
RECEPT="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
|
2026-08-25 17:18:22 +02:00
|
|
|
|
2026-08-28 11:12:41 +02:00
|
|
|
# ── Controles vooraf ──────────────────────────────────────────────────────────
|
|
|
|
|
# Beter hier hard falen dan een image bouwen die iets anders bevat dan je denkt.
|
2026-08-25 17:18:22 +02:00
|
|
|
|
2026-08-28 11:12:41 +02:00
|
|
|
if [ ! -f "${RECEPT}/package.json" ] || [ ! -f "${RECEPT}/src/index.js" ]; then
|
|
|
|
|
echo "FOUT: package.json of src/index.js ontbreekt in ${RECEPT}" >&2
|
2026-08-25 17:18:22 +02:00
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2026-08-28 11:12:41 +02:00
|
|
|
if [ ! -f "${RECEPT}/package-lock.json" ]; then
|
|
|
|
|
echo "LET OP: er is geen package-lock.json, dus npm kiest zelf de onderliggende"
|
|
|
|
|
echo " afhankelijkheden. De twee pakketten van Evolu staan exact vast in"
|
|
|
|
|
echo " package.json, maar wat daaronder hangt kan meebewegen. Draai eenmalig"
|
|
|
|
|
echo " 'npm install' in deze map, commit het lock-bestand, en zet dan in de"
|
|
|
|
|
echo " Dockerfile 'npm install' om naar 'npm ci'."
|
|
|
|
|
echo
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# ── Bouwen ────────────────────────────────────────────────────────────────────
|
|
|
|
|
|
2026-08-25 17:18:22 +02:00
|
|
|
echo "Bouwen als ${IMAGE}"
|
2026-08-28 11:12:41 +02:00
|
|
|
docker build --tag "$IMAGE" "$RECEPT"
|
2026-08-25 17:18:22 +02:00
|
|
|
|
|
|
|
|
echo
|
2026-08-28 11:12:41 +02:00
|
|
|
echo "Klaar:"
|
2026-08-25 17:18:22 +02:00
|
|
|
docker image inspect --format '{{.RepoTags}} {{.Id}}' "$IMAGE"
|
|
|
|
|
echo
|
2026-08-25 18:31:20 +02:00
|
|
|
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"
|
2026-08-28 11:12:41 +02:00
|
|
|
echo "whatsnext-evolu-relay/docker-compose.yml, en zet \`version\` in het manifest"
|
|
|
|
|
echo "op ${VERSION}. Zonder die verhoging rolt umbrelOS het niet uit."
|
2026-08-25 18:31:20 +02:00
|
|
|
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}"
|