Github Actionsをレンタルサーバーで実行するために調査してみた
Date2026/02/18 Last Modified2026/02/21
背景
社内でGit化を進めていこうという流れがあり、インフラを整えるために私はGithub Actions周りを調査することに。
具体的にやりたいことは、git pushを起点にしてXServer(レンタル)のプロジェクトに対して自動デプロイされるというもの。
しかし課題があり、XServerのSSH接続制限を国内に限定しているという点だった……。
準備とあらすじ
そもそもGithub ActionsとはRunnerという機能を有しており、workflowで指示を書けばGitでできる色んな操作(コマンド実行やビルド)を自動で実行してくれるというもの。
それを活用すると、わざわざSSH接続をしてpullしなくてもデプロイできるので便利だし安全というわけだ。
とりわけ普段あまりインフラに触らないメンバーも多いため、毎度SSHするのは不安が多く、かといって自分が張り付いて監視するわけにもいかないので自動化はしておきたい。
ということで、まずはActionsに秘密鍵を設置し、XServerにも公開鍵をセットしてpushしてみた。
なるほど、Actionsは国外IPに所属していると判定されてしまうのか。
レンタルサーバーだからなのか、あんまり詳細にIPの制限ができないようで、国内外という区分けしか設定ができないらしい。
それでIPの解放を依頼してみたが、「その昔、海外からの不正アクセス攻撃があったので怖いから外したくない」ということだった。
SSHではあるので、パスワードでの認証を禁止して鍵をきちんと設計すれば危険性は低いとは思うが、説明が大変……。(SSH接続とHTTPからの攻撃の区別とか)
どのみち認知コストや不安を高める結果になるのであれば、変更履歴が追えないという不安を解消しても本末転倒である。
そうして、SSHのIPを制限したままできる方法について調べてみた。
コストと現実
まずChatGPTに聞いてみたところ、3つの解決策を提示してくれた。
- 新規EC2を立ててRunnerを稼働させ、Elastic IPとして国内IPをくっつけて踏み台サーバーとする
- NAT Gatewayを設定し、ネットワークアドレスの振り替えをして固定IPを付与し、IGWから出す
- XServerにSelf-hosted Runnerを設置して実行する
このうち、3.に関してはレンタルサーバーの性質上「OSの権限が必要になる常駐処理」をセットすることができない。
ちょうど昨日学んだデーモンに関する話にもなってくると思う。
ということで1か2をすることになるが、1に関しては最小のEC2を設置すると約$10/月ほど。
年額だとそこそこなので、申請を通すのが大変そう。
それで2が安いかな……と思ったら$40/月くらいかかるらしい。飛び上がった。
Gatewayっていうくらいだからインスタンスより安いと思ったら、これもまた一つのサーバーなので扱いとしては同じようなものらしい。
もう少しコストを抑える現実的な案として、もっと考えてみた。
-
社内のIPを経由させればいいんじゃないか? -> 社内に常駐のオンプレサーバーが必要にだけど持って無い。ラズパイでも買いますか(使い方わからない)
-
VPNのサービスを使ってみてはどうか? -> WireGuardなどがあるが、無料なものは存在しないし、NATと同じような感じで高い。
-
もっと安いインスタンス(VPS)はないのか? 調べてみたところ、AkamaiのLinodeというのが一番コスパがいいらしい。$5/月とか。
でも知らないサービスを申請するのはなかなかハードルが高いので、これも却下。
結論
そもそもの問題として、Git管理による安全性の向上によって不安を解消しよう!ということだったので、安心できるサービスと言えば最小のEC2インスタンスを立てるか、XServerのVPSを立てるかくらいの案が妥当だった。
$10/月くらいのコスト感。
まあでも、出費があるならSSH接続を学んでいくのが一番丸いのかなーなんて結論になりました。いずれ必要だし。
セキュリティを強くするということは、便利さやコストを天秤にかけることなんだと学びました。
それにしても、IP変えるのってややこしいもんだなぁと改めて。
追記の結論(2/21)
レンタルサーバーでも、gitとcronは使えるということがわかった。
git pullさせたいだけならcronで設定してしまえばよい。
SSHでCronのコマンドを操作する権限が無いようなので、XServerの管理画面から実行。

中に書くコマンドはこんな感じ。
–hardすることで、設定を強制的に反映してGit管理を強制することができる。
Actionsじゃないので自動テストはできないが、応急措置としてはこれでヨシかなという結論で。