はじめに
過去に書いた記事の方法でこのブログのデプロイをForgejo Runnerを用いて自動化していたのですが、記事が増えた結果処理に必要なメモリ量が増えてしまいました。
素直にcodeberg-mediumラベルのRunnerを使う形に変えて運用していたのですが、急がないとは言え待ち時間30分超えなどなかなか厳しい感じに…
良い機会なので自宅のサーバーでホストして自由に使えるようにすることにしました。
ステップ1. DockerとDocker Composeをインストールする
ステップ2. Forgejo Runnerをインストールする
任意のインストール先のディレクトリにまずRunnerの作業用の非rootからアクセス可能なディレクトリを作成します。
以下のスクリプトをbash setup.shで実行してください。
この例ではUID/GIDとして1001:1001を使用しています
#!/usr/bin/env bash
set -e
mkdir -p data/.cache
chown -R 1001:1001 data
chmod 775 data/.cache
chmod g+s data/.cache
次にdocker-compose.ymlを作成します。
公式ドキュメントで指定されているversionはCompose V2から廃止されているので必要ありません。
services:
docker-in-docker:
image: docker:dind
container_name: 'docker_dind'
privileged: 'true'
command: ['dockerd', '-H', 'tcp://0.0.0.0:2375', '--tls=false']
restart: 'unless-stopped'
runner:
image: 'data.forgejo.org/forgejo/runner:12'
links:
- docker-in-docker
depends_on:
docker-in-docker:
condition: service_started
container_name: 'runner'
environment:
DOCKER_HOST: tcp://docker-in-docker:2375
# User without root privileges, but with access to `./data`.
user: 1001:1001
volumes:
- ./data:/data
restart: 'unless-stopped'
command: 'forgejo-runner daemon --config runner-config.yml'
ステップ3. Runnerを登録する
configを生成する
Runnerを登録するにあたって、まず下記のコマンドでデフォルトのconfigを先程作成したdataディレクトリに生成します。
docker run --rm data.forgejo.org/forgejo/runner:12 \
forgejo-runner generate-config > data/runner-config.yml
Codeberg側でRunnerを追加する
Codebergのサイト上で右上の自分のアイコンから設定→Actions→ランナーと飛んで、新しいランナーを作成をクリックします。
名前を求められますが、自分が識別可能なものであればなんでも大丈夫です。

追加できるとこんな感じの画面が表示されます。

Using the runner configuration fileの下にあるコードブロックの内容をコピーして、先ほど生成したconfigの一番下にあるserver:を置き換えてください。
ラベルを追加する
これだけだと呼び出せないので、実行環境を指定するラベルを追加します。
ラベルは以下のような構文で記述します。
<label-name>:<label-type>://<default-image>
例えばCodeberg標準のRunnerで使用されているghcr.io/catthehacker/ubuntu:act-latestで実行したい場合、以下のような感じになります。
server:
connections:
codeberg:
url: https://codeberg.org/
uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
labels:
- ubuntu-latest:docker://ghcr.io/catthehacker/ubuntu:act-latest
ステップ4. Runnerを起動する
以下のコマンドで起動します。
docker compose up -d
サイト側からも起動している事が確認できます。

