lobsite! ログイン アカウント作成

Next.js 静的エクスポートホスティング

output: "export" でビルドした Next.js サイトをホストできます。next build が out/ を書き出し、npx lobsite が HTTPS、フォーム、デプロイごとのプレビュー URL 付きでデプロイします。

next.config に output: "export" を指定すると、next build が out/ を書き出し、それがデプロイされます。
HTML ファイル、フォルダ、または .zip をドロップ ブラウザ内で確認します。公開するまで何もアップロードされません。

Next.js はサーバー不要のサイトをビルドできます。output: "export" を設定すると、next build が各ページを HTML として out/ に書き出します。Lobsite はそのフォルダをホストします。npm run build を実行してから npx lobsite を実行すると、HTTPS 対応の *.lobsite.app アドレスでサイトが公開されます。最初に明確にしておくと、このページは静的エクスポートについて説明します。サーバーレンダリング、API ルート、ミドルウェアには Vercel のような Node.js ホストが必要です。

仕組み

  1. next.config.js で output: "export" を設定して静的エクスポートをオンにし(下記参照)、npm run build を実行します。サイトは out/ に出力されます。
  2. プロジェクトで npx lobsite を実行します。デプロイされるのは out/ で、public/ や .next/ ではありません。最初のデプロイにアカウントは不要で、6 時間有効です。
  3. 取得リンクから無料アカウントにサイトを残します。その後は npm run build && npx lobsite を実行するたびに同じアドレスが更新されます。

静的エクスポート用の next.config.js

/** @type {import('next').NextConfig} */
const nextConfig = {
  output: "export",
  images: { unoptimized: true },
};

module.exports = nextConfig;
  • output: "export" により next build が out/ を書き出します。古い next export コマンドは Next.js 14 で廃止され、この設定に置き換わりました。
  • images: { unoptimized: true } は next/image を使う場合に必要です。デフォルトのローダーはリクエストごとにサーバーで画像をリサイズするためです。この設定では画像はそのまま配信されます。ビルド前にリサイズするか、カスタムローダーを使用してください。
  • trailingSlash はオフのままでかまいません。ページは about.html として書き出され、Lobsite は /about で配信します。

静的エクスポートでできないこと

Next.js のドキュメントには、サーバーが必要な機能が記載されています。特によくあるものは次のとおりです。

  • 静的な GET 以外の API ルートとルートハンドラー。フォームは代わりに /_lobsite/forms/contact に送信してください。フォームをご覧ください。
  • next.config の redirects、rewrites、headers。 リダイレクトとヘッダーは lobsite.toml に移すと、すべてのリクエストに適用されます。リダイレクトジェネレーターでルールを作成できます。
  • ページ内のミドルウェア、Server Actions、ISR、cookies() や headers()。
  • generateStaticParams のない動的ルート。すべてのページをビルド時に把握している必要があります。

アプリがこれらに依存している場合は静的サイトではないので、サーバーで Next.js を実行するホストが適切です。

変更されたファイルのみアップロード

ファイルはハッシュで保存されます。変更のないサイトを再デプロイしてもアップロードは 0 バイトです。

デプロイごとに URL を発行

公開前にプレビューできます。リダイレクトも含めてワンクリックでロールバックできます。

すべてに HTTPS

すべてのサイトに、最初のデプロイから HTTPS 対応の *.lobsite.app アドレスが付きます。

すぐに使えるフォーム

フォームの送信先を /_lobsite/forms/contact にするだけです。スパムフィルターも含まれます。

設定は 1 つのファイルに

リダイレクト、ヘッダー、フォームは lobsite.toml に記述し、デプロイごとに一緒に反映されます。

明確な制限

すべての制限は公開されており、すべてのエラーが次にすべきことを教えてくれます。

Next.js ホストの比較

Lobsite Vercel Netlify GitHub Pages
静的エクスポート(output: "export") はい はい はい はい
サーバーレンダリング、API ルート、ミドルウェア いいえ はい はい いいえ
サーバーでのビルド いいえ: out/ をデプロイ はい はい GitHub Actions で
最初のデプロイ前のアカウント 不要: 6 時間公開、その後無料で残せる 必要 必要 必要(リポジトリも)
バックエンド不要のフォーム はい(サイトをアカウントに残した後) いいえ はい いいえ
カスタムドメイン はい、無料 はい はい はい

Vercel は Next.js を開発しており、そのすべてを実行できます。静的エクスポートで作るマーケティングサイト、ブログ、ドキュメントなら、Lobsite のほうがシンプルなホストです。コマンド 1 つで、変更されたファイルのみをアップロードし、デプロイごとにプレビュー URL が付きます。

よくある質問

サーバーサイドレンダリングの Next.js アプリをここでホストできますか?

いいえ。Lobsite はファイルを配信するため、動作するのは静的エクスポートのみです。ページが getServerSideProps、Server Actions、動的レンダリングを使う場合は、サーバーで Next.js を実行できる場所でホストしてください。

エクスポート後に next/image の画像が壊れるのはなぜですか?

デフォルトの画像ローダーにはサーバーが必要です。next.config.js に images: { unoptimized: true } を追加するか、画像 CDN を指すカスタムローダーを設定して、再度ビルドしてください。

Next.js の 404 ページは動作しますか?

はい。next build は not-found ページ(App Router)または pages/404(Pages Router)から 404.html を書き出し、Lobsite は存在しないアドレスに配信します。

静的エクスポートで App Router を使えますか?

はい。サーバーコンポーネントはビルド時にレンダリングされ、クライアントコンポーネントは通常どおりブラウザで動作します。使えないのは実行時にリクエストが必要な機能のみです。

関連項目