From 76487a28c89ec270ab06688f493939742a9aab80 Mon Sep 17 00:00:00 2001 From: ginnoir Date: Thu, 4 Jun 2026 14:15:44 -0500 Subject: [PATCH] feat: move GitHub Actions runner to Docker container - Replace host systemd runner with myoung34/github-runner container in the main compose stack - Mounts docker.sock (GID 1001), /valhalla-lab, and /config/caddy so the workflow can deploy compose and reload Caddy without SSH - Update deploy.yml to write files via mounted paths and use a shared COMPOSE env var for cleaner step commands - Add GITHUB_RUNNER_ACCESS_TOKEN placeholder to .env (fine-grained PAT with Administration:write needed for runner self-registration) --- .env | 3 +++ .github/workflows/deploy.yml | 24 +++++++++++------------- docker-compose.yml | 16 ++++++++++++++++ 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/.env b/.env index dda3a96..e51ab17 100644 --- a/.env +++ b/.env @@ -103,3 +103,6 @@ HOMARR_SECRET_ENCRYPTION_KEY=98989838bf06c9e42d77944ce848963a22ab316b55a09b0d199 # Required permissions: Zone > DNS > Edit (for ginnoir.com zone only) # This is NOT the Zone ID or Account ID — it's the API Token secret value. CF_API_TOKEN=cfut_ijIT9HDjXWKgd0dtnyLqxv8L3deB7hSDivSqquwp905a6c51 + +# GitHub Actions self-hosted runner (fine-grained PAT, Administration:write on homelabstack) +GITHUB_RUNNER_ACCESS_TOKEN= diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b8a7bbf..695ed0b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -6,6 +6,7 @@ on: env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + COMPOSE: docker compose -f /valhalla-lab/docker-compose.yml --env-file /valhalla-lab/.env jobs: deploy: @@ -14,20 +15,17 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Push .env - run: cp .env ~/valhalla-lab/.env - - - name: Push and apply compose + - name: Push .env + compose run: | - cp docker-compose.yml ~/valhalla-lab/docker-compose.yml - docker compose -f ~/valhalla-lab/docker-compose.yml \ - --env-file ~/valhalla-lab/.env pull - docker compose -f ~/valhalla-lab/docker-compose.yml \ - --env-file ~/valhalla-lab/.env up -d + cp .env /valhalla-lab/.env + cp docker-compose.yml /valhalla-lab/docker-compose.yml - - name: Push and reload Caddyfile + - name: Pull and apply compose + run: | + $COMPOSE pull + $COMPOSE up -d + + - name: Reload Caddyfile run: | cp Caddyfile /config/caddy/Caddyfile - docker compose -f ~/valhalla-lab/docker-compose.yml \ - --env-file ~/valhalla-lab/.env exec -T caddy \ - caddy reload --config /etc/caddy/Caddyfile + $COMPOSE exec -T caddy caddy reload --config /etc/caddy/Caddyfile diff --git a/docker-compose.yml b/docker-compose.yml index fae3e08..dac3ddc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -595,6 +595,22 @@ services: - /config/homarr/icons:/app/public/icons - /config/homarr/data:/data + github-runner: + container_name: github_runner + image: myoung34/github-runner:latest + restart: unless-stopped + environment: + - ACCESS_TOKEN=${GITHUB_RUNNER_ACCESS_TOKEN} + - REPO_URL=https://github.com/ginnoir/homelabstack + - RUNNER_NAME=valhalla + - RUNNER_LABELS=self-hosted,Linux,x64 + - RUNNER_SCOPE=repo + - DOCKER_GROUP_GID=1001 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /home/ginnoir/valhalla-lab:/valhalla-lab + - /config/caddy:/config/caddy + # ============================================================ # UTILITIES # ============================================================