Docker Build
docker-build (VMID 112, 10.0.0.12) is the fleet's CI build server: it builds application Docker images and pushes them to the internal registry (currently hosted on the legacy services VM, 10.0.0.2:5000).
Configured by ansible/hetzner-main/setup-docker-build.yml.
What's running
Two independent, self-hosted CI runners on the same box:
- GitHub Actions runner — a standard self-hosted runner registered against the GitHub org, running as a systemd service. Used by repos still on GitHub-hosted CI/CD.
- Gitea Actions runner (
act_runner) — a second runner (taggitea-runner), registered against Gitea's internal URL (http://10.0.0.19:3000, the services-staff VM) rather than the publicgitea.abair.ie, because Cloudflare terminatesact_runner's long-poll connections. Node.js 20.x is installed alongside it for JS-based host actions likeactions/checkout@v4.
Both runners authenticate to the internal Docker registry as their own dedicated users (github-runner, gitea-runner), each with their own SSH keypair. A daily cron job (docker system prune -af --filter until=24h) keeps disk usage down.
Adding the Gitea runner to an existing box
The gitea-runner playbook tag is separate from the base setup/update tags — run it with make setup-gitea-runner once you have a Gitea Actions registration token.