---
tags:
  - git
  - forgejo
  - servers
---

https://forgejo.systemsobscure.net/admin/actions/runners/

# Configuring Forgejo runners

When you create a Forgejo Action, this alone is not sufficient for the Action to
run. You also have to configure a runner for an installation or a specific repo.
The is a Docker container which does the actual computation.

## Installing `forgejo-runner`

Before you can set up a specific runner for a repo, you need to install the
`forgejo-runner` software initially.

```sh
wget -O forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v9.0.3/forgejo-runner-9.0.3-linux-amd64
chmod +x forgejo-runner
```

You then need to create a user for the runner that will use Docker.

```sh
 useradd --create-home runner
 usermod -aG docker runner
```

Start the service or create a `systemd` service so it always starts on reboot.

> My `systemd` service file is saved at
> /etc/systemd/system/forgejo-runner.service

```sh
forgejo runner-daemon
```

## Creating a runner for your repos

There is a CLI tool to assist:

```sh
forgejo-runner register
```

Example inputs:

```
INFO Registering runner, arch=amd64, os=linux, version=v9.0.3.
WARN Runner in user-mode.
INFO Enter the Forgejo instance URL (for example, https://next.forgejo.org/):
https://forgejo.systemsobscure.net
INFO Enter the runner token:
redacted
INFO Enter the runner name (if set empty, use hostname: self-host-server):
self-host-server
INFO Enter the runner labels, leave blank to use the default labels (comma-separated, for example, ubuntu-20.04:docker://node:20-bookworm,ubuntu-18.04:docker://node:20-bookworm):
 ubuntu-latest
INFO Registering runner, name=sysobs-forgejo-runner, instance=https://forgejo.systemsobscure.net, labels=[ubuntu-20.04:docker://node:20-bookworm].
DEBU Successfully pinged the Forgejo instance server
INFO Runner registered successfully.
```

Get the runner token from "Site Settings" > "Actions" > "Runners".

The OS image (`ubuntu-latest`) should be sufficient for most of my operations. I
can then add specific software as containers within the individual action files,
e.g.:

```yml
name: Deploy Blog
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    container: node:18
    steps: ...
```
