heyer.systems Open Source

Forgejo Runner

Runner for Forgejo Actions that runs the jobs of a Forgejo instance in Docker containers.

Install

On the Proxmox node as root:

bash -c "$(curl -fsSL https://iac.heyer.systems/forgejo-runner/ct.sh)"

Container from the Debian 13 template · default: 2 CPU, 2048 MiB RAM, 20 GiB disk

Customise the commandYour own values for CPU, RAM, network and modules – no dialog

Then: No web UI – the runner appears in Forgejo under Settings → Actions → Runners. Not registered yet? Set forgejo_runner_url, forgejo_runner_uuid and forgejo_runner_token in /etc/iac/settings.env, then run update.

Settings per instance

SettingMeaning
forgejo_runner_urlForgejo URL – Address of the Forgejo instance, e.g. https://git.example.org/. Empty = the runner stays stopped until all three values are in /etc/iac/settings.env and update ran.
forgejo_runner_uuidRunner UUID – UUID of the runner created in Forgejo (Settings → Actions → Runners → Create new runner).
forgejo_runner_token secretRunner token – Token of that runner.
forgejo_runner_labelsLabels – Comma separated runner labels. Empty = docker:docker://node:22-trixie.
forgejo_runner_capacityParallel jobs – How many jobs run at the same time. Empty = one per CPU of the guest.

When creating a container, as var_<setting>:

var_forgejo_runner_url="<value>" bash -c "$(curl -fsSL https://iac.heyer.systems/forgejo-runner/ct.sh)"

Set or change later, in the guest (for VMs the only way so far): a line forgejo_runner_url=<value> in /etc/iac/settings.env – no quotes, the last line of a setting wins – then:

update

Missing or empty = the app's default. Do not edit the configuration files iac writes – update overwrites them; their first lines name the file for local changes.

Update

In the guest:

update

Debian packages, Forgejo Runner, modules and the iac configuration. Major versions never change automatically.

Add modules – any time, in containers and VMs alike:

update --list-modules
update --add-modules node-exporter

All modules · More about update

Adopt an existing installation in the guest as root

bash -c "$(curl -fsSL https://iac.heyer.systems/forgejo-runner/adopt.sh)"

Checks first and stops before any change if an automatic adoption is not possible – then follow the migration guide.