CastMatrix

Cloudflare について

カスタムドメイン・デプロイ構成

概要

CastMatrix は 同一オリジン構成 のみをサポートしています(API を別ドメインに分離する構成は想定していません)。
フロント(Pages)・管理画面(/cmm/)・API(/api/*)を 同じホスト名 から提供し、Service Binding で /api/* だけ Workers に転送します。

https://<ホスト>/
https://<ホスト>/cmm/*     → Cloudflare Pages(React 管理 SPA)
https://<ホスト>/api/*     → Cloudflare Workers(Hono API)

<ホスト> には次のいずれかを指定します。

フェーズ ホスト例 用途
Cloudflare 上での開発・検証 your-project.pages.dev フロント調整・クライアント確認(納品前
本番・納品 shop.example.com 最終公開 URL(推奨)

推奨フロー(購入者)

① ローカル(localhost)
   カスタマイズ・動作確認 — ライセンス認証不要

② Cloudflare(*.pages.dev)
   Pages デプロイ + Service Binding 設定 — ライセンス認証必須(初回オンボーディング)

③ 納品(カスタムドメイン)
   同一 Pages プロジェクトにドメイン追加(Service Binding はそのまま引き継ぎ)
   — ライセンス・管理者・DB データは引き継ぎ(再入力不要)

ライセンスの引き継ぎ

  • ライセンス状態は D1 の Site_Settings に保存されます(Gumroad への verify は初回のみ)。
  • *.pages.dev で activate 済みの場合、カスタムドメイン追加後も license_status=activated のまま 利用できます。
  • ドメイン移行後、初回 API アクセス時に license_domain が新ホスト名へ自動更新されます。
  • 同一 D1・同一 Worker を維持してください。別アカウントへ D1 を複製した場合は別ライセンス扱いになります。

Service Binding の設定(初回のみ・必須)

API を同一オリジンで動かすには Service Binding を Pages プロジェクトに設定します。
設定は 一度だけ で、pages.dev でもカスタムドメインでも引き続き有効です。
詳細な手順・なぜ必要か・エラー症状は 07-workers-route.md(購入後 ZIP 同梱) を参照してください。

設定手順

  1. Pages プロジェクト → Settings → Bindings → Add → Service binding
  2. Variable name: CASTMATRIX_API、Service: castmatrix-api、Environment: production
  3. Save → Pages を再デプロイ

カスタムドメイン接続手順

  1. Cloudflare で対象ドメインの DNS を管理する(ネームサーバーを Cloudflare に向ける)。
  2. Pages プロジェクトの Custom domains からドメインを追加する。
  3. 表示される DNS レコード(CNAME 等)を設定する。
  4. 証明書の発行完了を待ち、https:// でアクセスできることを確認する。
  5. Service Binding は自動的にカスタムドメインでも有効(追加設定不要)。

環境変数

  • PUBLIC_API_BASE空のまま(同一オリジン /api)で運用してください。
  • 管理 SPA も /api 相対パスで API を呼ぶため、追加の API ベース URL 設定は不要です。

注意事項

  • 年齢確認はルート / に配置されます。ドメイン直下が年齢確認ページになります。
  • 管理画面の JWT は localStorage に保存されます。ドメイン変更後は再ログインが必要です(ライセンス自体の再入力は不要)。
  • 顧客向けお気に入り(localStorage)もオリジン単位のため、ドメイン変更後は引き継がれません。
  • API を別サブドメイン(例: api.example.com)に分離する構成は 非推奨 です(CORS・Cookie・ライセンス Host の整合が崩れます)。