环境配置
配置 Sistine Starter 的环境变量
环境配置
Sistine Starter 使用环境变量来管理不同环境(开发/生产)的配置。本指南详细说明了所有可用的环境变量。
环境变量文件
项目支持以下环境变量文件(优先级从高到低):
.env.local
- 本地开发配置(不应提交到 Git).env.production
- 生产环境配置.env
- 默认配置(可提交到 Git)
推荐使用 .env.local
进行本地开发。
必需的环境变量
以下环境变量是运行应用所必需的:
数据库
# PostgreSQL 数据库连接字符串
DATABASE_URL="postgresql://user:password@host:5432/database?sslmode=require"
获取数据库:
- Neon - 无服务器 PostgreSQL(推荐)
Better Auth
# 至少 32 字符的随机密钥,用于加密 session 和 token
BETTER_AUTH_SECRET="your-super-secret-key-min-32-chars"
# 应用的基础 URL
BETTER_AUTH_URL="http://localhost:3000" # 开发环境
# BETTER_AUTH_URL="https://yourdomain.com" # 生产环境
生成安全的密钥:
# 使用 OpenSSL
openssl rand -base64 32
# 或使用 Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
火山引擎 (AI 功能)
# 火山引擎 API 密钥
VOLCANO_ENGINE_API_KEY="your-volcano-engine-api-key"
# API 端点 (默认为北京区域)
VOLCANO_ENGINE_API_URL="https://ark.cn-beijing.volces.com/api/v3"
获取 API 密钥:
- 访问 火山引擎控制台
- 创建 API 密钥
- 复制密钥到环境变量
Creem 支付
# Creem API 密钥
CREEM_API_KEY="your-creem-api-key"
# Webhook 密钥(用于验证 webhook 签名)
CREEM_WEBHOOK_SECRET="whsec_..."
# API 基础 URL(默认为 https://api.creem.io)
CREEM_API_BASE="https://api.creem.io"
获取 Creem 凭据:
- 访问 Creem Dashboard
- 在设置中获取 API 密钥
- 配置 Webhook URL
Resend 邮件
# Resend API 密钥
RESEND_API_KEY="re_..."
# 发件邮箱地址
RESEND_FROM_EMAIL="Your App <noreply@yourdomain.com>"
# 已验证的域名(生产环境必需)
RESEND_VERIFIED_DOMAIN="yourdomain.com"
获取 Resend 凭据:
- 访问 Resend
- 创建 API 密钥
- 验证你的发件域名
应用 URL
# 应用的公开 URL(用于邮件链接、回调等)
NEXT_PUBLIC_APP_URL="http://localhost:3000" # 开发环境
# NEXT_PUBLIC_APP_URL="https://yourdomain.com" # 生产环境
可选的环境变量
Google OAuth(可选)
如果你想启用 Google 登录:
# Google OAuth 客户端 ID
AUTH_GOOGLE_ID="your-google-client-id.apps.googleusercontent.com"
# Google OAuth 客户端密钥
AUTH_GOOGLE_SECRET="your-google-client-secret"
配置步骤:
- 访问 Google Cloud Console
- 创建 OAuth 2.0 凭据
- 配置授权重定向 URI:
http://localhost:3000/api/auth/callback/google
定时任务认证(可选)
用于保护定时任务端点:
# Bearer Token 认证
CRON_SECRET="your-cron-secret-token"
# 或使用 Basic Auth
CRON_JOBS_USERNAME="admin"
CRON_JOBS_PASSWORD="your-password"
测试模式(可选)
# 启用 Creem 模拟模式(跳过实际支付)
CREEM_SIMULATE="true"
分析工具(可选)
# PostHog 分析
NEXT_PUBLIC_POSTHOG_KEY="phc_..."
NEXT_PUBLIC_POSTHOG_HOST="https://app.posthog.com"
# Google Analytics
NEXT_PUBLIC_GOOGLE_ANALYTICS_ID="G-..."
# Microsoft Clarity
NEXT_PUBLIC_CLARITY_PROJECT_ID="..."
S3 存储(可选)
如果需要文件上传功能:
STORAGE_ENDPOINT="https://s3.amazonaws.com"
STORAGE_REGION="us-east-1"
STORAGE_BUCKET="your-bucket-name"
STORAGE_ACCESS_KEY="your-access-key"
STORAGE_SECRET_KEY="your-secret-key"
其他配置
# Better Auth 信任的源(多个用逗号分隔)
BETTER_AUTH_TRUSTED_ORIGINS="http://localhost:3000,https://yourdomain.com"
# 应用名称
NEXT_PUBLIC_APP_NAME="Sistine AI"
# Resend 发件人名称
RESEND_FROM_NAME="Sistine AI"
环境变量模板
完整的 .env.local
模板:
# 数据库
DATABASE_URL="postgresql://user:password@host:5432/database?sslmode=require"
# Better Auth
BETTER_AUTH_SECRET="your-super-secret-key-min-32-chars"
BETTER_AUTH_URL="http://localhost:3000"
# Google OAuth (可选)
AUTH_GOOGLE_ID="your-google-client-id"
AUTH_GOOGLE_SECRET="your-google-client-secret"
# 火山引擎
VOLCANO_ENGINE_API_KEY="your-volcano-engine-api-key"
VOLCANO_ENGINE_API_URL="https://ark.cn-beijing.volces.com/api/v3"
# Creem 支付
CREEM_API_KEY="your-creem-api-key"
CREEM_WEBHOOK_SECRET="whsec_..."
CREEM_SIMULATE="true" # 开发环境启用
# Resend 邮件
RESEND_API_KEY="re_..."
RESEND_FROM_EMAIL="Your App <noreply@yourdomain.com>"
RESEND_VERIFIED_DOMAIN="yourdomain.com"
# 应用 URL
NEXT_PUBLIC_APP_URL="http://localhost:3000"
# 定时任务 (可选)
CRON_SECRET="your-cron-secret"
# 分析工具 (可选)
# NEXT_PUBLIC_POSTHOG_KEY="phc_..."
# NEXT_PUBLIC_GOOGLE_ANALYTICS_ID="G-..."
# NEXT_PUBLIC_CLARITY_PROJECT_ID="..."
验证配置
启动开发服务器时,脚本会自动检查必需的环境变量:
pnpm dev
如果缺少必需的环境变量,你会看到错误提示。
安全建议
- 永远不要提交
.env.local
到 Git - 使用强密钥: 所有密钥至少 32 字符
- 定期轮换: 定期更换生产环境的密钥
- 分离环境: 开发和生产使用不同的密钥
- 限制访问: 只有必要的人员才能访问生产环境变量