コスト
GitHub Actionsのセルフホストランナー vs CRACIのマネージドランナー
セルフホストランナーは請求書の上では無料に見えます。本当のコストは、ホスト、パッチ適用に費やす時間、そしてGitHub自身が必要だとするハードニングです。自社運用に何が伴うかと、自社の数値を当てはめられるコストモデルを紹介します。
更新日
GitHub Actionsのセルフホストランナーとは?
セルフホストランナーとは、GitHubホステッドのVMの代わりにGitHub Actionsのジョブを実行する、自社でデプロイして管理するマシンです。 物理サーバー、仮想マシン、コンテナのいずれでもよく、オンプレミスでもクラウドアカウント内でも構いません。GitHubは、 マシンとそのすべてのソフトウェアの責任は利用者にあるとしています。
- 登録:ランナーは一度に1つのリポジトリ、Organization、Enterpriseに登録します。 Organizationレベルで登録し、ランナーグループを使えば、複数のリポジトリでランナーを共有できます。
- プラットフォーム:ランナーアプリケーションは、一般的なLinuxディストリビューション、Windows 10、11およびWindows Server、macOS 11以降に対応し、x64とARM64で動作します。
- ネットワーク:ランナーは、ポート443の外向きHTTPSでGitHubに接続します。
- アップデート:ランナーアプリケーションは、新しいリリースから30日以内に更新する必要があります。 無効にしない限り、自動で更新されます。
- 制限:ジョブは最大5日間実行でき(GitHubホステッドランナーでは6時間)、24時間を超えてキューに留まった ジョブは失敗します。
-
スケーリング:KubernetesオペレーターであるActions Runner Controller(ARC)が、実行中のワークフロー数に応じて
ランナースケールセットをスケールさせます。
--ephemeralで登録したランナーは、1つのジョブだけを実行します。
チームがセルフホストを選ぶ理由
チームがセルフホストを選ぶのは、分単位のコストを削減するため、社内システムや特定のハードウェアにアクセスするため、 そしてすでに費用を払っているキャパシティを活用するためです。GitHubのより大きなランナーはサイズが大きいほど分単位の料金も上がるため、 大型のマシンはホスト型ランナーでは高額になります。
現在、GitHubはセルフホストランナーに分単位の料金を課していません。2026年3月1日からセルフホストランナーに1分あたり$0.002の クラウドプラットフォーム料金を導入すると発表しましたが、その後「方針を再検討する時間を取るため」に延期しました。 2026年9月時点で、GitHubの課金ドキュメントはセルフホストの使用を無料としています。GitHubが負担しないのは、ランナーの周辺にあるすべてです。
セルフホストのコストを構成する3つの要素
セルフホストのコストは、インフラ、エンジニアの時間、セキュリティのハードニングです。請求書に現れるのは最初の1つだけです。
インフラ
ホストはジョブを実行していてもアイドルでも費用がかかるため、最も忙しい時間帯に合わせてサイズを決めることになります。 さらに、キャッシュとイメージのストレージ、ネットワーク通信、フリートの監視とオートスケーリングに使うものの費用が加わります。
エンジニアの時間
GitHubのドキュメントは責任の所在を明確にしています。セルフホストランナーでは「オペレーティングシステムとその他すべてのソフトウェアの 更新は利用者の責任です」。実際には、ランナーのバージョンアップ、ホスト間のイメージのずれ、ディスクのクリーンアップ、 オートスケーリングのスクリプト、そしてキューが止まったときのオンコール担当も含まれます。
セキュリティのハードニング
GitHubのセルフホストランナー向けセキュリティガイダンスには、全文を読む価値のある警告が2つあります。
どのユーザーもリポジトリに対してプルリクエストを作成して環境を侵害できるため、セルフホストランナーをGitHubのパブリックリポジトリで 使うべきではほぼありません。 GitHub Docs, Secure use reference
GitHubのセルフホストランナーには、エフェメラルでクリーンな仮想マシンで実行されるという保証がなく、ワークフロー内の 信頼できないコードによって永続的に侵害される可能性があります。 GitHub Docs, Secure use reference
GitHubは、最大1つのジョブを実行した後に削除されるジャストインタイムランナーを推奨しています。これを適切に行うには、 エフェメラルなマシン、ジョブ間の分離、外向きネットワーク通信の制御、シークレットの慎重な取り扱いが必要です。 いずれも自社で設計、構築し、運用し続ける作業です。
大規模なセルフホストランナーのベストプラクティス
GitHubのセキュリティガイダンスと、大規模なランナーについてAWSが公開しているプラクティスは、同じ項目に行き着きます。 どの項目もそれ自体が1つのプロジェクトです。
- エフェメラルランナー:1マシン1ジョブにして、ジョブ間で何も持ち越さない。
- ランナーグループ:リポジトリと環境ごとにランナーを分け、理想的には別々のアカウントに置く。
- 短期間の認証情報:長期間有効なアクセスキーではなく、クラウドへのOpenID Connectを使う。
- エグレス制御:ジョブが何を実行するかだけでなく、どこに到達できるかを制限する。
- 起動時間:エフェメラルなマシンは起動が遅いため、ウォームプールとカスタムイメージを使う。
- コスト:長時間のジョブ用のフォールバックを備えたスポットインスタンス。
- 監視:キュー待ち、実行中、完了したジョブの指標とアラート。
CRACIでは、1つ目と4つ目がランナーに組み込まれています。すべてのジョブは分離された仮想マシンで、ジョブ開始前に検証され フェイルクローズで動作するエグレスポリシーの下で実行されます。
自社の数値を当てはめられるコストモデル
セルフホストの月額コスト = ホスト費用 +(保守とハードニングの時間 × 自社の時間単価)
CRACIの月額コスト(2 vCPUランナー)= ビルド時間(分)× $0.004
CRACIの計算式は料金ページの料金を使っています。CRACIの課金はビルド時間のみで、 月額料金もSBOMごとの課金もありません。最新の数値は料金ページでご確認ください。
例A
説明用の入力値であり、ベンチマークではありません。2 vCPUランナーで月60,000分のビルド、ランナーホストに月$350、時間単価$85で月8時間の保守。
- セルフホスト:$350 +(8 × $85)= $350 + $680 = 月$1,030
- CRACI:60,000 × $0.004 = 月$240
例B
説明用の入力値であり、ベンチマークではありません。同じ60,000分で、ホスト費用が月$115、 保守が時間単価$85で2時間の場合。
- セルフホスト:$115 +(2 × $85)= $115 + $170 = 月$285
- CRACI:月$240
例Bでは、コンピュートだけで見れば両者は拮抗しています。安価なホストと安定した構成を持つチームでは、実際にこうなります。 自社の損益分岐点を求めるには、CRACIの金額から自社のホスト費用を引き、時間単価で割ります。例Bのホストの場合、 ($240 − $115)÷ $85で、月約1.5時間の保守です。
計算式に表れないことが2つあります。1つ目に、CRACIの金額にはコンピュート以外のものも含まれます(次のセクションを参照)。 2つ目に、時間は多くのチームが過小評価しがちな入力値です。 初期セットアップだけでなく、イメージの更新、セキュリティパッチ、スケーリング、ディスクのクリーンアップ、 失敗したジョブへの対応に費やす時間も数えてください。
セルフホストランナーでは得られないもの
セルフホストランナーはジョブを実行しますが、ジョブが何をしたかは記録しません。CRACIのランナーでは、各ビルドが実行中に エビデンスを生成します。
- ビルド時SBOM(CycloneDXまたはSPDX)。パッケージを認識するプロキシが、CIキャッシュから復元されたパッケージを含め、 ジョブが取り込むものを観測して生成します。完全性はジョブごと・キャッシュごとに示されます。
- ネットワークのエグレスポリシー。デフォルト拒否または許可で、24種類の組み込みソフトウェアソースプリセットと、型付きの カスタムソースを備えています。ポリシーはジョブ開始前に検証され、フェイルクローズで動作します。違反するとアラートが発生します。
- ジョブごとのネットワークトレース。APIで取得できます。
- 来歴データ。APIで取得できます。
- 脆弱性トラッキング。ビルドとリポジトリをまたいで追跡し、監視対象のSBOMを継続的に 再評価します。
独自のプロキシ、SBOMツール、ネットワークログを使えば、セルフホストランナーでもこの一部を構築できます。その場合は、 構築と保守にかかる時間を上記のコストモデルに含めてください。
| 機能 | CRACI | セルフホストランナー |
|---|---|---|
| OSとランナーのパッチ適用 | CRACI | 自社 |
| ジョブの分離 | 各ジョブを分離された仮想マシンで実行 | 構成次第。GitHubはエフェメラルでクリーンなマシンを保証しない |
| ネットワークのエグレス | デフォルト拒否を選べる組織ポリシー。ジョブ開始前に検証され、フェイルクローズ | 自社で構築・保守するファイアウォールやプロキシ次第 |
| SBOM | ビルド中に記録。ジョブごと・キャッシュごとに完全性を表示 | 各パイプラインに追加する別のツール |
| 来歴 | APIで来歴データを取得。署名なし | 自社で追加する署名・アテステーションのツール |
| 課金 | ジョブ時間の秒単位 | ホストは稼働中でもアイドルでも同じコスト |
| ジョブの実行場所 | 欧州のベアメタルインフラ上のCRACIマネージドランナー | 自社のネットワーク、クラウドアカウント、ハードウェア |
| オペレーティングシステム | 現在はx86-64とARM64のLinux。WindowsとmacOSはロードマップに掲載 | ランナーをインストールできる任意のマシン |
CRACIが提供していないもの
CRACIは現在、顧客ホスト型やオンプレミスのランナーを提供していません。これらはEnterprise向けにロードマップに 掲載されています。ビルドは、欧州のインフラ上のCRACIのマネージドランナーで実行されます。ジョブを自社の ネットワーク内、自社所有のハードウェア上、またはエアギャップ環境で実行しなければならない場合は、そのジョブにはセルフホストランナーを残してください。
- CRACIのランナーは現在Linuxのみで、WindowsとmacOSはロードマップに掲載されています。macOSとWindowsのビルドは 現在の環境のままです。
- x86-64とARM64は同じ料金です。
- イメージ:CRACI Slim、CRACI Slim ARM64、GitHub互換のUbuntu 24.04イメージ。ネストされた仮想化は、 x86-64で利用でき、ARM64ではプレビューです。
- サポートされているCI統合はGitHub Actionsです。
混在構成はよくあります。ジョブの移行はruns-onの行を変えるだけなので、大半のジョブを移行し、
一部をセルフホストランナーに残すことができます。ビルド時SBOMとネットワークポリシーが適用されるのは、CRACIのランナー上のジョブだけです。
判断の進め方
自社の数値で判断してください。先月のランナーのコストと時間、求められているエビデンス、そして各選択肢で実際のワークフローを 1つ実行した結果です。
- 先月のホストの請求額と、インシデント対応を含めチームがランナーに費やした時間を合計します。
- ビルド時間(分)を数えます。
- 両方を上の計算式に当てはめます。
- 求められているエビデンス(SBOM、来歴、ネットワーク制御)と、現在のランナーでそれを生成するのに必要なことを 書き出します。
- デモを予約し、実際のワークフローを1つCRACIで実行して比較します。
ランナーの仕組みの詳細:CI/CD連携、 CRACIのセキュリティ、ドキュメント。
GitHub Actionsセルフホストランナーのよくあるご質問
コスト、セットアップ、セキュリティ、制限について簡潔にお答えします。
GitHub Actionsのセルフホストランナーとは何ですか?
セルフホストランナーとは、自社でデプロイして管理し、GitHub Actionsのジョブを実行するマシンです。物理マシン、仮想マシン、コンテナのいずれでもよく、オンプレミスでもクラウドアカウント内でも構いません。GitHubのランナーアプリケーションをインストールし、リポジトリ、Organization、Enterpriseのいずれかに登録して、runs-on: self-hostedまたは独自のラベルで指定します。
GitHub Actionsのセルフホストランナーは無料ですか?
2026年9月時点で、GitHubはセルフホストランナーに分単位の料金を課していません。2026年3月1日から1分あたり$0.002のプラットフォーム料金を導入すると発表しましたが、その後、方針を再検討するため延期しました。ただし、マシン、そのストレージとネットワーク、そしてパッチ適用とセキュリティ維持にかかる時間の費用は引き続き発生します。
1つのセルフホストランナーで複数のリポジトリに対応できますか?
ランナーは一度に1つのリポジトリ、Organization、Enterpriseにしか登録できません。複数のリポジトリで共有するには、Organizationレベルで登録してランナーグループでアクセスを制御するか、同じマシン上で複数のランナーインスタンスをそれぞれ別々に登録して実行します。
セルフホストランナーはどのOSで動作しますか?
GitHubは、Ubuntu 20.04以降、Debian 10以降、RHEL 8以降などの一般的なLinuxディストリビューション、Windows 10、11およびWindows Server 2016~2022、macOS 11以降でランナーアプリケーションをサポートしています。x64とARM64で動作し、LinuxではARM32にも対応しています。
セルフホストランナーでジョブを実行できる時間は?
最大5日間で、GitHubホステッドランナーの6時間と比べて長くなっています。24時間を超えてキューに留まったジョブは失敗します。
セルフホストランナーはパブリックリポジトリでも安全ですか?
GitHubは、誰でもプルリクエストを作成してマシン上でコードを実行できるため、セルフホストランナーをパブリックリポジトリで使うべきではほぼないとしています。推奨されているのは、最大1つのジョブだけを実行するエフェメラルなジャストインタイムランナーと、分離、エグレス制御、シークレットの慎重な取り扱いです。
Actions Runner Controllerは何をするものですか?
Actions Runner Controller(ARC)は、GitHub ActionsのセルフホストランナーをオーケストレーションしてスケールさせるKubernetesオペレーターです。ランナースケールセットは、実行中のワークフロー数に応じて増減します。クラスター、イメージ、その周辺のネットワークの運用は引き続き自社で行います。
CRACIのランナーを自社のネットワーク内で実行できますか?
現時点ではできません。CRACIは欧州のインフラ上でマネージドランナーを提供しており、Enterprise向けの顧客ホスト型ランナーはロードマップに掲載されています。自社のネットワーク内で実行しなければならないジョブはセルフホストランナーに残し、それ以外のジョブをCRACIに移行できます。