react-server675fbba4
react-serverfilesdocssrcpagesja(pages)deploybun.mdx
docs/src/pages/ja/(pages)/deploy/bun.mdxmdx4.6 KiBa5f14617

title: Bun category: Deploy order: 4

import Link from "../../../../components/Link.jsx";

Bun

スタンドアロンの Bun サーバとしてデプロイするには、ビルトインの bun アダプタを使用します。このアダプタは Bun のネイティブ Bun.serve() API を使用し、エッジ互換の fetch ハンドラとゼロコピー静的ファイル配信を提供します。

<Link name="installation"> ## インストール </Link>

システムに Bun がインストールされている必要があります:

curl -fsSL https://bun.sh/install | bash

追加のパッケージは不要です — アダプタは @lazarv/react-server に組み込まれています。

Bun でプロダクションビルドを実行すると、bun アダプタが自動的に検出・使用されます — 設定は不要です。明示的に指定したい場合やオプションを渡したい場合は、react-server.config.mjs ファイルにアダプタを追加します:

export default {
  adapter: "bun",
};
<Link name="configuration"> ## 設定 </Link>

オプションを渡してアダプタをカスタマイズできます:

export default {
  adapter: [
    "bun",
    {
      name: "my-app", // アプリケーション名(生成される package.json で使用)
    },
  ],
};

設定オプション

  • name: アプリケーション名。package.json の name(スコープなし)または "react-server-app" にフォールバックします。

環境変数

生成されたサーバは実行時に以下の環境変数をサポートします:

  • PORT: サーバポート(デフォルト: 3000
  • HOST: サーバホスト名(デフォルト: 0.0.0.0
  • ORIGIN: サーバのオリジン URL を上書き
<Link name="how-it-works"> ## 仕組み </Link>

Bun アダプタはエッジビルドモードを使用し、サーバ全体を単一のファイルにバンドルします。ビルド時に以下を行います:

  1. サーバコードを .bun/server/.react-server/server/edge.mjs にバンドル
  2. すべての静的アセットを .bun/static/ にコピー
  3. ビルド時静的ルートマップを含む start.mjs スクリプトを生成し、Bun.serve({ static }) でゼロコピー静的ファイル配信を実現
  4. 簡単なデプロイのための package.json を作成

静的ファイル(HTML、CSS、JS、画像など)は fetch ハンドラを経由せず、Bun の最適化された静的ファイル処理で直接配信されるため、静的アセットに対して最高のパフォーマンスが得られます。

<Link name="build"> ## ビルド </Link>

react-server CLI を使用してアプリケーションをビルドします:

pnpm react-server build [root]

これにより、以下の構造の .bun/ ディレクトリが生成されます:

.bun/
├── start.mjs          # 静的ルートマップ付きエントリーポイント
├── package.json       # デプロイメタデータ
├── static/            # すべての静的アセット
│   ├── assets/        # ハッシュ付きビルドアセット(CSS、JS)
│   ├── client/        # クライアントサイドバンドル
│   └── ...            # 公開ファイル、プリレンダリング HTML
└── server/
    └── .react-server/
        └── server/
            └── edge.mjs  # バンドルされたサーバ
<Link name="deploy"> ## デプロイ </Link>

CLIを使用して本番サーバを起動します:

bun --bun react-server start

ランタイムなしで直接起動することもできます:

bun --bun .bun/start.mjs

または --deploy フラグを使用してビルドと即時起動を行います:

pnpm react-server build [root] --deploy

生成された package.json のスクリプトを使用することもできます:

cd .bun
bun start
<Link name="deployment-targets"> ## デプロイ先 </Link>

Bun アダプタは自己完結型のサーバを生成するため、Bun が動作する場所ならどこでもデプロイできます:

  • ベアメタル / VPS: .bun/ ディレクトリをコピーして bun start.mjs を実行
  • Docker: 公式 Bun Docker イメージを使用
  • Fly.io: Dockerfile を使用して flyctl でデプロイ
  • Railway、Render: 起動コマンドを bun .bun/start.mjs に設定

Dockerfile の例

FROM oven/bun:latest
WORKDIR /app
COPY .bun/ .
EXPOSE 3000
CMD ["bun", "start.mjs"]