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
On the Proxmox node as root:
bash -c "$(curl -fsSL https://iac.heyer.systems/forgejo-runner/vm.sh)"Tested image 13.2.0-20261022.1433 (boot test Oct 22, 2026) · default: 2 CPU, 2048 MiB RAM, 32 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.
Generator pick your settings, copy the command
Please check the highlighted fields.
Settings per instance
| Setting | Meaning |
|---|---|
forgejo_runner_url | Forgejo 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_uuid | Runner UUID – UUID of the runner created in Forgejo (Settings → Actions → Runners → Create new runner). |
forgejo_runner_token secret | Runner token – Token of that runner. |
forgejo_runner_labels | Labels – Comma separated runner labels. Empty = docker:docker://node:22-trixie. |
forgejo_runner_capacity | Parallel 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:
updateMissing 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:
updateDebian 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-exporterAdopt 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.