From 08847532ee7a5318952f986f4e166813174ee702 Mon Sep 17 00:00:00 2001 From: Audiobuzz Date: Sun, 5 Jul 2026 01:28:06 +0000 Subject: [PATCH] fleet-manager: pull non-CI images through the Harbor mirror Route the ad-hoc images I introduced through harbor.bitasylum.org (the standing rule): backup.sh uses harbor.bitasylum.org/dockerhub/library/alpine:3.20 (via an overridable ALPINE_IMAGE); the DEPLOY.md volume-chown fix + the goacme/lego prose use the Harbor paths too. Compose (influxdb/traefik) + Dockerfile bases are already harbor-mirrored; git.bitasylum.org/audiobuzz/* stays (CI-built). --- serving/fleet-manager/DEPLOY.md | 5 +++-- serving/fleet-manager/acme/renew-loop.sh | 3 ++- serving/fleet-manager/backup.sh | 7 +++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/serving/fleet-manager/DEPLOY.md b/serving/fleet-manager/DEPLOY.md index 2ae465f..f606336 100644 --- a/serving/fleet-manager/DEPLOY.md +++ b/serving/fleet-manager/DEPLOY.md @@ -151,7 +151,8 @@ also keeps the WebAuthn secure-context clean. > **Self-TLS alternative (no Traefik):** set `FLEET_MGR_ADMIN_BEHIND_PROXY=false` > and give the manager a cert at `/pki/admin/{fullchain,privkey}.pem` (e.g. via the -> `acme/renew-loop.sh` helper under a `goacme/lego` container). The manager then +> `acme/renew-loop.sh` helper under a `harbor.bitasylum.org/dockerhub/goacme/lego` +> container). The manager then > terminates TLS itself and the origin includes the port it listens on. @@ -251,7 +252,7 @@ If you run compose under a non-default project name, pass once: ```bash docker volume ls | grep fleet # find the name, e.g. fleet-manager_fleet-data - docker run --rm -v :/data alpine chown -R 65532:65532 /data + docker run --rm -v :/data harbor.bitasylum.org/dockerhub/library/alpine:3.20 chown -R 65532:65532 /data ``` - **`authorise plane not configured (no enrol-broker wired)` in the SPA** — the manager has the pillar disabled (`s.broker == nil`). Check diff --git a/serving/fleet-manager/acme/renew-loop.sh b/serving/fleet-manager/acme/renew-loop.sh index b74843e..453685e 100755 --- a/serving/fleet-manager/acme/renew-loop.sh +++ b/serving/fleet-manager/acme/renew-loop.sh @@ -4,7 +4,8 @@ # NOTE: the default deployment fronts the admin UI with Traefik (docker-compose.yml), # which owns ACME itself — this script is NOT used then. It remains as the cert # helper for the SELF-TLS admin mode (FLEET_MGR_ADMIN_BEHIND_PROXY=false, no -# Traefik): run it under a `goacme/lego` container to write ./pki/admin/. +# Traefik): run it under a harbor.bitasylum.org/dockerhub/goacme/lego container to +# write ./pki/admin/. # # Runs inside the goacme/lego image (alpine-based). Obtains the fleet-manager # admin-UI cert from Let's Encrypt via DNS-01 over AWS Route 53, and writes it diff --git a/serving/fleet-manager/backup.sh b/serving/fleet-manager/backup.sh index f992082..a78363f 100755 --- a/serving/fleet-manager/backup.sh +++ b/serving/fleet-manager/backup.sh @@ -14,7 +14,8 @@ # COMPOSE_PROJECT_NAME=foo ./backup.sh # if you run compose under another project # # Restore (manager stopped): -# docker run --rm -v _fleet-data:/dest -v "$PWD/backups":/src alpine \ +# docker run --rm -v _fleet-data:/dest -v "$PWD/backups":/src \ +# harbor.bitasylum.org/dockerhub/library/alpine:3.20 \ # sh -c 'rm -rf /dest/* && tar xzf /src/fleet-data-YYYYmmdd-HHMMSS.tar.gz -C /dest' set -euo pipefail @@ -22,6 +23,8 @@ DEST=${1:-./backups} PROJECT=${COMPOSE_PROJECT_NAME:-fleet-manager} # compose derives volume names as _ STAMP=$(date -u +%Y%m%d-%H%M%S) VOLUMES=${BACKUP_VOLUMES:-"fleet-data influx-data"} +# Non-CI images pull through the Harbor mirror; overridable for other registries. +ALPINE_IMAGE=${ALPINE_IMAGE:-harbor.bitasylum.org/dockerhub/library/alpine:3.20} mkdir -p "$DEST" DEST_ABS=$(cd "$DEST" && pwd) @@ -37,7 +40,7 @@ for key in $VOLUMES; do docker run --rm \ -v "${vol}:/src:ro" \ -v "${DEST_ABS}:/backup" \ - alpine tar czf "/backup/${out}" -C /src . + "$ALPINE_IMAGE" tar czf "/backup/${out}" -C /src . done # Retention: keep the newest $KEEP of each volume's tarballs (0 = keep all).