Logo文档
环境设置

SST AWS

SST AWS 部署的环境变量配置

这种配置适用于具有 AWS 服务和合规要求的企业级基础设施。SST 提供基础设施即代码,支持 AWS Lambda、RDS、S3 和其他 AWS 服务。

🚀 核心应用设置

变量描述示例必需
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

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

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

📧 邮件配置

变量描述示例必需
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

AWS SST 的 S3 无需配置环境变量,直接使用 SST 中创建的 AWS S3 服务。

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

存储

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

📊 分析配置

变量描述示例必需
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 来处理推广效果。

Cloudflare DNS 配置

变量描述示例必需
CLOUDFLARE_API_TOKENCloudflare API 令牌xxx
CLOUDFLARE_DEFAULT_ACCOUNT_IDCloudflare 账户IDxxx

如果你使用 Cloudflare 的 DNS 服务,那么需要配置 CLOUDFLARE_API_TOKENCLOUDFLARE_DEFAULT_ACCOUNT_ID

如果你使用 AWS 的 Route 53 服务,那么不需要配置 CLOUDFLARE_API_TOKENCLOUDFLARE_DEFAULT_ACCOUNT_ID。只需要在 sst.config.ts 中配置 domain 即可。

📝 .env 文件示例

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=

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_

# ---------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=

# Optional for Cloudflare dns
CLOUDFLARE_API_TOKEN=
CLOUDFLARE_DEFAULT_ACCOUNT_ID=

🛠️ 开发环境 vs 生产环境

开发环境

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

生产环境

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

密钥管理

您可以使用 sst secret 命令来管理生产环境密钥。

npx sst secret set BETTER_AUTH_SECRET xxx
npx sst secret set STRIPE_SECRET_KEY xxx
npx sst secret set RESEND_API_KEY xxx