Update README.md

This commit is contained in:
Aram 🍐 2025-08-23 22:21:16 -04:00
parent 3d7bb0db81
commit a13e07a9b9

View file

@ -30,6 +30,7 @@ Create the data directories (`/data`) for persisting Forgejo runner configuratio
```sh
sudo mkdir -p /data/.cache /data/.config
sudo touch /data/.runner
sudo chown -R $UID:$UID /data
sudo chmod -R 700 /data
@ -41,72 +42,40 @@ Clone this repository:
git clone https://git.poire.dev/aramperes/forgejo-runner-podman.git
```
For the first-time set-up, you will need to stop the Forgejo Runner from starting up so you can configure the token with your Forgejo server.
For the first-time set-up, you will need to stop the Forgejo Runner from starting to register with the Forgejo server.
```diff
# vim forgejo-runner-quadlet/quadlets/forgejo-runner.container
# vim docker-compose.yml
- Exec=/bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml"
- # Exec=/bin/sh -c "while : ; do sleep 1 ; done ;"
+ # Exec=/bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml"
+ Exec=/bin/sh -c "while : ; do sleep 1 ; done ;"
- command: /bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml"
- # command: /bin/sh -c "while : ; do sleep 1 ; done ;"
+ # command: /bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml"
+ command: /bin/sh -c "while : ; do sleep 1 ; done ;"
```
Create the directory for the quadlets. SystemD will be looking for the quadlets here, and we can use symbolic links to keep them in sync with this repo.
Start the services:
```sh
mkdir -p $HOME/.config/containers/systemd
for f in forgejo-runner-quadlet/quadlets/*; do ln -s $(realpath $f) $HOME/.config/containers/systemd/$(basename $f); done
```
Confirm:
```sh
ls -l $HOME/.config/containers/systemd/
# forgejo-runner.container -> /home/user/forgejo-runner-quadlet/quadlets/forgejo-runner.container
# podman-runtime.container -> /home/user/forgejo-runner-quadlet/quadlets/podman-runtime.container
# runner.network -> /home/user/forgejo-runner-quadlet/quadlets/runner.network
```
Run SystemD generator dry-run to validate the quadlets:
```sh
/usr/lib/systemd/system-generators/podman-system-generator --user --dryrun && echo 'Validated!'
```
Reload SystemD daemon and start the Runner. This will automatically create the Podman Runtime container and the bridge network.
```sh
systemctl --user daemon-reload
systemctl --user start forgejo-runner.service
podman-compose up -d
```
Confirm the containers are running. This might take a few seconds.
```sh
podman ps
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# b2e57b02edea quay.io/podman/stable:latest podman system ser... 6 minutes ago Up 6 minutes systemd-podman-runtime
# 7521cab26b80 data.forgejo.org/forgejo/runner:9 /bin/sh -c while ... 14 seconds ago Up 15 seconds systemd-forgejo-runner
```
To enable automatic start-up on boot, your user needs to have "lingering" enabled in SystemD:
```sh
sudo loginctl enable-linger $USER
# 71cb0d2af329 quay.io/podman/stable:latest podman system ser... 12 minutes ago Up 12 minutes podman-runtime
# 9b29fcb10113 data.forgejo.org/forgejo/runner:9 /bin/sh -c while ... 12 minutes ago Up 12 minutes forgejo-runner
```
## Register the Runner
On your Forgejo server's `Site administration` page, go to `Action` then `Runners`. Click `Create a new runner` and copy the token.
On your Forgejo server's `Site administration` page, go to `Actions`, `Runners`. Click `Create a new runner` and copy the token.
Back on your Forgejo Runner host, run:
```sh
podman exec -it systemd-forgejo-runner /bin/sh
podman exec -it forgejo-runner /bin/sh
# Run inside the container and follow the instructions:
# (I recommend setting the label 'docker')
@ -133,22 +102,21 @@ container:
+ privileged: true
```
Revert the runner's quadlet to launch the daemon:
Revert the runner's `command` to launch the daemon:
```diff
# vim forgejo-runner-quadlet/quadlets/forgejo-runner.container
# vim docker-compose.yml
- # Exec=/bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml"
- Exec=/bin/sh -c "while : ; do sleep 1 ; done ;"
+ Exec=/bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml"
+ # Exec=/bin/sh -c "while : ; do sleep 1 ; done ;"
- # command: /bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml"
- command: /bin/sh -c "while : ; do sleep 1 ; done ;"
+ command: /bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml"
+ # command: /bin/sh -c "while : ; do sleep 1 ; done ;"
```
Reload the quadlet and restart it:
Update the services:
```sh
systemctl --user daemon-reload
systemctl --user restart forgejo-runner.service
```
podman-compose up -d
```
Now, in the Forgejo server Runners page, you should see your new runner as "Idle".
@ -192,14 +160,3 @@ jobs:
username: ${{ env.FORGEJO_ACTOR }}
password: ${{ secrets.PACKAGE_TOKEN }}
```
## Making Changes
If you would like to modify the quadlet configurations, you will need to run these commands to validate, apply, and restart:
```sh
/usr/lib/systemd/system-generators/podman-system-generator --user --dryrun && echo 'Validated!'
systemctl --user daemon-reload
systemctl --user restart podman-runtime.service
systemctl --user restart forgejo-runner.service
```