GitHub Actions から Xserver へ静的サイトをデプロイする方式として、最初はFTPSを使い、後からSSH+rsyncに切り替えた。その実体験に基づく比較と、それぞれの導入手順のまとめ。

結論:どちらを選ぶべきか

観点 FTPS SSH+rsync
導入の手軽さ ◎ アカウント情報だけで動く △ SSH鍵の生成・登録が必要
転送速度 ✕ このサイトでは8〜13分 ◎ 差分転送で約6秒
安定性 △ 制御コネクションが度々タイムアウト ◎ 一度ハマったが原因判明後は安定
セキュリティ 暗号化通信のみ 公開鍵認証+暗号化通信

結論:最初からSSH+rsyncが使えるなら、そちらを選んだ方がいい。 FTPSは「手軽さ」だけが利点で、今回のように数百ファイルを扱う静的サイトでは速度・安定性の両方で見劣りした。


案1:FTPS(最初に採用・後に廃止)

仕組み

GitHub Actions上で SamKirkland/FTP-Deploy-Action というツールを使い、FTPS(FTP over TLS)でXserverに直接ファイルをアップロードする。ローカルの out/(Next.jsのビルド成果物)を丸ごと転送する。

導入手順

  1. Xserverサーバーパネル → FTP → FTPアカウント設定 で、デプロイ専用のFTPアカウントを新規作成する(メインのサーバーパスワードとは分離するため)
  2. 接続先ディレクトリ・パスワードを設定
  3. GitHub Secretsに以下を登録:
  4. workflow内で SamKirkland/FTP-Deploy-Action を使い、protocol: ftps を指定してアップロードする

実際にハマったこと


案2:SSH+rsync(現在採用)

仕組み