最終更新日: 2026年2月26日
テンプレート説明
GitHub Actions セルフホステッドランナーは、GitHub Actionsのワークフローをユーザー自身のVPSインフラ上で実行するためのオープンソースアプリケーションです。GitHubが提供するホステッドランナーと異なり、独自のハードウェア・ソフトウェア環境でCI/CDパイプラインを実行できるため、プライベートネットワークへのアクセスやカスタムビルド環境の構築、コスト最適化が可能です。
本テンプレートは、インストール完了後もランナーは未登録状態(未設定状態)となります。GitHubから取得した登録トークンを使って手動でランナーを登録・起動する設計になっています。
スタートアップスクリプトのテンプレートを利用してサーバー作成を行う手順はご利用ガイドを参照してください。
メモ
本テンプレートはインストール時に最新バージョンのランナーを自動取得します。GitHub APIへのアクセスが失敗した場合、フォールバックとしてバージョン 2.321.0 が使用されます。ランナーはインストール後、自動更新機能により最新状態が維持されます。
仕様
対応OSイメージ
Ubuntu 24.04 LTS
主要ソフトウェア
| ソフトウェア名 | バージョン | ライセンス | 用途 |
|---|---|---|---|
| GitHub Actions Runner | Latest | MIT | GitHub Actionsワークフロー実行エンジン |
| Docker Engine | Latest | Apache 2.0 | コンテナジョブ・サービスコンテナの実行 |
| Git | latest | GPL-2.0 | リポジトリのチェックアウト |
| Python 3 | latest | PSF License | スクリプト実行サポート |
スタートアップスクリプト情報
| 項目 | 説明 |
|---|---|
| アプリケーション利用ポート | 22/tcp (SSH) ※アウトバウンド接続のみ使用(インバウンドポート追加不要) |
| インストールディレクトリ | /opt/actions-runner |
| ランナー実行ユーザー | runner(専用の非rootユーザー) |
| 管理スクリプト | /root/github-runner-*.sh |
| 初期状態 | 未登録・停止中(GitHubへの登録が必要) |
その他
最小システム要件
- CPU: 1コア以上(ランナーアプリ自体の要件は最小限。実行するワークフローの負荷に依存)
- メモリ: 1GB以上(Dockerコンテナジョブを使用する場合は2GB以上推奨)
- ディスク容量: 10GB以上(ビルドキャッシュ・Dockerイメージ用の追加容量を推奨)
- ネットワーク: GitHubへのアウトバウンドHTTPS接続(443/tcp)が必要
メモ
GitHub Actions セルフホステッドランナーアプリケーション自体が必要とするリソースは最小限です。実際に必要なリソースは、実行するワークフローの内容(ビルド・テスト・Dockerビルドなど)によって大きく異なります。重いビルド処理を行う場合はより高スペックなVPSプランをご選択ください。
利用手順
重要
テンプレート作成直後、GitHub Actions Runnerはインストール済みですが、GitHubへの登録は完了していません。ランナーをGitHub Actionsで使用するには、GitHubから登録トークンを取得し、以下の手順に従って登録・起動を行う必要があります。登録トークンの有効期限は発行から1時間です。
Step 1: VPSへの接続
SSHクライアントを使用してVPSに接続します。
# ssh root@<IPアドレスまたはドメイン名>
Step 2: GitHubから登録トークンを取得
ランナーを登録するGitHubリポジトリまたはOrganizationにアクセスし、登録トークンを取得します。
- リポジトリの場合: Settings > Actions > Runners > New self-hosted runner
- Organizationの場合: Settings > Actions > Runners > New self-hosted runner
表示されるトークン(AXXXX...形式)をコピーしてください。
セキュリティ重要
登録トークンは発行から1時間で期限切れになります。期限切れの場合は、GitHubから新しいトークンを再取得してください。また、パブリックリポジトリでのセルフホステッドランナーの使用は、外部のPull Requestから悪意のあるコードが実行されるリスクがあるため、推奨されません。プライベートリポジトリでの使用を強く推奨します。
Step 3: ランナーの登録・起動
管理スクリプトを使用してランナーをGitHubに登録し、systemdサービスとして起動します。
リポジトリへの登録例:
# /root/github-runner-manage.sh configure --url https://github.com/<オーナー名>/<リポジトリ名> --token <登録トークン>
Organizationへの登録例:
# /root/github-runner-manage.sh configure --url https://github.com/<Organization名> --token <登録トークン>
ランナー名・カスタムラベルを指定する場合:
# /root/github-runner-manage.sh configure --url https://github.com/<オーナー名>/<リポジトリ名> --token <登録トークン> --name my-runner --labels ubuntu,conoha
登録が完了するとsystemdサービスとしてランナーが自動起動し、以降のVPS再起動時にも自動的に起動します。
Step 4: 動作確認
GitHubのランナー設定画面(Settings > Actions > Runners)で、登録したランナーが「Idle」状態になっていることを確認します。VPS側からも診断スクリプトで状態確認が可能です。
# /root/github-runner-diagnose.sh
Step 5: ワークフローからの利用
GitHub Actionsのワークフローファイル(.github/workflows/*.yml)でruns-on: self-hostedを指定することで、登録したランナーを使用できます。
基本的なワークフロー例:
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- name: Build
run: echo "Running on self-hosted runner"
カスタムラベルを指定する場合:
jobs:
build:
runs-on: [self-hosted, ubuntu, conoha]
steps:
- uses: actions/checkout@v4
管理スクリプト一覧
| スクリプト名 | 機能 | 使用例 |
|---|---|---|
| github-runner-manage.sh configure | ランナーをGitHubに登録してサービス起動 | # /root/github-runner-manage.sh configure –url <URL> –token <TOKEN> |
| github-runner-manage.sh reconfigure | 既存設定を削除して再登録(別リポジトリへの移行時) | # /root/github-runner-manage.sh reconfigure –url <URL> –token <TOKEN> |
| github-runner-manage.sh start | サービス起動 | # /root/github-runner-manage.sh start |
| github-runner-manage.sh stop | サービス停止 | # /root/github-runner-manage.sh stop |
| github-runner-manage.sh restart | サービス再起動 | # /root/github-runner-manage.sh restart |
| github-runner-manage.sh status | 登録状態・サービス状態の確認 | # /root/github-runner-manage.sh status |
| github-runner-manage.sh remove | ランナーの登録解除 | # /root/github-runner-manage.sh remove –token <TOKEN> |
| github-runner-diagnose.sh | システム診断(ランナー状態・Docker・ネットワーク確認) | # /root/github-runner-diagnose.sh |
セキュリティグループ(ファイアウォール)設定
メモ
GitHub Actions セルフホステッドランナーはGitHubへのアウトバウンド接続のみを使用します。ランナー自体への外部からのインバウンド接続は不要なため、SSH(22番ポート)以外のインバウンドポートを開放する必要はありません。
| ポート番号 | プロトコル | 用途 | 必須/オプション |
|---|---|---|---|
| 22 | TCP | SSH(管理用) | 任意 |
なお、ランナーがGitHubと通信するためには以下のアウトバウンド接続が必要です(VPSのデフォルト設定では通常開放されています)。
| 接続先 | ポート | 用途 |
|---|---|---|
| github.com / api.github.com | 443/tcp | ジョブの受信・GitHub APIアクセス |
| ghcr.io / docker.io 等 | 443/tcp | Dockerイメージの取得(コンテナジョブ使用時) |
アプリケーションの具体的な利用方法につきましては、サービス開発元やサービス提供元の公式サイト、Wikiなどで最新情報をご確認ください。
外部リンク
| サイト名 | URL | 説明 |
|---|---|---|
| GitHub Actions 公式ドキュメント | https://docs.github.com/en/actions | GitHub Actions全般のドキュメント |
| Self-Hosted Runners ドキュメント | https://docs.github.com/en/actions/hosting-your-own-runners | セルフホステッドランナーの設定・管理ガイド |
| GitHub Actions Runner GitHubリポジトリ | https://github.com/actions/runner | ランナーアプリのソースコード・リリース情報 |
| ランナーのセキュリティ強化 | https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions | セルフホステッドランナーのセキュリティベストプラクティス |