Cloudflare について
環境変数・シークレット
概要
Workers / Pages で設定する環境変数と Wrangler シークレットの一覧です。
API キーや JWT シークレットをソースコードにハードコードしないでください。
Feature Toggle
| 変数名 | 値 | 説明 |
|---|---|---|
ENABLE_CLOUDFLARE_IMAGES |
true / false |
画像最適化(Images)の利用 |
ENABLE_CLOUDFLARE_STREAM |
true / false |
動画ストリーミング(Stream)の利用 |
認証
| 変数名 | 説明 |
|---|---|
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_ID と ENVIRONMENT は api/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