Cloudflare Workers
Cloudflare Workers 部署的环境变量配置
这种配置适用于具有全球分发和成本效益扩展的边缘计算。Cloudflare Workers 提供出色的性能,内置 CDN 和边缘计算功能。
🚀 核心应用设置
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
BETTER_AUTH_SECRET | Better Auth 会话加密的密钥 | your-32-character-secret-key | ✅ |
BETTER_AUTH_URL | 应用程序的基础URL | https://yourdomain.com | ✅ |
NEXT_PUBLIC_APP_URL | 客户端使用的公共URL | https://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_KEY | Resend 邮件服务的API密钥 | re_123456789 | ❌ |
RESEND_AUDIENCE_ID | 新闻简报功能的受众ID | aud_123456789 | ❌ |
如果需要开启账号密码登录功能,需要发送邮件来验证邮箱,那么需要设置 RESEND_API_KEY
。如果需要开启 newsletter 功能,需要设置 RESEND_AUDIENCE_ID
。
如果只开启社交媒体登录功能,不需要交易邮件或者 newsletter 功能,那么不需要设置 RESEND_API_KEY
和 RESEND_AUDIENCE_ID
。
更多关于 Email 相关的配置,请参考:
邮件
配置邮件模板和新闻简报功能以进行用户沟通。
🔐 OAuth 提供商设置
GitHub OAuth
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
GITHUB_CLIENT_ID | GitHub App 客户端ID | a629723d24c123456 | ❌ |
GITHUB_CLIENT_SECRET | GitHub App 客户端密钥 | abc123def456ghi789jkl012 | ❌ |
如果需要开启 GitHub 登录功能,那么需要设置 GITHUB_CLIENT_ID
和 GITHUB_CLIENT_SECRET
。
Google OAuth
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
GOOGLE_CLIENT_ID | Google OAuth 客户端ID | 123456789-abc123.apps.googleusercontent.com | ❌ |
GOOGLE_CLIENT_SECRET | Google OAuth 客户端密钥 | GOCSPX-abc123def456ghi789 | ❌ |
如果需要开启 Google 登录功能,那么需要设置 GOOGLE_CLIENT_ID
和 GOOGLE_CLIENT_SECRET
。
更多关于 OAuth 相关的配置,请参考:
身份验证
设置用户身份验证和授权,支持 OAuth 等多种提供商。
💳 支付集成 (Stripe)
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
STRIPE_SECRET_KEY | 服务器端操作的 Stripe 密钥 | sk_test_123... 或 sk_live_123... | ❌ |
STRIPE_WEBHOOK_SECRET | Stripe 事件的 Webhook 端点密钥 | whsec_123456789 | ❌ |
NEXT_PUBLIC_PRICE_ID_PRO_MONTHLY | 月度专业版计划的 Stripe 价格ID | price_123456789 | ❌ |
NEXT_PUBLIC_PRICE_ID_PRO_YEARLY | 年度专业版计划的 Stripe 价格ID | price_987654321 | ❌ |
NEXT_PUBLIC_PRICE_ID_LIFETIME | 终身计划的 Stripe 价格ID | price_555666777 | ❌ |
更多关于支付相关的配置,请参考:
支付
集成 Stripe 来处理支付和订阅,提供灵活的定价计划。
📁 存储配置
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
NEXT_PUBLIC_AVATARS_BUCKET_NAME | 头像上传的 S3 存储桶名称 | my-app-avatars | ❌ |
该配置需要和你在 S3 或者 Cloudflare R2 中配置的存储桶名称一致。
🌍 Cloudflare R2 配置
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
STORAGE_REGION | Cloudflare R2 区域 | auto | ❌ |
STORAGE_ACCESS_KEY_ID | Cloudflare R2 访问密钥 | xxx | ❌ |
STORAGE_SECRET_ACCESS_KEY | Cloudflare R2 密钥 | xxx | ❌ |
STORAGE_ENDPOINT | Cloudflare R2 端点 | https://xxx.r2.cloudflarestorage.com | ❌ |
存储
为您的应用程序资产和用户上传设置文件存储解决方案。
📊 分析配置
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
NEXT_PUBLIC_GOOGLE_ANALYTICS_ID | Google Analytics 网站ID | G-xxx | ❌ |
NEXT_PUBLIC_UMAMI_WEBSITE_ID | Umami Analytics 网站ID | xxx | ❌ |
NEXT_PUBLIC_UMAMI_SCRIPT_URL | Umami Analytics 脚本URL | https://xxx.js | ❌ |
NEXT_PUBLIC_PLAUSIBLE_DOMAIN | Plausible Analytics 域名 | xxx | ❌ |
NEXT_PUBLIC_PLAUSIBLE_SCRIPT_URL | Plausible Analytics 脚本URL | https://xxx.js | ❌ |
更多关于分析相关的配置,请参考:
分析
使用集成的分析解决方案跟踪用户行为和应用程序性能。
💰 联盟营销配置
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
NEXT_PUBLIC_AFFILIATE_AFFONSO_ID | Affonso 推广ID | xxx | ❌ |
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
中配置环境变量。