GitHub Actions self-hosted runnerが止まる前の5項目チェックリスト
「昨日まで動いてたのに、急にジョブが走らなくなった」——self-hosted runnerを使っていると、一度はこの焦りを経験するのではないでしょうか。
原因を探ると、大抵は「ネットワーク設定が変わっていた」「runnerプロセスが落ちていた」「バージョンが古すぎた」といった、事前に気づけたはずのことばかり。止まってから調べ始めると復旧に時間がかかるので、定期的にチェックする習慣をつけておくと安心です。
この記事では、self-hosted runnerが止まる前に確認しておきたい5つの項目を紹介します。
1. HTTPS(443)の外向き通信と帯域は足りているか
self-hosted runnerは、GitHubのサーバーと常に通信してジョブの取得や状態の更新を行っています。この通信が途切れると、GitHub上では「Offline」と表示され、ジョブを受け取れなくなります。
確認すべきポイントは2つ。
- 外向きのHTTPS(443)通信が許可されているか
- 上下ともに70kbps以上の帯域があるか
70kbpsというのはかなり低い数値なので、通常のネットワーク環境なら問題になりません。ただ、社内ネットワークでプロキシ設定が変わった、VPNの経路が変更された、といったタイミングで疎通が切れることがあります。
最近インフラ周りで変更があったなら、一度確認しておくと良いです。
2. 必要なドメインへのアクセスは許可されているか
ファイアウォールで外向き通信を制限している環境では、GitHubの特定ドメインへのアクセスを明示的に許可する必要があります。
GitHub Enterprise Serverの公式ドキュメントでは、以下のようなドメインが例示されています。
*.github.com*.githubusercontent.comghcr.io(GitHub Container Registryを使う場合)
注意点として、これらのドメインはCNAMEで別のホストを指していることがあります。ファイアウォールによってはCNAMEの追従が必要になるため、「ドメインは許可したのに繋がらない」という場合はこの設定を確認してみてください。
また、GitHubのドメイン構成は将来変わる可能性があるため、公式ドキュメントを定期的にチェックするのがおすすめです。
3. runnerプロセスは動いているか
当たり前のようで見落としがちなのが、「そもそもrunnerアプリが起動していない」というケースです。
ホストマシンを再起動した後に手動起動が必要だったり、何らかのエラーでプロセスが落ちていたり。原因はさまざまですが、runnerプロセスが動いていなければジョブは受け取れません。
対策として、runnerをOSのサービスとして登録し、自動起動するよう設定しておくと安心です。Linuxならsystemctlで管理できます。
# サービスの状態を確認
sudo systemctl status actions.runner.<org>.<repo>.<runner-name>
サービス化しておけば、ホスト再起動後も自動で立ち上がりますし、プロセスが異常終了した場合の再起動も設定できます。
4. runnerのバージョンは古すぎないか
self-hosted runnerには自動更新機能があり、通常は新しいバージョンがリリースされると自動でアップデートされます。ただし、--disableupdateオプションで自動更新を無効化している場合は注意が必要です。
自動更新を無効化した状態で放置すると、原則30日以内に手動更新しないとジョブがキューされないなどの制限が発生する可能性があります。
さらに、GitHub公式のChangelogでは、2026年3月16日以降、v2.329.0以上が必須になると告知されています。これより古いバージョンでは、runnerの登録ができなくなったり、自己更新も動作しなくなる可能性があります。
2026年2月16日〜3月16日の間はbrownout期間として段階的にブロックが始まるため、早めにバージョンを確認しておくのが安全です。
# runnerのバージョン確認
./run.sh --version
5. GitHub上のステータスと未接続期間を確認しているか
GitHubの管理画面からrunnerの状態を確認できます。
Settings → Actions → Runners で、各runnerが「Idle」「Active」「Offline」のどの状態かが一覧で見えます。
ここで覚えておきたいのが、Offlineのまま長期間放置すると自動削除されるという仕様です。
- 通常のrunner:14日間未接続で自動削除
- ephemeral runner:1日で自動削除
- JIT(Just-In-Time)runner:1ジョブ実行後に削除
一時的にrunnerを止めているつもりが、気づいたら登録が消えていた…という事態を避けるためにも、定期的にステータスを確認する習慣をつけておくと良いです。
まとめ:5項目チェックリスト
- HTTPS(443)の外向き通信と帯域(70kbps以上)
- 必要ドメインへのアクセス許可(CNAME追従も確認)
- runnerプロセスの稼働状態(サービス化推奨)
- runnerバージョン(v2.329.0以上、30日ルール)
- GitHub上のステータスと未接続期間(14日/1日/1ジョブ)
月1回でも、インフラ変更があったタイミングでも、この5項目をざっと確認するだけで「突然止まった」を防げます。特にバージョン要件の強制は期限が決まっているので、早めに対応しておくと安心です。