Sistine Starter

环境配置

配置 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 密钥:

  1. 访问 火山引擎控制台
  2. 创建 API 密钥
  3. 复制密钥到环境变量

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 凭据:

  1. 访问 Creem Dashboard
  2. 在设置中获取 API 密钥
  3. 配置 Webhook URL

Resend 邮件

# Resend API 密钥
RESEND_API_KEY="re_..."

# 发件邮箱地址
RESEND_FROM_EMAIL="Your App <noreply@yourdomain.com>"

# 已验证的域名(生产环境必需)
RESEND_VERIFIED_DOMAIN="yourdomain.com"

获取 Resend 凭据:

  1. 访问 Resend
  2. 创建 API 密钥
  3. 验证你的发件域名

应用 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"

配置步骤:

  1. 访问 Google Cloud Console
  2. 创建 OAuth 2.0 凭据
  3. 配置授权重定向 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

如果缺少必需的环境变量,你会看到错误提示。

安全建议

  1. 永远不要提交 .env.local 到 Git
  2. 使用强密钥: 所有密钥至少 32 字符
  3. 定期轮换: 定期更换生产环境的密钥
  4. 分离环境: 开发和生产使用不同的密钥
  5. 限制访问: 只有必要的人员才能访问生产环境变量

下一步