CastMatrix

Cloudflare について

Cloudflare リソース作成

概要

CastMatrix が利用する Cloudflare サービスと、作成するリソースの一覧です。

作成するリソース

サービス 用途
Cloudflare Pages Astro フロント + React 管理 SPA(同一プロジェクト、/cmm/*
Cloudflare Workers Hono API(/api/public/*, /api/cmm/*
Cloudflare D1 リレーショナル DB(キャスト・スケジュール等)
Cloudflare R2 画像・動画のオブジェクトストレージ
Cloudflare Images 任意 — WebP 変換・リサイズ(Toggle ON 時)
Cloudflare Stream 任意 — 動画エンコード・HLS 配信(Toggle ON 時)

手順(概略)

  1. Pages で *.pages.dev にデプロイしフロント開発・検証を行う(Service Binding で /api/* を接続)。
  2. 準備ができたらカスタムドメインを Pages に追加する(Service Binding・ライセンスは同一 D1 のまま引き継ぎ)。
  3. D1 データベースを作成し、Workers バインディング用の ID を控える。
  4. R2 バケットを作成し、CORS・公開アクセス方針を設定する。
  5. Workers プロジェクトを作成し、D1 / R2 バインディングを wrangler.toml に記載する。
  6. Pages プロジェクトを作成し、ビルドコマンド・出力ディレクトリを設定する。

詳細: 09-custom-domain.md / 06-deploy-wrangler.md(購入後 ZIP 同梱)

注意事項

  • Images / Stream は有料です。不要な場合は Feature Toggle を OFF にしてください。
  • API と Pages は同一アカウント内で連携させます。

wrangler.toml 設定例(api/wrangler.toml)

name = "castmatrix-api"
main = "src/index.ts"
compatibility_date = "2024-11-12"
compatibility_flags = ["nodejs_compat"]

[[d1_databases]]
binding = "DB"
database_name = "castmatrix-db"
database_id = "YOUR_D1_DATABASE_ID"   # ← Dashboard で確認
migrations_dir = "../migrations"

[[r2_buckets]]
binding = "R2_BUCKET"
bucket_name = "castmatrix-media"

[vars]
ENABLE_CLOUDFLARE_IMAGES = "false"
ENABLE_CLOUDFLARE_STREAM = "false"
R2_PUBLIC_DOMAIN = "https://pub-XXXX.r2.dev"
CF_IMAGES_DOMAIN = "https://imagedelivery.net/YOUR_ACCOUNT_HASH"
CF_ACCOUNT_ID = "YOUR_CLOUDFLARE_ACCOUNT_ID"

D1 の database_idwrangler d1 create castmatrix-db 実行後、または Dashboard の Workers & Pages → D1 で確認できます。

Cloudflare Pages ビルド設定

項目
ビルドコマンド pnpm run build:frontend
出力ディレクトリ frontend/dist
ルートディレクトリ (空白 = リポジトリルート)

リポジトリルートの pnpm-lock.yaml があると、Pages は pnpm を自動選択します(Node.js 20 以上推奨)。
ビルド前に依存を入れる必要がある場合は corepack enable && pnpm install --frozen-lockfile && pnpm run build:frontend としても構いません。