1.7 KiB
1.7 KiB
Reproducible Forgejo + CI runner setup
This repository contains the declarative configuration for the Forgejo instance
and its self-hosted CI runner at git.slaid098.dev.
What's here
compose/docker-compose.yml— Forgejo + act_runner stack (env-var references; real secrets live in the deployment's.env).compose/runner-config.yaml— act_runner config (capacity: 4, cache enabled).runner-image/Dockerfile— custom job image bundling Python 3.13, uv, Node 22, ripgrep, git, docker CLI. Replaces the flakydata.forgejo.orgaction downloads (setup-uv,setup-python,setup-node)..env.example— placeholder env vars; copy to.envand fill in on the target host.setup.sh— one-command reproducible deploy on a fresh Ubuntu server.
Why a custom runner image
data.forgejo.org (the action mirror act_runner uses) intermittently returns 404
for astral-sh/setup-uv@v3 and similar actions, which surfaces as
Error: Cannot find module '.../dist/setup/index.js'. Bundling the tools in the
image and dropping those uses: steps from CI workflows eliminates the flakiness.
Quick start
# On a fresh Ubuntu 22.04/24.04 server with docker + docker compose + git:
git clone https://git.slaid098.dev/slaid098/forgejo-infra.git
cd forgejo-infra
cp .env.example .env # then edit .env with real tokens
./setup.sh
After Forgejo is up, register the runner (token from
docker exec forgejo forgejo actions generate-runner-token):
cd /root/dockers/forgejo
docker compose run --rm runner act_runner register \
--instance http://forgejo:3000 --token <TOKEN> --name linux-2 \
--labels ubuntu-latest:docker://git.slaid098.dev/slaid098/runner:latest \
--no-interactive