GiteaのAct RunnerをUbuntu上にインストールとサービス化するメモ

GiteaAct RunnerをUbuntuにインストールするメモ。

Dockerはインストール済みであることを前提とする。

まずはAct Runnerのバイナリをダウンロードして配置する。

wget https://gitea.com/gitea/act_runner/releases/download/v0.2.13/act_runner-0.2.13-linux-amd64
sudo mv act_runner-0.2.13-linux-amd64 /usr/local/bin/act_runner
sudo chmod +x /usr/local/bin/act_runner 

ARM上のサーバーでインストールする場合は末尾のamd64arm64に変更。

バイナリが正しくインストールされたことを確認する。

$ act_runner --version
act_runner version v0.2.13

Act Runner用の専用ユーザーを作成し、Dockerグループに追加する。これによりRunnerがDockerコンテナを操作できるようになる。

sudo useradd -r -m -d /var/lib/act_runner -s /bin/bash act_runner
sudo usermod -aG docker act_runner

Act Runnerの設定ファイルを配置するディレクトリを作成する。

sudo mkdir -p /etc/act_runner
sudo chown -R act_runner:act_runner /etc/act_runner

設定ファイルを自動生成する。このコマンドによりデフォルトの設定内容が作成される。

act_runner generate-config | sudo -u act_runner tee /etc/act_runner/config.yaml

Tip

ARM上のサーバーにインストールする場合は、/etc/act_runner/config.yamlの以下の部分を編集する。ラベル名はGithub Actionsのドキュメントを参照して合わせる。

runner:
  # ...
  labels:
    - "ubuntu-22.04-arm:docker://docker.gitea.com/runner-images:ubuntu-22.04"
    - "ubuntu-20.04-arm:docker://docker.gitea.com/runner-images:ubuntu-20.04"

次にGiteaインスタンスにRunnerを登録する。登録にはGiteaの管理画面から取得したトークンが必要となる。(Globalで登録したい場合は、Admin Settingsからトークンを取得すること)

act_runner -c /etc/act_runner/config.yaml register --no-interactive --instance https://gitea.example.com/ --token xxxxxxxxxxxxxxxx

登録が成功すると、以下のような出力が表示される。

INFO Registering runner, arch=amd64, os=linux, version=v0.2.13. 
WARN Runner in user-mode.                         
INFO Runner name is empty, use hostname 'cherry'. 
DEBU Successfully pinged the Gitea instance server 
INFO Runner registered successfully.  

登録処理により作成された.runnerファイルを適切な場所に移動し、権限を設定する。

sudo mv .runner /var/lib/act_runner/
sudo chown act_runner:act_runner /var/lib/act_runner/.runner

systemdサービスファイルを作成して、Act Runnerをサービスとして実行できるように設定する。

cat <<'EOF' | sudo tee /etc/systemd/system/act_runner.service
[Unit]
Description=Gitea Actions runner
Documentation=https://gitea.com/gitea/act_runner
After=docker.service

[Service]
ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml
ExecReload=/bin/kill -s HUP $MAINPID
WorkingDirectory=/var/lib/act_runner
TimeoutSec=0
RestartSec=10
Restart=always
User=act_runner
Environment=HOME=/var/lib/act_runner

[Install]
WantedBy=multi-user.target
EOF

systemdの設定をリロードして、Act Runnerサービスを有効化し起動する。

sudo systemctl daemon-reload
sudo systemctl enable act_runner
sudo systemctl start act_runner

サービスが正常に起動したことを確認する。

$ sudo systemctl status act_runner
● act_runner.service - Gitea Actions runner
     Loaded: loaded (/etc/systemd/system/act_runner.service; enabled; preset: enabled)
     Active: active (running) since Wed 2025-12-17 10:35:31 UTC; 23s ago
       Docs: https://gitea.com/gitea/act_runner
   Main PID: 1472777 (act_runner)
      Tasks: 12 (limit: 76726)
     Memory: 7.5M (peak: 8.7M)
        CPU: 50ms
     CGroup: /system.slice/act_runner.service
             └─1472777 /usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml

Dec 17 10:35:31 cherry systemd[1]: Started act_runner.service - Gitea Actions runner.
Dec 17 10:35:31 cherry act_runner[1472777]: time="2025-12-17T10:35:31Z" level=info msg="Starting runner daemon"
Dec 17 10:35:31 cherry act_runner[1472777]: time="2025-12-17T10:35:31Z" level=info msg="runner: cherry, with version: v0.2.13, with labels: [ubuntu-latest ubuntu-22.04 ubuntu-20.04], declare successfully"

リアルタイムでログを確認したい場合は、journalctlコマンドを使用する。

sudo journalctl -u act_runner -f

Giteaの管理画面でRunnerが登録されていることを確認する。管理者権限でアクセスし、以下のURLを開く。

https://<gitea url>/-/admin/actions/runners

image

登録されたRunnerが「Idle」状態で表示されていれば、正常に動作している。


GiteaのAct RunnerをUbuntuにインストールして、systemdサービスとして実行できるように設定した。これによりGitea ActionsのワークフローがこのRunner上で実行されるようになる。

ワークフローの作成方法については、以下のドキュメントを参照。

https://docs.gitea.com/usage/actions/quickstart/