CastMatrix

Cloudflare について

環境変数・シークレット

概要

Workers / Pages で設定する環境変数と Wrangler シークレットの一覧です。
API キーや JWT シークレットをソースコードにハードコードしないでください。

Feature Toggle

変数名 説明
ENABLE_CLOUDFLARE_IMAGES true / false 画像最適化(Images)の利用
ENABLE_CLOUDFLARE_STREAM true / false 動画ストリーミング(Stream)の利用

詳細: 04-feature-toggles.md

認証

変数名 説明
JWT_SECRET 管理 API 用 JWT 署名キー(十分な長さのランダム文字列)

ライセンス認証(Gumroad)

変数名 種別 必須 説明
GUMROAD_PRODUCT_ID Var Cloudflare デプロイ時 Gumroad の Product ID(ZIP 同梱の wrangler.toml に設定)
ENVIRONMENT Var 推奨 本番: production。ローカル dev のみ development(下記)

初回セットアップ時に購入者が入力する ライセンスキーGUMROAD_PRODUCT_ID で Gumroad License Verify API に照合します。

ライセンスが必要な環境

環境 ライセンス
ローカル(wrangler dev + api/.dev.vars 不要
Cloudflare 上(*.pages.dev 含む) 必須
カスタムドメイン本番 必須

ローカルでは api/.dev.vars に以下を設定します(wrangler dev が自動読込。Git には含めません)。

# api/.dev.vars(ローカル専用。api/.dev.vars.example をコピー)
ENVIRONMENT=development

ENVIRONMENT=development のとき、および localhost / 127.0.0.1 / ::1(IPv6 ループバック)/ *.local からのアクセスはライセンスチェックをスキップします。
Cloudflare 上(pages.dev・カスタムドメイン)ではスキップされません。

ストレージ(Toggle や構成に応じて)

変数名 説明
R2 バケット名 Wrangler バインディングで指定(wrangler.toml
Images / Stream API トークン Toggle ON 時、Cloudflare API 呼び出し用

全変数一覧(Workers)

変数名 種別 必須 説明
JWT_SECRET Secret はい JWT 署名キー。十分な長さのランダム文字列
GUMROAD_PRODUCT_ID Var Cloudflare デプロイ時 Gumroad の Product ID
ENVIRONMENT Var 推奨 本番 production / ローカル development
ENABLE_CLOUDFLARE_IMAGES Var はい true / false
ENABLE_CLOUDFLARE_STREAM Var はい true / false
R2_PUBLIC_DOMAIN Var 本番は必須 R2 公開 URL(例: https://pub-XXXX.r2.dev)。未設定・プレースホルダー時は /api/public/media/* プロキシにフォールバック
CF_IMAGES_DOMAIN Var Images ON 時 例: https://imagedelivery.net/YOUR_HASH
CF_ACCOUNT_ID Var Images/Stream ON 時 Cloudflare アカウント ID
CF_IMAGES_TOKEN Secret Images ON 時 Cloudflare API トークン(Images 権限)
CF_STREAM_TOKEN Secret Stream ON 時 Cloudflare API トークン(Stream 権限)
DB Binding はい D1 バインディング(wrangler.toml で設定)
R2_BUCKET Binding はい R2 バインディング(wrangler.toml で設定)

設定方法

# Workers シークレット(本番)
wrangler secret put JWT_SECRET --name castmatrix-api
wrangler secret put CF_IMAGES_TOKEN --name castmatrix-api   # Images ON 時
wrangler secret put CF_STREAM_TOKEN --name castmatrix-api   # Stream ON 時

GUMROAD_PRODUCT_IDENVIRONMENTapi/wrangler.toml[vars] で設定します。

[vars]
GUMROAD_PRODUCT_ID = "your-gumroad-product-id"
ENVIRONMENT = "production"

Pages の PUBLIC_API_BASE空のまま(同一オリジン /api)で運用してください。詳細: 09-custom-domain.md

フロントエンド(Pages / ローカル)

変数名 ローカル dev 本番(Cloudflare)
PUBLIC_API_BASE 未設定で可(getApiBase()http://localhost:8787 を使用) 空のまま(同一オリジン。Service Binding 必須)

ローカルでは frontend/.env がなくても動作します。astro.config.mjs/api を Workers へプロキシします。

注意事項

  • .env / .dev.vars は Git にコミットしないでください。
  • 本番 Workers に ENVIRONMENT=development を設定しないでください(ライセンスがスキップされます)。

api/.dev.vars.example

# ローカル開発用。cp api/.dev.vars.example api/.dev.vars
ENVIRONMENT=development
JWT_SECRET=local-dev-secret-change-in-production

api/.env.example の内容

# Wrangler secrets — set with: wrangler secret put <NAME>
JWT_SECRET=change-this-to-a-long-random-secret

# Required when ENABLE_CLOUDFLARE_IMAGES=true
CF_IMAGES_TOKEN=

# Required when ENABLE_CLOUDFLARE_STREAM=true
CF_STREAM_TOKEN=

# Set in wrangler.toml [vars] — edit there, not here
# ENABLE_CLOUDFLARE_IMAGES=false
# ENABLE_CLOUDFLARE_STREAM=false
# R2_PUBLIC_DOMAIN=https://pub-XXXX.r2.dev
# GUMROAD_PRODUCT_ID=
# ENVIRONMENT=production