<span id="deploy-nextjs-on-lizard" />

# Next.js を Lizard にデプロイする

`next build` と `next start` を使って、Next.js を Node.js サーバーとして Lizard で実行します。この方法では、リクエスト時レンダリング、Route Handlers、Server Actions のためにサーバーを利用可能な状態に保てます。すべてのルートを事前にビルドできる場合は、代わりに [Next.js静的エクスポート](https://lizard.build/ja/docs/framework-guides/nextjs/static-export) に従ってください。

<span id="build-settings" />

## ビルド設定

| 設定 | 値 |
|---|---|
| プロジェクト root | `package.json` と Next.js 設定を含むディレクトリ |
| ビルド script | `next build` |
| Start script | `next start --hostname 0.0.0.0 --port 3000` |
| ビルド output | `.next/` |
| サービスポート | `3000` |
| ランタイム | Node.js |

<span id="prepare-the-app" />

## アプリを準備する

`next`、`react`、`react-dom` を依存関係に含めたままにし、lockfile をコミットしてください。これらのスクリプトを `package.json` に統合します:

```json
{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start --hostname 0.0.0.0 --port 3000"
  }
}
```

このガイドでは標準の Next.js 出力を使用します。`output: 'export'` には静的サーバーが必要で、`output: 'standalone'` には独自の `server.js` 起動とアセット配置が必要です。どちらもこの `next start` の手順をそのままでは使用しません。

`.nvmrc` で、`22` などのサポート対象の Node メジャーバージョンを選択します。アップロードするソースから `.next/`、`node_modules/`、`.env*` を除外してください。必要であれば、シークレットを含まないサンプル環境ファイルは残します。

<span id="test-the-production-build-locally" />

## 本番ビルドをローカルでテストする

```bash
npm ci
npm run build
npm run start
```

別のターミナルで `http://localhost:3000` を開き、内部ルートをテストします。アプリに API または Server アクション がある場合は、それも実行して確認してください。開発サーバーのチェックだけを通過しても、本番ビルドが動作する証明にはなりません。

<span id="deploy" />

## デプロイ

[Lizard CLIのインストールとサインイン](https://lizard.build/ja/docs/framework-guides#prepare-the-project) の後、アプリのディレクトリから次を実行します:

```bash
lizard init --name nextjs-app
lizard add --service web
lizard up --service web --port 3000
lizard logs --build --service web --json
lizard logs --service web --json
lizard ps --json
```

Lizard は `next` の依存関係を検出し、ビルドスクリプトと起動スクリプトを実行します。これらのコマンドは、サービスに既存のビルドまたは起動のオーバーライドがないことを前提としています。ローカルでのチェックを繰り返すには、デプロイ出力内の URL を使用してください。

<span id="environment-variables-and-data" />

## 環境変数とデータ

`NEXT_PUBLIC_*` の値は、ビルド中にブラウザバンドルの一部になります。認証情報はサーバー専用の変数に保持し、サービスに対して [変数とシークレット](https://lizard.build/ja/docs/variables) から設定してください。ビルド中にデータを取得するコードは、ビルド時にもそのデータへアクセスできる必要があります。ランタイムを再起動しても、すでに生成済みの HTML や JavaScript は変更されません。

ローカルキャッシュファイルとアップロードされたファイルは、レプリカ間で共有されるストアにはなりません。1 レプリカを超えてスケールする前に、Next.js のキャッシュ要件と Server アクション の要件を確認してください。永続的なアプリデータはデータベースまたはオブジェクトストレージに保存し、[ストレージとリカバリ](https://lizard.build/ja/docs/platform/storage-and-recovery) を読んでください。

<span id="troubleshooting" />

## トラブルシューティング

| 症状 | 確認 |
|---|---|
| `Missing script: start` | 上記の本番用起動スクリプトを追加してください。`next dev` はローカル開発用です。 |
| アプリが正常状態にならない | `--port 3000` を起動コマンドに一致させ、`0.0.0.0` にバインドしてください。 |
| Public API URL がまだ古い値のまま | 新しい `NEXT_PUBLIC_*` の値で再ビルドしてください。 |
| ビルドがデータベースに到達できない | ルートがビルド時にデータを取得しているか、その依存先がその時点で到達可能かを確認してください。 |
| `next start` で static export が失敗する | 別の static export ガイドに従ってください。 |

[Next.jsセルフホスティングガイド](https://nextjs.org/docs/app/guides/self-hosting) では、フレームワークレベルのキャッシュ、画像、マルチインスタンス動作を扱っています。デプロイエラーについては、[サービスが常にhealthyにならない](https://lizard.build/ja/docs/deploy/troubleshooting/service-never-healthy) を参照してください。

September 9, 2026 のデプロイチェックとその制限については、[テスト済みバージョンとクラウド結果](https://lizard.build/ja/docs/framework-guides/validation) を参照してください。
