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 同梱) を参照してください。
設定手順
- Pages プロジェクト → Settings → Bindings → Add → Service binding
- Variable name:
CASTMATRIX_API、Service:castmatrix-api、Environment:production - Save → Pages を再デプロイ
カスタムドメイン接続手順
- Cloudflare で対象ドメインの DNS を管理する(ネームサーバーを Cloudflare に向ける)。
- Pages プロジェクトの Custom domains からドメインを追加する。
- 表示される DNS レコード(CNAME 等)を設定する。
- 証明書の発行完了を待ち、
https://でアクセスできることを確認する。 - Service Binding は自動的にカスタムドメインでも有効(追加設定不要)。
環境変数
PUBLIC_API_BASEは 空のまま(同一オリジン/api)で運用してください。- 管理 SPA も
/api相対パスで API を呼ぶため、追加の API ベース URL 設定は不要です。
注意事項
- 年齢確認はルート
/に配置されます。ドメイン直下が年齢確認ページになります。 - 管理画面の JWT は
localStorageに保存されます。ドメイン変更後は再ログインが必要です(ライセンス自体の再入力は不要)。 - 顧客向けお気に入り(
localStorage)もオリジン単位のため、ドメイン変更後は引き継がれません。 - API を別サブドメイン(例:
api.example.com)に分離する構成は 非推奨 です(CORS・Cookie・ライセンス Host の整合が崩れます)。