Docker image for Forgejo Actions runners, based on debian:bookworm with tools pre-installed to avoid repeated apt-get install in every job.
| Category | Packages |
|---|---|
| Runtime | Node.js 24 (via NodeSource) |
| VCS | git, git-lfs, openssh-client |
| Build tools | build-essential, pkg-config, libssl-dev, libudev-dev |
| Container builds | buildah (pre-configured with vfs storage driver), fuse-overlayfs |
| Utilities | curl, wget, jq, tar, gzip, xz-utils, unzip, zip, sudo, ca-certificates |
Pull the image from GitHub Container Registry:
ghcr.io/systemscape/custom-forgejo-runner:latest
Or build locally:
just buildIn your Forgejo runner config, set labels to map workflow runs-on values to this image:
labels:
- "docker:docker://ghcr.io/systemscape/custom-forgejo-runner:latest"
- "debian-latest:docker://ghcr.io/systemscape/custom-forgejo-runner:latest"
- "ubuntu-latest:docker://ghcr.io/systemscape/custom-forgejo-runner:latest"If you build locally instead, replace the image reference with docker://localhost/forgejo-runner.
Each label follows the format <name>:docker://<image>. When a workflow specifies runs-on: ubuntu-latest, the runner picks the matching label and starts a container from the configured image.
Add packages to the Dockerfile and rebuild. For tools that are only needed by a single workflow, consider installing them in the workflow step instead to keep the base image lean.
Rust is not pre-installed since dtolnay/rust-toolchain handles version pinning per-repo. The build toolchain (build-essential, libssl-dev, etc.) is included so Rust compilation works out of the box once the toolchain is installed.
Buildah is pre-installed and configured with the vfs storage driver (overlay-on-overlay is not supported inside containers). Workflows no longer need the apt-get install buildah + storage config boilerplate.