🚀 GitHub Actions × Xserver で自動デプロイする方法【SSH接続で自動更新】
🎯 この記事の目的
- GitHub から Xserver に 自動でサイト更新したい
-
appleboy/ssh-action
を使って SSH 経由でgit pull
したい - ローカル環境からGitHubに
push
したら自動で上記内容を実行してほしい
🛠 前提条件
- Xserver の契約済み
- Xserver の「SSH設定」ON
- GitHub リポジトリあり(
develop
ブランチを使う例で進行 mainにする場合はymlファイルの記述を変更)
✅ 手順まとめ
① SSH鍵の作成(GitHub Actions用)
ssh-keygen -m PEM -t rsa -b 4096 -f ~/.ssh/xserver_deploy
-m PEM:appleboy/ssh-action は PEM形式を必要とする
-b 4096:セキュリティ強化
-f:出力先ファイル名(例:xserver_deploy)
できたファイル:
秘密鍵 → ~/.ssh/xserver_deploy
公開鍵 → ~/.ssh/xserver_deploy.pub
② Xserver側に公開鍵を登録
サーバーパネル → SSH設定 → 公開鍵認証用鍵の登録
公開鍵の内容(xserver_deploy.pub)を貼り付け
「認証鍵を登録する」ボタンで登録
③ XserverのSSH接続制限を変更(重要!)
Xserverの「SSH接続制限」が初期状態だと 国内IP限定 になっており、GitHub Actions(海外サーバ)からは接続できません。
サーバーパネル → SSH設定 →
「SSH接続制限」 → 『すべてのIPアドレスから許可する』に変更
※必要に応じて、一時的に変更後デプロイ確認後、元に戻す方法もあり
④ GitHub側に秘密鍵などを登録(Secrets)
GitHub リポジトリの「Settings」 → 「Secrets and variables」 → 「Actions」へ
名前 内容
SSH_HOST 例: sv1234.xserver.jp
SSH_PORT 例: 10022(Xserverだと10022、通常は22が多いらしい)
SSH_USERNAME 例: xs123456
SSH_PRIVATE_KEY xserver_deployの中身(秘密鍵)を改行含めて丸ごと貼る
⑤ .github/workflows/deploy.yml を作成
name: Deploy to Xserver
on:
push:
branches:
- develop
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Deploy to Xserver via SSH
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
cd /home/xs123456/yourdomain.com/public_html/
git checkout develop
git pull origin develop
yourdomain.comはご自身のドメインに変更
cdで移動するディレクトリも正確に指定
ブランチはdevelopにpushした際に発火とあるが、ymlの記述を変えてブランチをmainに変えてもOK
push:
branches:
- main
✅ 成功ログ例(Actions)
Already on 'develop'
From github.com:yourname/yourrepo
* branch develop -> FETCH_HEAD
Updating a1b2c3d..d4e5f6g
Fast-forward
index.html | 1 +
1 file changed, 1 insertion(+)
✅ Successfully executed commands to all hosts.
🧩 よくあるつまずきポイント
トラブル 解決策
ssh: handshake failed 鍵形式が違う(PEMで再作成)
unable to authenticate 公開鍵登録ミス / ユーザー名・ポート間違い
secretがうまく認識されない 改行含めて貼れていない / 最終行に空白や改行不足
国内限定接続で弾かれる SSH接続制限を「全て許可」に変更
自分が沼ったときに作った記事はこちら
🎉 まとめ
ssh-keygen -m PEM -b 4096 で鍵を作成
Xserverに公開鍵登録&SSH制限を解除
GitHub Secrets に正しく情報を登録
appleboy/ssh-action で簡単自動デプロイ!
🔗 参考リンク
appleboy/ssh-action GitHub
Xserver公式マニュアル(SSH設定)
GitHub Actions ドキュメント