2.1 KiB
Build and Set Up a Github-compatible Forgejo Runner on Proxmox
In order for Forgejo workflows to be usable out-of-the-box with as many
actions as possible, it is useful to habe a runner that supports the same
tools as the standard Github runner ubuntu-latest
. Github does publish the
code they use to build their runner images at
https://github.com/actions/runner-images, but that repo cannot be used
directly to build KVM images for use with Proxmox.
The fork https://github.com/fffonion/runner-images-kvm has the necessary changes to enable building such images.
Building the KVM runner image
The script build-github-runner-kvm-ubuntu-latest-qcow.sh
installs the
necessary package dependencies to build a KVM image, Hashicorp Packer (in
the latest version still licensend under the MPL), and builds the Ubuntu
image (24.04 at the moment). The resulting image
github-runner-image-ubuntu-24.04.qcow2
can then be used in Proxmox, or any
other KVM based virtualization solution.
Creating a Proxmox template VM
The script build-forgejorunner-template.sh
runs on a Proxmox cluster host.
It runs the build script via SSH on a builder VM (that has nested virtualization
enabled), in case of CCCHH a Debian 12 install. It then copies the resulting VM to the
Proxmox host.
It creates a template VM from the image, installing https://code.forgejo.org/forgejo/runner and some helper scripts.
Cloning the Template VM
You can clone the template VM from the GUI, or through qm clone
. Make the
necessary changes and boot the VM.
You can clone and register the runner using the script
clone-and-register.sh
.
Registering the Runner
You can run the registration by logging in to the VM either on the console
or through SSH, by running forgejo-runner register
as the forgejo-runner
user, or by invoking /usr/local/bin/register-forgejo-runner
, supplying the
registration token as the first argument.
You can run the registration from the Proxmox cluster host:
qm guest exec 150 -- sudo -iu forgejo-runner register-forgejo-runner iwKWPwI3H6h93kRuhXqMPcmCR2OGpgZlDT3mufGb
qm guest exec 150 -- systemctl restart forgejo-runner