Logo文档
环境设置

Cloudflare Workers

Cloudflare Workers 部署的环境变量配置

这种配置适用于具有全球分发和成本效益扩展的边缘计算。Cloudflare Workers 提供出色的性能,内置 CDN 和边缘计算功能。

🚀 核心应用设置

变量描述示例必需
BETTER_AUTH_SECRETBetter Auth 会话加密的密钥your-32-character-secret-key
BETTER_AUTH_URL应用程序的基础URLhttps://yourdomain.com
NEXT_PUBLIC_APP_URL客户端使用的公共URLhttps://yourdomain.com

BETTER_AUTH_SECRET 是一个随机字符串,用于加密和生成哈希值,你可以使用以下命令生成一个 32 位安全的密钥:

# 执行命令生成一个 32 位安全的密钥
openssl rand -base64 32

Cloudflare Workers 和 Next.js 的核心配置基本一致,除了数据库的配置,因为 Cloudflare Workers 直接内置了 D1 数据库连接,所以不需要配置 DATABASE_URL

如果你需要使用 PostgreSQL 或者其它数据库,那么需要配置 DATABASE_URL 和修改相关代码,你可以参考 Next.js 部署 中的配置。

更多的 D1 数据库配置,请参考:

Cloudflare D1

使用 Drizzle ORM 设置您的 Cloudflare D1 数据库。

📧 邮件配置

变量描述示例必需
RESEND_API_KEYResend 邮件服务的API密钥re_123456789
RESEND_AUDIENCE_ID新闻简报功能的受众IDaud_123456789

如果需要开启账号密码登录功能,需要发送邮件来验证邮箱,那么需要设置 RESEND_API_KEY。如果需要开启 newsletter 功能,需要设置 RESEND_AUDIENCE_ID

如果只开启社交媒体登录功能,不需要交易邮件或者 newsletter 功能,那么不需要设置 RESEND_API_KEYRESEND_AUDIENCE_ID

更多关于 Email 相关的配置,请参考:

邮件

配置邮件模板和新闻简报功能以进行用户沟通。

🔐 OAuth 提供商设置

GitHub OAuth

变量描述示例必需
GITHUB_CLIENT_IDGitHub App 客户端IDa629723d24c123456
GITHUB_CLIENT_SECRETGitHub App 客户端密钥abc123def456ghi789jkl012

如果需要开启 GitHub 登录功能,那么需要设置 GITHUB_CLIENT_IDGITHUB_CLIENT_SECRET

Google OAuth

变量描述示例必需
GOOGLE_CLIENT_IDGoogle OAuth 客户端ID123456789-abc123.apps.googleusercontent.com
GOOGLE_CLIENT_SECRETGoogle OAuth 客户端密钥GOCSPX-abc123def456ghi789

如果需要开启 Google 登录功能,那么需要设置 GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET

更多关于 OAuth 相关的配置,请参考:

身份验证

设置用户身份验证和授权,支持 OAuth 等多种提供商。

💳 支付集成 (Stripe)

变量描述示例必需
STRIPE_SECRET_KEY服务器端操作的 Stripe 密钥sk_test_123...sk_live_123...
STRIPE_WEBHOOK_SECRETStripe 事件的 Webhook 端点密钥whsec_123456789
NEXT_PUBLIC_PRICE_ID_PRO_MONTHLY月度专业版计划的 Stripe 价格IDprice_123456789
NEXT_PUBLIC_PRICE_ID_PRO_YEARLY年度专业版计划的 Stripe 价格IDprice_987654321
NEXT_PUBLIC_PRICE_ID_LIFETIME终身计划的 Stripe 价格IDprice_555666777

更多关于支付相关的配置,请参考:

支付

集成 Stripe 来处理支付和订阅,提供灵活的定价计划。

📁 存储配置

变量描述示例必需
NEXT_PUBLIC_AVATARS_BUCKET_NAME头像上传的 S3 存储桶名称my-app-avatars

该配置需要和你在 S3 或者 Cloudflare R2 中配置的存储桶名称一致。

🌍 Cloudflare R2 配置

变量描述示例必需
STORAGE_REGIONCloudflare R2 区域auto
STORAGE_ACCESS_KEY_IDCloudflare R2 访问密钥xxx
STORAGE_SECRET_ACCESS_KEYCloudflare R2 密钥xxx
STORAGE_ENDPOINTCloudflare R2 端点https://xxx.r2.cloudflarestorage.com

存储

为您的应用程序资产和用户上传设置文件存储解决方案。

📊 分析配置

变量描述示例必需
NEXT_PUBLIC_GOOGLE_ANALYTICS_IDGoogle Analytics 网站IDG-xxx
NEXT_PUBLIC_UMAMI_WEBSITE_IDUmami Analytics 网站IDxxx
NEXT_PUBLIC_UMAMI_SCRIPT_URLUmami Analytics 脚本URLhttps://xxx.js
NEXT_PUBLIC_PLAUSIBLE_DOMAINPlausible Analytics 域名xxx
NEXT_PUBLIC_PLAUSIBLE_SCRIPT_URLPlausible Analytics 脚本URLhttps://xxx.js

更多关于分析相关的配置,请参考:

分析

使用集成的分析解决方案跟踪用户行为和应用程序性能。

💰 联盟营销配置

变量描述示例必需
NEXT_PUBLIC_AFFILIATE_AFFONSO_IDAffonso 推广IDxxx

NEXT_PUBLIC_AFFILIATE_AFFONSO_ID 是 Affonso 推广ID,用于跟踪推广效果。

更多关于推广相关的配置,请参考:

推广

集成 Affonso 来处理推广效果。

📝 .env 文件示例

BETTER_AUTH_SECRET=
BETTER_AUTH_URL=http://localhost:3000
NEXT_PUBLIC_APP_URL=http://localhost:3000

# ---------Email----------
RESEND_API_KEY=
RESEND_AUDIENCE_ID=

# ---------Auth----------
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET

# ---------Payment----------
STRIPE_SECRET_KEY=sk_test_
STRIPE_WEBHOOK_SECRET=whsec_
NEXT_PUBLIC_PRICE_ID_PRO_MONTHLY=price_
NEXT_PUBLIC_PRICE_ID_PRO_YEARLY=price_
NEXT_PUBLIC_PRICE_ID_LIFETIME=price_

# ---------Storage----------

NEXT_PUBLIC_AVATARS_BUCKET_NAME=nextdevkit-avatars

# Clouflare R2
STORAGE_REGION=auto
STORAGE_ACCESS_KEY_ID=
STORAGE_SECRET_ACCESS_KEY=
STORAGE_ENDPOINT=https://xxx.r2.cloudflarestorage.com

# ---------Analytics----------

NEXT_PUBLIC_GOOGLE_ANALYTICS_ID=G-xxx

# Umami Analytics
NEXT_PUBLIC_UMAMI_WEBSITE_ID=
NEXT_PUBLIC_UMAMI_SCRIPT_URL=

# Plausible Analytics
NEXT_PUBLIC_PLAUSIBLE_DOMAIN=
NEXT_PUBLIC_PLAUSIBLE_SCRIPT_URL=

# ---------Affiliate----------
NEXT_PUBLIC_AFFILIATE_AFFONSO_ID=

🛠️ 开发环境 vs 生产环境

开发环境

  • 本地URL使用 http://localhost:3000
  • 使用 Stripe 测试密钥(以 sk_test_ 开头)
  • OAuth 重定向URI应指向 localhost

生产环境

  • 所有URL使用实际域名
  • 使用 Stripe 生产密钥(以 sk_live_ 开头)
  • 为 OAuth 提供商配置生产重定向URI
  • 确保所有密钥都得到适当保护并定期轮换

生产环境变量只需要配置一份,在 .env.production 中,或者在 wrangler.jsonc 中配置都行。

如果你是本地直接 deploy 的方式部署,可以选择直接使用 .env.production 中的配置即可,不需要在 wrangler.jsonc 中配置。

如果你是团队需要搭建 pipeline 的方式 CICD 的形式部署,则可以考虑将生产环境的 env 放在 wrangler.jsonc 中,然后将 secret 等放到例如 github secret 这种方式进行部署。

我自己因为为了方便,一般直接在本地创建一个 .env.production 的文件,将生产环境的环境变量直接放到里面,运行 deploy 命令,没有在 wrangler.jsonc 中配置环境变量。