环境变量
为 Nuxt 模板配置环境变量与服务。
模板通过 Nuxt 的 runtimeConfig 配置所有服务。本页将每个环境变量映射到它的作用,
并说明是否必需。
runtime config 的工作方式
环境变量在 nuxt.config.ts 的 runtimeConfig 块中声明,并按约定填充:
NUXT_*填充仅服务端的键(例如NUXT_BETTER_AUTH_SECRET→runtimeConfig.betterAuthSecret),永远不会发送到浏览器。NUXT_PUBLIC_*填充runtimeConfig.public,并暴露给客户端(例如NUXT_PUBLIC_BASE_URL→runtimeConfig.public.baseUrl)。
在服务端通过 useRuntimeConfig() 读取它们。少数公共键在 nuxt.config.ts 中直接
读取 process.env 并带默认值 —— Creem 产品 ID 与 AI demo 开关 —— 因此即使未设置
也能解析。
只把可以安全发送到浏览器的值放在 NUXT_PUBLIC_* 下。密钥(认证密钥、API key、
webhook secret)必须保留在仅服务端的键上。
下表中每个变量标注为:
- 必需 —— 应用启动所需。
- 功能 —— 仅在启用某项功能时需要。
- 可选 —— 有合理默认值或很少更改。
应用
| 变量 | 范围 | 是否必需 | 说明 |
|---|---|---|---|
NUXT_PUBLIC_BASE_URL | public | 必需 | 应用基础 URL;驱动 Better Auth 的 baseURL/trustedOrigins 及支付回跳 URL。本地填 http://localhost:3000。 |
NUXT_PUBLIC_AI_PUBLIC_DEMO | public | 可选 | 为 "true" 时,AI 聊天/媒体路由允许匿名访问(托管演示)。不设置/false 则要求登录。 |
Better Auth
| 变量 | 范围 | 是否必需 | 说明 |
|---|---|---|---|
NUXT_BETTER_AUTH_SECRET | server | 必需 | 用于签名会话的密钥。可用 openssl rand -base64 32 生成。 |
NUXT_AUTH_EXTRA_TRUSTED_ORIGINS | server | 可选 | 逗号分隔的额外可信来源(如局域网测试)。在 server/utils/auth.ts 中直接从 process.env 读取。 |
数据库
| 变量 | 范围 | 是否必需 | 说明 |
|---|---|---|---|
NUXT_DATABASE_URL | server | 必需 | Drizzle 与 Drizzle Kit 使用的 PostgreSQL 连接字符串。 |
NUXT_ORM_PROVIDER | server | 可选 | 为未来的 ORM 选项预留;目前仅实现 drizzle。 |
邮件(Resend)
| 变量 | 范围 | 是否必需 | 说明 |
|---|---|---|---|
NUXT_RESEND_API_KEY | server | 功能 | Resend API key。验证、密码重置与联系邮件均需要它。未设置时,邮箱验证会阻止登录。 |
发件人/支持地址与模板见 邮件。
OAuth 提供商
四个均为功能变量 —— 设置某提供商的一对凭据即可启用其登录按钮;否则保持未设置 (并隐藏该按钮)。
| 变量 | 范围 | 说明 |
|---|---|---|
NUXT_GITHUB_CLIENT_ID | server | GitHub OAuth 客户端 ID。 |
NUXT_GITHUB_CLIENT_SECRET | server | GitHub OAuth 客户端密钥。 |
NUXT_GOOGLE_CLIENT_ID | server | Google OAuth 客户端 ID。 |
NUXT_GOOGLE_CLIENT_SECRET | server | Google OAuth 客户端密钥。 |
回调 URL 见 身份认证。
支付 —— ZPay
ZPay 是默认支付提供商;仅当 URL、商户 ID 与商户密钥全部设置时才会注册。
| 变量 | 范围 | 说明 |
|---|---|---|
NUXT_ZPAY_URL | server | ZPay 网关端点(例如 https://zpayz.cn/mapi.php)。 |
NUXT_ZPAY_MERCH_ID | server | 商户 ID。 |
NUXT_ZPAY_MERCH_KEY | server | 商户密钥,用于请求签名与回调验签。 |
NUXT_ZPAY_NOTIFY_URL | server | ZPay 通知的公开回调 URL。 |
支付 —— Creem
设置 NUXT_CREEM_API_KEY 后会注册 Creem。产品 ID 对应
app/config/price-config.ts 中的套餐(Free / Pro 月付+年付 / Lifetime)。
| 变量 | 范围 | 说明 |
|---|---|---|
NUXT_CREEM_SERVER_IDX | server | 服务器索引:0 = 生产,1 = 测试。 |
NUXT_CREEM_API_KEY | server | Creem API key。 |
NUXT_CREEM_WEBHOOK_SECRET | server | 用于验证 webhook 上 creem-signature 的密钥。 |
NUXT_CREEM_NOTIFY_URL | server | Creem 通知的公开回调 URL。 |
NUXT_PUBLIC_CREEM_PRODUCT_PRO_MONTHLY | public | Pro 月付套餐的 Creem 产品 ID。 |
NUXT_PUBLIC_CREEM_PRODUCT_PRO_YEARLY | public | Pro 年付套餐的 Creem 产品 ID。 |
NUXT_PUBLIC_CREEM_PRODUCT_LIFETIME | public | Lifetime 套餐的 Creem 产品 ID。 |
结账流程与 webhook 路径见 支付。
AI
| 变量 | 范围 | 是否必需 | 说明 |
|---|---|---|---|
NUXT_AI_GATEWAY_API_KEY | server | 功能 | server/api/chat.ts 使用的 Vercel AI Gateway 密钥。聊天经由 Gateway,而非直连 OpenAI。 |
NUXT_REPLICATE_API_TOKEN | server | 功能 | 用于图像/视频/音频生成的 Replicate token。仅在设置时注册 Replicate 提供商。 |
参见 AI 聊天 与 图像、视频与音频生成。
本地与生产
- 本地:
NUXT_PUBLIC_BASE_URL=http://localhost:3000。仅数据库与认证密钥是 启动所需;按需为每项功能添加服务密钥。 - 生产: 将
NUXT_PUBLIC_BASE_URL设为真实来源,使用稳定的NUXT_BETTER_AUTH_SECRET,将 OAuth 回调与支付通知 URL 指向生产域名,并确认NUXT_PUBLIC_AI_PUBLIC_DEMO未设置或为false,使 AI 路由要求登录。参见 部署。
