0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

おうちサーバー構築報告:Forgejo Runner (12.12.0) をバイナリインストール

0
Last updated at Posted at 2026-07-04

能書き

おうちサーバー構築報告:予告からのおうちサーバー構築。以前からForgejo関連作業をしています。

  1. ProxmoxVE(9.1.5)に仮想マシンを作成、PostgreSQL(18.4)をインストール
  2. Forgejoをバイナリインストール
  3. リバースプロクシを設定
  4. Forgejo Runner をインストールし、Forgejo本体と連携 ←イマココ
  5. ForgejoでCI/CDを実験
  6. Mattermost(11.4.2)と連携

前提

Forgejo Actions に関するセキュリティについては公式でも多くの言及がありますが、今回は私の個人利用に限定して外部アクセスはすべてはじくようにしているので、あまり考えていません。

目標

  • Forgejo(15.0.3)と同じ仮想マシンに Forgejo Runner (12.12.0) をバイナリインストール
  • Dockerもインストール
  • Forgejo(15.0.3)本体と連携

参考文献

下記が公式ページです。今回も公式ページ(の自動翻訳)を頼りに作業します。

しかし公式ページは記述が若干足りないようです。そういう部分は下記を参考にさせていただきました。

セキュリティに関する公式ページは下記になります。本番設定する場合には読み込んでおく必要があるでしょう。今回はゴニョゴニョ……

それからDockerもインストールします。Ubuntuへのインストールは下記が公式ページです。

Dockerコンテナとイメージの削除に関しては下記ページの御世話になりました。

なお Forgejo Runner の動作確認も公式ページ(の自動翻訳)を頼りにしました。

事前準備

Forgejo本体をインストールした仮想マシンに Forgejo Runner 及びDockerをインストールする事にします。

まずは念の為に、仮想マシンのスナップショットを撮っておきます。

  1. 該当仮想マシン(IPアドレス172.16.1.104)を停止
  2. スナップショットを作成
  3. 仮想マシンを起動

Dockerをインストール

最初にDockerをインストールします。aptリポジトリを使用します

まずはGPGキー。

Forgejo本体をインストールした仮想マシン
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

それからaptリポジトリを設定。

Forgejo本体をインストールした仮想マシン
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Forgejo本体をインストールした仮想マシン
sudo apt update

そうしたらDockerパッケージをインストールします。

Forgejo本体をインストールした仮想マシン
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Dockerが実行されていることを確認します。

Forgejo本体をインストールした仮想マシン
systemctl status docker

hello-worldを実行してインストールが成功した事を確認します。

Forgejo本体をインストールした仮想マシン
sudo docker run hello-world

成功したら削除しましょう。

Forgejo本体をインストールした仮想マシン
docker container prune
docker image prune

うまく行ったら、私の流儀で、/etcをSubversion登録します。

Forgejo本体をインストールした仮想マシン
cd /etc
sudo svn st | grep "^?" | cut -b9- | sudo xargs -rt svn add
sudo svn ci -m"installed docker"
sudo svn up

Forgejo Runner をインストール

バイナリのダウンロードとインストール

公式のインストール手順の通りです。

まずは最新のバイナリリリースをダウンロードします。

Forgejo本体をインストールした仮想マシン
cd
export ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
export RUNNER_VERSION=$(curl -X 'GET' https://data.forgejo.org/api/v1/repos/forgejo/runner/releases/latest | jq .name -r | cut -c 2-)
export FORGEJO_URL="https://code.forgejo.org/forgejo/runner/releases/download/v${RUNNER_VERSION}/forgejo-runner-${RUNNER_VERSION}-linux-${ARCH}"
wget -O forgejo-runner ${FORGEJO_URL} || curl -o forgejo-runner ${FORGEJO_URL}

ダウンロードしたバイナリに実行権限を付けます。

Forgejo本体をインストールした仮想マシン
chmod +x forgejo-runner

そして一応署名を確認します。

Forgejo本体をインストールした仮想マシン
wget -O forgejo-runner.asc ${FORGEJO_URL}.asc || curl -o forgejo-runner.asc ${FORGEJO_URL}.asc
gpg --keyserver hkps://keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710
gpg --verify forgejo-runner.asc forgejo-runner && echo "✓ Verified" || echo "✗ Failed"

バイナリを/usr/local/binに移動します。

Forgejo本体をインストールした仮想マシン
sudo mv forgejo-runner /usr/local/bin/

これで Forgejo Runner を実行できる筈です。

Forgejo本体をインストールした仮想マシン
forgejo-runner -v

実行するユーザーの設定

デーモンを実行するユーザーrunnerを作成します。

Forgejo本体をインストールした仮想マシン
sudo useradd --create-home runner

runnerにDockerソケットのアクセス権限を付けます。

Forgejo本体をインストールした仮想マシン
sudo usermod -aG docker runner

構成

runnerユーザーとして、 Forgejo Runner のデフォルト設定ファイルを生成し、ユーザーがアクセスできるファイルに保存します。

Forgejo本体をインストールした仮想マシン
forgejo-runner generate-config | sudo -u runner tee /home/runner/runner-config.yml >/dev/null

/etc管理

一通り Forgejo Runner の設定が出来たら、ここでも/etcをSubversion登録しましょう。

Forgejo本体をインストールした仮想マシン
cd /etc
sudo svn st | grep "^?" | cut -b9- | sudo xargs -rt svn add
sudo svn ci -m"installed forgejo-runner"
sudo svn up

Forgejo本体へ登録

今回は、推奨とされているインタラクティブ登録を試してみます。

リポジトリ毎に設定するのも面倒なので、今回は「システム管理者」としてForgejoインスタンス上のすべてのリポジトリから実行するRunnerを設定します。

まずは管理者でサインインします。
ユーザーメニュー>サイト管理。

image.png

画面左メニュー>Actions>ランナー。

image.png

「ランナーの管理」画面で「新しいランナーを作成」ボタンをクリック。
すると「Create new runner」画面が表示されるので、Nameと、必要に応じてDescriptionを入力します。

image.png

そして「Create」ボタンをクリック。
そうすると新しいランナー向けに固有識別子(UUID)と機密情報(トークン)が表示されます。

image.png

表示された設定を Forgejo Runner の設定ファイルのserverセクションにコピーします。

Forgejo本体をインストールした仮想マシン:ユーザーadministrator
sudo su - runner
Forgejo本体をインストールした仮想マシン:ユーザーrunner
cp -p runner-config.yml runner-config.yml.$(date +%Y%m%d_%H%M%S)
vi runner-config.yml

修正内容は下記の通りです。

Forgejo本体をインストールした仮想マシン:ユーザーrunner
$ diff -U0 runner-config.yml.20260704_131644 runner-config.yml
--- runner-config.yml.20260704_131644   2026-07-04 12:27:32.361621986 +0900
+++ runner-config.yml   2026-07-04 17:04:31.968885145 +0900
@@ -77 +77 @@
-  labels: []
+  labels: ["ubuntu2404:docker://ubuntu:24.04"]
@@ -270,0 +271,4 @@
+    forgejo:
+      url: http://127.0.0.1:3000/
+      uuid: 3096c44e-5460-4185-987e-11eb49c025dc
+      token: 6a993b2227f8d8c092e16881de32d8f5b19d56f5

runnerをデーモンとして起動。

Forgejo本体をインストールした仮想マシン:ユーザーrunner
/usr/local/bin/forgejo-runner daemon -c /home/runner/runner-config.yml

成功したらこんな感じに出力されます。

Forgejo本体をインストールした仮想マシン:ユーザーrunner
$ /usr/local/bin/forgejo-runner daemon -c /home/runner/runner-config.yml
WARN[0000] Missing env file ".env" is ignored
INFO[2026-07-04T17:09:55+09:00] Starting runner daemon
INFO[2026-07-04T17:09:55+09:00] runner: システムRunner, with version: v12.12.0, with labels: [ubuntu2404], ephemeral: false, declared successfully
INFO[2026-07-04T17:09:55+09:00] [poller] launched

そして画面右上の「List of runners」ボタンをクリックすると、うまく行っていれば、下記のように表示されます。

image.png

確認できたらrunnerの方はCtrl+Cで一旦止めましょう。そしてrunnerユーザーから抜けます。

Forgejo本体をインストールした仮想マシン:ユーザーrunner
exit

Forgejo Runner デーモンをsystemdサービスとして登録します。

Forgejo本体をインストールした仮想マシン:ユーザーadministrator
sudo EDITOR=vi systemctl edit --force --full forgejo-runner

その内容は下記。

Forgejo本体をインストールした仮想マシン:ユーザーadministrator
$ systemctl cat forgejo-runner
# /etc/systemd/system/forgejo-runner.service
[Unit]
Description=Forgejo Runner
Documentation=https://forgejo.org/docs/latest/admin/actions/
After=docker.service

[Service]
ExecStart=/usr/local/bin/forgejo-runner daemon -c /home/runner/runner-config.yml
ExecReload=/bin/kill -s HUP $MAINPID

User=runner
WorkingDirectory=/home/runner
Restart=on-failure
TimeoutStopSec=infinity
RestartSec=10

[Install]
WantedBy=multi-user.target

これでrunnerを起動させます。

Forgejo本体をインストールした仮想マシン:ユーザーadministrator
sudo systemctl daemon-reload
sudo systemctl enable forgejo-runner
sudo systemctl start forgejo-runner
systemctl status forgejo-runner

forgejo-runnerのログは標準出力に出力されるとの事なので、ログを見たくなったらjournalctlを実行します。

Forgejo本体をインストールした仮想マシン:ユーザーadministrator
journalctl -u forgejo-runner -f

うまく行ったら/etcをSubversion登録するのが私の流儀です。

Forgejo本体をインストールした仮想マシン:ユーザーadministrator
cd /etc
sudo svn st | grep "^?" | cut -b9- | sudo xargs -rt svn add
sudo svn ci -m"installed Forgejo-Runner"
sudo svn up

動作確認

まずは適当なリポジトリを作成します。今回はtaroユーザーで「ExampleProject2」という名前のリポジトリを作成してみます。リポジトリ作成の具体的な手順は前回参照

image.png

リポジトリに対してアクションが有効である事を確認します。リポジトリの画面右上の「設定」タブをクリック、左メニュー>Actions>ランナー。

image.png

普段使いのWindowsマシンで、リポジトリExampleProject2をgit cloneします。

普段使いのWindowsマシン:WSL2:Ubuntu
cd
cd prj
git clone ssh://git@forgejo.example.com:20022/taro/ExampleProject2.git

デモ用のワークフローを作成してpushします。

普段使いのWindowsマシン:WSL2:Ubuntu
cd ExampleProject2
mkdir -p .forgejo/workflows
cat <<___ >.forgejo/workflows/demo.yaml
on: [push]
jobs:
  test:
    runs-on: ubuntu2404
    steps:
      - run: echo All good!
___
普段使いのWindowsマシン:WSL2:Ubuntu
git add .forgejo/workflows/demo.yaml
git commit -m"add a demo-workflow"
git push

画面で確認します。

image.png

仕舞い

動作確認が出来たら、事前準備として撮っておいたスナップショットは削除しても大丈夫ですね。

以上で Forgejo Runner をバイナリインストールして本体と連携できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?