2025年問題を乗り越えたい思いと、自分たちの夢を叶えたい気持ちでこの記事を書きました。この記事はNext.jsでポートフォリオを作成した際の備忘録として、レンタルサーバーへのデプロイの手順をまとめたものです。
- どんな記事なのか?
-
Github Actionsを使用してレンタルサーバーにファイルをアップする手順
- 誰が読むものなのか?
-
Next.jsとmicroCMSでページを作成されている方
- どんな時に読むのか?
-
Github Actionsでシークレットキーを取り扱いたいとき

レンタルサーバーへのデプロイの手順
Gitとはバージョン管理システムのことで、コードベースで変更履歴を管理するためのデータベースを作成することをいいます。ファイルの変更履歴を追跡し、異なるバージョン間で変更を比較したり統合することができます。
next.config.jsに以下の内容をコピーしてペーストします。
const isProd = process.env.NODE_ENV == "production"
output: isProd ? 'export' : ""
buildを実行するとoutフォルダが作成され、その中に静的ファイルが出力されます。Next.jsでは静的ファイルの出力先がoutフォルダになっています。outフォルダは.gitignoreファイルで除外されているため、リポジトリに含まれずデプロイされません。
outフォルダをデプロイするために以下の内容で.git-ftp-includeファイルをプロジェクトルートに作成します。
!out/

FTPを使用してレンタルサーバーにデプロイするための設定をします。FTP接続時に必要な以下の情報を控え、リポジトリに暗号化された秘密情報を作成する。
| FTP情報 | シークレット名 |
|---|---|
| FTPサーバー名 | FTP_SERVER: FTPサーバーのアドレス。lolipopの場合、通常は ftp.lolipop.jp です |
| ユーザー名 | FTP_USERNAME: FTPのユーザ名 |
| パスワード | FTP_PASSWORD: FTPのパスワード |
| FTP接続ディレクトリ | FTP_SERVER_DIR |
microCMS接続時に必要な以下の情報を控え、リポジトリに暗号化された秘密情報を作成する
| microCMS情報 | シークレット名 |
|---|---|
| サービスID | NEXT_PUBLIC_SERVICE_DOMAIN |
| APIキー | NEXT_PUBLIC_API_KEY |
Github Actionsで変数を扱いたい場合プロジェクトのSettings → Secrets and variables → Actionsを選択New repository secretをクリックして、変数のペアを入力する
- 「Actions」>「set up a workflow yourself」をクリック
- 任意のファイル名を設定(本記事ではftp-deploy.ymlとする)
- 以下の内容をコピーして「Edit new file」にペースト
name: FTP Deploy
on:
push:
branches: [ main ]
repository_dispatch:
types: [update-posts]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: npm
- run: |
npm ci
npm run build --if-present
env:
NEXT_PUBLIC_SERVICE_DOMAIN: ${{ secrets.NEXT_PUBLIC_SERVICE_DOMAIN }}
NEXT_PUBLIC_API_KEY: ${{ secrets.NEXT_PUBLIC_API_KEY }}
- name: FTP
uses: SamKirkland/FTP-Deploy-Action@4.3.3
with:
server: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
server-dir: ${{ secrets.FTP_SERVER_DIR }}
local-dir: ./out/
dangerous-clean-slate: false
GitHub Actionsのymlファイルを解説
- on: ワークフローのトリガーイベントを定義します。この場合、pushイベントがトリガーとなります。
- branches: ブランチのリストを指定します。この場合、masterブランチへのプッシュがトリガーとなります。
- name: Build : ジョブの名前を指定します。この場合、ジョブの名前は Buildです。
- runs-on: ubuntu-latest : ワークフローが実行されるランナーを指定します。この場合、最新版のUbuntu環境(Github上に構築されます)が選ばれます。
- steps : ジョブが実行するステップのリストを定義します。この場合、コードのチェックアウトとFTPデプロイの2つのステップがあります。
- run : 実行するコマンドを記述します。
- env : ワークフロー内に環境変数を指定します。process.env.NEXT_PUBLIC_SERVICE_DOMAIN, process.env.NEXT_PUBLIC_API_KEYで変数の値にアクセスできるようになります。
- uses: actions/checkout@v3 : コードをチェックアウトするためのアクションを指定します。ここでは、バージョン3のactions/checkoutアクションを使用しています。
- uses: SamKirkland/FTP-Deploy-Action@4.3.0 : FTPデプロイを行うアクションを指定します。ここでは、バージョン4.3.0のSamKirkland/FTP-Deploy-Actionを使用しています。
- with : アクションの入力を定義します。この場合、FTPサーバーの情報と認証情報を指定します。
- server: ${{ secrets.FTP_SERVER }} : FTPサーバーのホスト名を指定します。GitHubの秘密情報から取得します。
- username: ${{ secrets.FTP_USERNAME }} : FTPサーバーのユーザー名を指定します。GitHubの秘密情報から取得します。
- password: ${{ secrets.FTP_PASSWORD }} : FTPサーバーのパスワードを指定します。GitHubの秘密情報から取得します。
- local-dir : 設定しなければroot以下が全て対象です。
.envがGithub Actionsでは使えないので、ワークフロー内に環境変数を準備します。一部の変数は秘密情報にして、サイトにアクセスする人に公開しないようにする必要があるため、ブラウザで変数を公開するには、その名前の前にNEXT_PUBLIC_を付ける必要があります。
GitHubの「Actions」ページでエラーが表示されていなければデプロイ完了です。エラーが出た場合は、Actionsにエラーの内容が返ってくるので確認してエラーを修正します。
さらに詳しいことを知りたい方は、下記のサイトをご訪問してください。
いかがでしたでしょうか。この設定ができるとGitに変更をプッシュするのと同時にページが更新されるためFTPが不要になり、更新の漏れが少なくなるだけではなく運用でもとても便利になりますよ。
当チームではホームページ制作やLPページ制作のご依頼をお受けしております。構築だけお願いしたいなどももちろんお受けできます。気になったら是非ともお問い合わせだけでもどうぞ!



