LogoLandingMore
开发指南

修改配置文件

配置文件的使用

环境变量配置说明

本项目使用环境变量来管理不同环境下的配置,确保开发和生产环境的安全性和灵活性。

环境文件说明

  • 开发环境.env.development - 本地开发时使用
  • 生产环境.env.production - 部署到 Cloudflare Workers 时使用

上传生产环境密钥

npx wrangler secret bulk .env.production

命令说明:

  • 作用:将 .env.production 文件中的环境变量批量上传到 Cloudflare Workers
  • 安全性:密钥会加密存储在 Cloudflare 中,不会暴露在代码中
  • 时机:每次修改生产环境配置后需要重新执行

配置项详解

请根据项目实际需求配置以下内容:

🌐 Web 信息配置

# -----------------------------------------------------------------------------
# Web Information - 网站基础信息
# -----------------------------------------------------------------------------
NEXT_PUBLIC_SITE_URL = "http://localhost:3000"     # 网站访问地址
NEXT_PUBLIC_PROJECT_NAME = "Template"              # 项目名称
NEXT_PUBLIC_SITE_EMAIL = "support@codekv.com"      # 网站联系邮箱

使用示例:

// 在组件中使用
<Text className="text-xs/normal text-gray-500">
  Any questions? Please feel free to reach us at {config.site.email}
</Text>

🔐 Better Auth 认证配置

# -----------------------------------------------------------------------------
# Auth with better-auth - 认证系统配置
# https://www.better-auth.com/
# -----------------------------------------------------------------------------
BETTER_AUTH_SECRET = ""  # 认证密钥,用于 JWT 签名和会话加密

密钥生成:

# 生成安全的随机密钥
openssl rand -base64 32

在代码中的应用:

export const auth = betterAuth({
  database: drizzleAdapter(db, {
    provider: "sqlite",
  }),
  secret: process.env.BETTER_AUTH_SECRET!,
  baseURL: process.env.NEXT_PUBLIC_SITE_URL!,
  session: {
    cookieCache: {
      enabled: true,
    },
  },
  // ... 其他配置
});

📱 社交登录配置

Google 登录

# -----------------------------------------------------------------------------
# Google Auth - Google 社交登录
# https://console.cloud.google.com/
# -----------------------------------------------------------------------------
GOOGLE_CLIENT_ID = ""      # Google OAuth 客户端 ID
GOOGLE_CLIENT_SECRET = ""  # Google OAuth 客户端密钥

GitHub 登录

# -----------------------------------------------------------------------------
# Github Auth - GitHub 社交登录
# https://github.com/settings/applications/new
# -----------------------------------------------------------------------------
GITHUB_CLIENT_ID = ""      # GitHub OAuth 应用 ID
GITHUB_CLIENT_SECRET = ""  # GitHub OAuth 应用密钥

在认证系统中的配置:

export const auth = betterAuth({
  // ... 其他配置
  socialProviders: {
    google: {
      clientId: process.env.GOOGLE_CLIENT_ID!,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
    },
    github: {
      clientId: process.env.GITHUB_CLIENT_ID!,
      clientSecret: process.env.GITHUB_CLIENT_SECRET!,
    },
  },
  // ... 其他配置
});

📧 邮件服务配置

# -----------------------------------------------------------------------------
# Resend - 邮件发送服务
# https://resend.com/
# -----------------------------------------------------------------------------
RESEND_API_KEY = ""        # Resend API 密钥
RESEND_SENDER_EMAIL = ""   # 发件人邮箱地址

邮件发送使用:

const prepareEmail = async (
  email: EmailParams
): Promise<CreateEmailOptions> => {
  return {
    from: `${config.site.name} <${process.env.RESEND_SENDER_EMAIL}>`,
    replyTo:
      email.replyTo ?? (email.to !== config.site.email ? email.to : undefined),
    to: email.to,
    subject: email.subject,
    react: email.react,
    text: await render(email.react, { plainText: true }),
  };
};

💳 支付系统配置

# -----------------------------------------------------------------------------
# Payment with Stripe - 支付服务
# Get your API keys from https://dashboard.stripe.com/apikeys
# -----------------------------------------------------------------------------
STRIPE_SECRET_KEY = ""                    # Stripe 服务端密钥
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY = ""   # Stripe 客户端公钥

配置说明:

  • STRIPE_SECRET_KEY:服务端使用,处理支付、退款等敏感操作
  • NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY:客户端使用,初始化 Stripe 组件

🛡️ 安全验证配置

# -----------------------------------------------------------------------------
# Turnstile - Cloudflare 人机验证
# https://www.cloudflare.com/application-services/products/turnstile/
# -----------------------------------------------------------------------------
TURNSTILE_SECRET_KEY = ""           # Turnstile 服务端密钥
NEXT_PUBLIC_TURNSTILE_SITE_KEY = "" # Turnstile 网站密钥

应用场景:

  • 表单提交防护
  • 登录注册验证
  • API 接口保护
  • 防止机器人攻击

配置最佳实践

1. 环境变量命名规范

  • NEXT_PUBLIC_*:客户端可访问的环境变量
  • 其他:仅服务端可访问的敏感信息

2. 安全注意事项

  • 不要在客户端暴露敏感密钥
  • 定期轮换 API 密钥
  • 使用强随机密钥生成器

3. 开发流程

  1. .env.development 中配置开发环境变量
  2. .env.production 中配置生产环境变量
  3. 使用 wrangler secret bulk 上传生产环境密钥
  4. 重新生成类型定义:pnpm cf-typegen