能書き
おうちサーバー構築報告:予告からのおうちサーバー構築。以前からForgejo関連作業をしています。
- ProxmoxVE(9.1.5)に仮想マシンを作成、PostgreSQL(18.4)をインストール
- Forgejoをバイナリインストール
- リバースプロクシを設定
- Forgejo Runner をインストールし、Forgejo本体と連携 ←イマココ
- ForgejoでCI/CDを実験
- Mattermost(11.4.2)と連携
前提
- 我が家のサーバーマシンにProxmoxVE(9.1.5)をインストール
- Proxmox VE 上に仮想マシンを作成して、仮想マシンにForgejo(15.0.3)をインストールしている
- Forgejoへのリバースプロクシを設定している
Forgejo Actions に関するセキュリティについては公式でも多くの言及がありますが、今回は私の個人利用に限定して外部アクセスはすべてはじくようにしているので、あまり考えていません。
目標
- Forgejo(15.0.3)と同じ仮想マシンに Forgejo Runner (12.12.0) をバイナリインストール
- Dockerもインストール
- Forgejo(15.0.3)本体と連携
参考文献
下記が公式ページです。今回も公式ページ(の自動翻訳)を頼りに作業します。
しかし公式ページは記述が若干足りないようです。そういう部分は下記を参考にさせていただきました。
セキュリティに関する公式ページは下記になります。本番設定する場合には読み込んでおく必要があるでしょう。今回はゴニョゴニョ……
- Securing Forgejo Actions Deployments - Forgejo Actions administrator guide - Forgejo Administrator Guide
- Utilizing Docker within Actions - Forgejo Actions administrator guide - Forgejo Administrator Guide
それからDockerもインストールします。Ubuntuへのインストールは下記が公式ページです。
Dockerコンテナとイメージの削除に関しては下記ページの御世話になりました。
なお Forgejo Runner の動作確認も公式ページ(の自動翻訳)を頼りにしました。
事前準備
Forgejo本体をインストールした仮想マシンに Forgejo Runner 及びDockerをインストールする事にします。
まずは念の為に、仮想マシンのスナップショットを撮っておきます。
- 該当仮想マシン(IPアドレス
172.16.1.104)を停止 - スナップショットを作成
- 仮想マシンを起動
Dockerをインストール
最初にDockerをインストールします。aptリポジトリを使用します。
まずはGPGキー。
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リポジトリを設定。
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
sudo apt update
そうしたらDockerパッケージをインストールします。
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Dockerが実行されていることを確認します。
systemctl status docker
hello-worldを実行してインストールが成功した事を確認します。
sudo docker run hello-world
成功したら削除しましょう。
docker container prune
docker image prune
うまく行ったら、私の流儀で、/etcをSubversion登録します。
cd /etc
sudo svn st | grep "^?" | cut -b9- | sudo xargs -rt svn add
sudo svn ci -m"installed docker"
sudo svn up
Forgejo Runner をインストール
バイナリのダウンロードとインストール
公式のインストール手順の通りです。
まずは最新のバイナリリリースをダウンロードします。
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}
ダウンロードしたバイナリに実行権限を付けます。
chmod +x forgejo-runner
そして一応署名を確認します。
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に移動します。
sudo mv forgejo-runner /usr/local/bin/
これで Forgejo Runner を実行できる筈です。
forgejo-runner -v
実行するユーザーの設定
デーモンを実行するユーザーrunnerを作成します。
sudo useradd --create-home runner
runnerにDockerソケットのアクセス権限を付けます。
sudo usermod -aG docker runner
構成
runnerユーザーとして、 Forgejo Runner のデフォルト設定ファイルを生成し、ユーザーがアクセスできるファイルに保存します。
forgejo-runner generate-config | sudo -u runner tee /home/runner/runner-config.yml >/dev/null
/etc管理
一通り Forgejo Runner の設定が出来たら、ここでも/etcをSubversion登録しましょう。
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を設定します。
まずは管理者でサインインします。
ユーザーメニュー>サイト管理。
画面左メニュー>Actions>ランナー。
「ランナーの管理」画面で「新しいランナーを作成」ボタンをクリック。
すると「Create new runner」画面が表示されるので、Nameと、必要に応じてDescriptionを入力します。
そして「Create」ボタンをクリック。
そうすると新しいランナー向けに固有識別子(UUID)と機密情報(トークン)が表示されます。
表示された設定を Forgejo Runner の設定ファイルのserverセクションにコピーします。
sudo su - runner
cp -p runner-config.yml runner-config.yml.$(date +%Y%m%d_%H%M%S)
vi runner-config.yml
修正内容は下記の通りです。
$ 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をデーモンとして起動。
/usr/local/bin/forgejo-runner daemon -c /home/runner/runner-config.yml
成功したらこんな感じに出力されます。
$ /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」ボタンをクリックすると、うまく行っていれば、下記のように表示されます。
確認できたらrunnerの方はCtrl+Cで一旦止めましょう。そしてrunnerユーザーから抜けます。
exit
Forgejo Runner デーモンをsystemdサービスとして登録します。
sudo EDITOR=vi systemctl edit --force --full forgejo-runner
その内容は下記。
$ 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を起動させます。
sudo systemctl daemon-reload
sudo systemctl enable forgejo-runner
sudo systemctl start forgejo-runner
systemctl status forgejo-runner
forgejo-runnerのログは標準出力に出力されるとの事なので、ログを見たくなったらjournalctlを実行します。
journalctl -u forgejo-runner -f
うまく行ったら/etcをSubversion登録するのが私の流儀です。
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」という名前のリポジトリを作成してみます。リポジトリ作成の具体的な手順は前回参照。
リポジトリに対してアクションが有効である事を確認します。リポジトリの画面右上の「設定」タブをクリック、左メニュー>Actions>ランナー。
普段使いのWindowsマシンで、リポジトリExampleProject2をgit cloneします。
cd
cd prj
git clone ssh://git@forgejo.example.com:20022/taro/ExampleProject2.git
デモ用のワークフローを作成してpushします。
cd ExampleProject2
mkdir -p .forgejo/workflows
cat <<___ >.forgejo/workflows/demo.yaml
on: [push]
jobs:
test:
runs-on: ubuntu2404
steps:
- run: echo All good!
___
git add .forgejo/workflows/demo.yaml
git commit -m"add a demo-workflow"
git push
画面で確認します。
仕舞い
動作確認が出来たら、事前準備として撮っておいたスナップショットは削除しても大丈夫ですね。
以上で Forgejo Runner をバイナリインストールして本体と連携できました。







