环境变量

为 Nuxt 模板配置环境变量与服务。

模板通过 Nuxt 的 runtimeConfig 配置所有服务。本页将每个环境变量映射到它的作用, 并说明是否必需。

runtime config 的工作方式

环境变量在 nuxt.config.tsruntimeConfig 块中声明,并按约定填充:

  • NUXT_* 填充仅服务端的键(例如 NUXT_BETTER_AUTH_SECRETruntimeConfig.betterAuthSecret),永远不会发送到浏览器。
  • NUXT_PUBLIC_* 填充 runtimeConfig.public,并暴露给客户端(例如 NUXT_PUBLIC_BASE_URLruntimeConfig.public.baseUrl)。

在服务端通过 useRuntimeConfig() 读取它们。少数公共键在 nuxt.config.ts 中直接 读取 process.env 并带默认值 —— Creem 产品 ID 与 AI demo 开关 —— 因此即使未设置 也能解析。

只把可以安全发送到浏览器的值放在 NUXT_PUBLIC_* 下。密钥(认证密钥、API key、 webhook secret)必须保留在仅服务端的键上。

下表中每个变量标注为:

  • 必需 —— 应用启动所需。
  • 功能 —— 仅在启用某项功能时需要。
  • 可选 —— 有合理默认值或很少更改。

应用

变量范围是否必需说明
NUXT_PUBLIC_BASE_URLpublic必需应用基础 URL;驱动 Better Auth 的 baseURL/trustedOrigins 及支付回跳 URL。本地填 http://localhost:3000
NUXT_PUBLIC_AI_PUBLIC_DEMOpublic可选"true" 时,AI 聊天/媒体路由允许匿名访问(托管演示)。不设置/false 则要求登录。

Better Auth

变量范围是否必需说明
NUXT_BETTER_AUTH_SECRETserver必需用于签名会话的密钥。可用 openssl rand -base64 32 生成。
NUXT_AUTH_EXTRA_TRUSTED_ORIGINSserver可选逗号分隔的额外可信来源(如局域网测试)。在 server/utils/auth.ts 中直接从 process.env 读取。

数据库

变量范围是否必需说明
NUXT_DATABASE_URLserver必需Drizzle 与 Drizzle Kit 使用的 PostgreSQL 连接字符串。
NUXT_ORM_PROVIDERserver可选为未来的 ORM 选项预留;目前仅实现 drizzle

邮件(Resend)

变量范围是否必需说明
NUXT_RESEND_API_KEYserver功能Resend API key。验证、密码重置与联系邮件均需要它。未设置时,邮箱验证会阻止登录。

发件人/支持地址与模板见 邮件

OAuth 提供商

四个均为功能变量 —— 设置某提供商的一对凭据即可启用其登录按钮;否则保持未设置 (并隐藏该按钮)。

变量范围说明
NUXT_GITHUB_CLIENT_IDserverGitHub OAuth 客户端 ID。
NUXT_GITHUB_CLIENT_SECRETserverGitHub OAuth 客户端密钥。
NUXT_GOOGLE_CLIENT_IDserverGoogle OAuth 客户端 ID。
NUXT_GOOGLE_CLIENT_SECRETserverGoogle OAuth 客户端密钥。

回调 URL 见 身份认证

支付 —— ZPay

ZPay 是默认支付提供商;仅当 URL、商户 ID 与商户密钥全部设置时才会注册。

变量范围说明
NUXT_ZPAY_URLserverZPay 网关端点(例如 https://zpayz.cn/mapi.php)。
NUXT_ZPAY_MERCH_IDserver商户 ID。
NUXT_ZPAY_MERCH_KEYserver商户密钥,用于请求签名与回调验签。
NUXT_ZPAY_NOTIFY_URLserverZPay 通知的公开回调 URL。

支付 —— Creem

设置 NUXT_CREEM_API_KEY 后会注册 Creem。产品 ID 对应 app/config/price-config.ts 中的套餐(Free / Pro 月付+年付 / Lifetime)。

变量范围说明
NUXT_CREEM_SERVER_IDXserver服务器索引:0 = 生产,1 = 测试。
NUXT_CREEM_API_KEYserverCreem API key。
NUXT_CREEM_WEBHOOK_SECRETserver用于验证 webhook 上 creem-signature 的密钥。
NUXT_CREEM_NOTIFY_URLserverCreem 通知的公开回调 URL。
NUXT_PUBLIC_CREEM_PRODUCT_PRO_MONTHLYpublicPro 月付套餐的 Creem 产品 ID。
NUXT_PUBLIC_CREEM_PRODUCT_PRO_YEARLYpublicPro 年付套餐的 Creem 产品 ID。
NUXT_PUBLIC_CREEM_PRODUCT_LIFETIMEpublicLifetime 套餐的 Creem 产品 ID。

结账流程与 webhook 路径见 支付

AI

变量范围是否必需说明
NUXT_AI_GATEWAY_API_KEYserver功能server/api/chat.ts 使用的 Vercel AI Gateway 密钥。聊天经由 Gateway,而非直连 OpenAI。
NUXT_REPLICATE_API_TOKENserver功能用于图像/视频/音频生成的 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 路由要求登录。参见 部署

相关页面

On this page