0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actions × Xserver でサイト更新する方法【SSH接続で自動更新】

Last updated at Posted at 2025-06-13

🚀 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 ドキュメント


0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?