Commit Graph
6 Commits
Author SHA1 Message Date
ginnoirandClaude Opus 5.5 3615c9b3d8 feat(devicebackup): build urbackup-server with guestmount for image file restores
Build urbackup-server image / build-and-push (push) Successful in 7m33s
The stock image has no libguestfs, so UrBackup disables image mounting and
single files can't be restored from image backups. Add libguestfs-tools +
kernel/supermin/qemu on top of uroni/urbackup-server:2.5.x, built by Gitea
Actions into registry.ginnoir.com/ginnoir/urbackup-server (Portainer only
pulls). Verified on valhalla: KVM-accelerated appliance, MOUNT TEST OK.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:09:17 -05:00
ginnoirandClaude Opus 5 2bbc693b74 fix(ci): deploy Caddyfile via the runner's own bind, not docker-from-docker
Deploy Caddyfile to valhalla / deploy (push) Successful in 11s
Runs 137-139 all failed at "cp: can't stat '/dest/Caddyfile/Caddyfile'".
The step bound "$PWD/Caddyfile" into an alpine container, but the job
workspace is a Docker volume -- the daemon resolved that source on the
HOST, found nothing, and created an empty directory there instead (it
left a root-owned /workspace/ginnoir/homelabstack/Caddyfile/ on valhalla).
So alpine got a directory as its copy source and cp failed, leaving the
live Caddyfile stale since run 136.

The premise was wrong: act_runner's container.options already binds
/config/caddy and /var/run/docker.sock into every job container. Copy
straight into the bind and reload through the Docker Engine API over the
socket -- which also drops the 40s apt-get install of docker.io.

Uses cp rather than mv/install because /config/caddy/Caddyfile is bound
into the caddy container as a single file, so the bind follows the inode.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 15:12:00 -05:00
ginnoirandClaude Opus 5 60121a5d52 ci(romhacks): build orchestrator image to the self-hosted registry
Build romhacks orchestrator image / build-and-push (push) Successful in 2m1s
Portainer's git auto-update only runs `docker compose pull`, never `build`,
so the orchestrator's `build:` context + local-only
`homelab/romhacks-orchestrator:latest` deadlocked stack 28: every 5-min poll
died on "pull access denied" and the stack sat frozen at 847edff since
2026-06-24 while every other stack moved on.

Build it in CI and push it to registry.ginnoir.com instead, same shape as
famapp's release.yml. Compose switches to the registry image in the next
commit, once the image actually exists.

Push creds come from the committed .env rather than Gitea Actions secrets
(famapp needs those only because its repo doesn't commit .env) — one source
of truth on rotation. Only the two REGISTRY_PUSH_* keys are extracted; the
vault material in that file stays out of the job env.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 15:02:10 -05:00
ginnoir 45ab885834 fix(streaming): bind JF 10.11 metadata path; fix Caddy deploy
Deploy Caddyfile to valhalla / deploy (push) Failing after 44s
Jellyfin 10.11 writes metadata to /config/data/metadata, not
/config/metadata — the old bind left bulk artwork on the root disk.
Moved existing metadata to /storage1 and corrected the compose mount.
Also sets TranscodingTempPath=/transcode.

Caddy deploy: job containers never saw /config/caddy; write via a
host-bind docker run instead. apply-compose.ps1 -Caddy stages through
/tmp + sudo. GITHUB_STACKS_PAT updated to the live Gitea PAT.
2026-08-05 15:50:25 -05:00
ginnoir 67234b3948 fix(caddy-deploy): install docker.io in job container for docker exec
Deploy Caddyfile to valhalla / deploy (push) Successful in 49s
2026-06-14 23:14:34 -05:00
ginnoir 5558c03bac ci: add gitea caddy deploy workflow
Deploy Caddyfile to valhalla / deploy (push) Failing after 27s
2026-06-14 22:59:04 -05:00