环境变量
Nexus 通过项目根目录的 .env 注入配置。以下清单与主项目的 .env.example 保持同步;变量名以 NUXT_ 开头的配置会被 Nuxt runtimeConfig 使用,数据库连接同时供 Drizzle Kit 使用。
修改
.env后需要重启应用容器。生产环境不要把包含密钥的.env提交到 Git。
当前只有 App Only 的 docker-compose.yml 完整读取 .env。docker-compose-full.yml 修正前不要依据本页配置进行生产部署。
数据库
| 变量 | 默认/示例 | 说明 |
|---|---|---|
NUXT_DATABASE_URL | postgresql://root:123456@localhost:5432/nexus | PostgreSQL 连接串,Nuxt runtimeConfig 与 Drizzle Kit 共用。生产环境应使用独立数据库和受控账号。 |
NUXT_DATABASE_POOL_MAX | 20 | 数据库连接池上限。多进程部署时需确保「进程数 × 此值」小于 PostgreSQL max_connections。 |
Docker 注意:容器内 localhost 指向容器自身;连接宿主机本地数据库使用 host.docker.internal,连接云数据库填写容器可达的公网或内网地址。Full Compose 模式会注入容器内 PostgreSQL 连接串。
应用与日志
| 变量 | 默认/示例 | 说明 |
|---|---|---|
LOG_LEVEL | debug | 日志级别:debug、info、warn、error。开发环境默认输出 debug;生产默认 warn。生产排查可设置为 info 或 debug,低于当前级别的业务日志会被过滤。安全诊断的 console.error 不受此开关限制。 |
NUXT_UPLOAD_DIR | public/uploads | 上传文件根目录,覆盖 runtimeConfig.uploadDir。Docker 部署建议设为 /data/uploads 并挂载持久化卷,容器重建不会丢失上传文件。 |
认证与管理员
| 变量 | 默认/示例 | 说明 |
|---|---|---|
NUXT_AUTH_SECRET | your-auth-secret-change-in-production | 登录 JWT(HS256)签名密钥,应用启动必填。生产必须使用强随机值。生成:openssl rand -hex 32。部署后更换会使现有登录状态失效。 |
NUXT_ADMIN_EMAIL | admin@nexus.dev | 首次启动创建的默认管理员邮箱;若该邮箱已有普通用户会自动提权。 |
NUXT_ADMIN_PASSWORD | admin123456 | 首次启动创建的默认管理员密码,生产必须修改。 |
NUXT_ADMIN_NAME | System Admin | 首次启动创建管理员时使用的昵称。 |
NUXT_JWT_PRIVATE_KEY | — | OAuth/OIDC RS256 私钥。需要 OAuth/OIDC 能力时配置;生产缺失会告警,调用相关能力时不可用。开发环境可自动生成。 |
NUXT_JWT_PUBLIC_KEY | — | 与 OAuth/OIDC 私钥配对的 RS256 公钥。需要 OAuth/OIDC 能力时一并配置。 |
NUXT_PASSWORD_RSA_PRIVATE_KEY | — | 登录密码传输使用的 RSA-OAEP 私钥。生产环境建议固定配置,避免实例重启或多实例之间密钥不一致。 |
生成 OAuth RSA 密钥
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -in private.pem -pubout -out public.pem将 PEM 内容写入 .env;包含换行的内容可用单行 \\n 转义。
NUXT_PASSWORD_RSA_PRIVATE_KEY 可使用同类 RSA 私钥。不要将任何私钥提交到 Git。
安全策略
| 变量 | 默认 | 说明 |
|---|---|---|
NUXT_LOGIN_MAX_ATTEMPTS | 5 | 连续登录失败达到此次数后锁定。 |
NUXT_LOGIN_LOCK_WINDOW | 15 | 登录锁定窗口,单位为分钟。 |
NUXT_PASSWORD_MIN_LENGTH | 8 | 密码最小长度。 |
NUXT_PASSWORD_REQUIRE_UPPERCASE | true | 是否要求至少一个大写字母。 |
NUXT_PASSWORD_REQUIRE_LOWERCASE | true | 是否要求至少一个小写字母。 |
NUXT_PASSWORD_REQUIRE_DIGIT | true | 是否要求至少一个数字。 |
NUXT_PASSWORD_REQUIRE_SPECIAL_CHAR | false | 是否要求至少一个特殊字符。 |
站点 URL
| 变量 | 默认 | 说明 |
|---|---|---|
NUXT_APP_URL | http://localhost:3000 | 站点对外 URL,用于 OAuth 回调、canonical/hreflang/sitemap 域名和资产接口 CSRF Origin 校验。必须与浏览器实际访问地址的协议、host、端口完全一致;HTTPS 反代场景填写外部 https:// 地址。 |
多语言 URL
| 变量 | 默认 | 说明 |
|---|---|---|
NUXT_LOCALE_URL_PREFIX | true | 是否为非默认语言生成 URL 前缀。true 时中文无前缀、英文使用 /en;修改后需要重新构建应用。后台只能配置默认语言和是否显示切换器。 |
邮件(SMTP)
SMTP 的 host、port、user、pass、from、secure 在系统配置页「邮件配置」Tab 管理,存储于 settings 表,数据库配置优先且运行时即时生效,因此不需要写入 .env。
SMTP 是邮件验证码能力的共同依赖。配置并测试成功后,以下功能才可以正常发送邮件:
- 登录页“找回密码”;
- 注册后的邮箱验证;
- 实名认证中的邮箱验证;
- 其他需要发送邮箱验证码或通知的功能。
如果上述功能提示发送失败,先到 /admin/settings 的「邮件配置」检查 SMTP 主机、端口、账号、授权码(或应用专用密码)、发件人地址和 secure 设置,并使用测试邮件确认实际送达。不要把 SMTP 密码提交到 Git 或写入公开文档。
开发环境未配置 SMTP 时,邮件内容会输出到服务端日志;生产环境缺少有效 SMTP 配置时,发送操作会报错。常见端口:QQ smtp.qq.com:465(secure=true)、163 smtp.163.com:465、Outlook smtp-mail.outlook.com:587、Gmail smtp.gmail.com:587(应用专用密码)。
支付商户密钥
支付密钥由 .env 持有,不进入 settings 或管理后台。未配置时对应支付方式在充值页返回 502,但不会导致应用崩溃;后台「支付配置」页只展示是否配置的布尔状态,不显示密钥本身。
微信支付(Native 扫码)
| 变量 | 说明 |
|---|---|
NUXT_WXPAY_APPID | 微信公众平台/开放平台应用 AppID,需与商户号绑定。 |
NUXT_WXPAY_MCHID | 微信支付商户号(mch_id)。 |
NUXT_WXPAY_API_V3_KEY | 微信支付 APIv3 密钥,32 位。 |
NUXT_WXPAY_MERCHANT_PRIVATE_KEY | 商户 API 证书私钥 apiclient_key.pem 内容,使用 base64 编码。 |
NUXT_WXPAY_MERCHANT_CERT | 商户 API 证书 apiclient_cert.pem 内容,使用 base64 编码。 |
证书内容编码示例:
base64 -i apiclient_key.pem -w 0支付宝(电脑网站支付)
| 变量 | 默认 | 说明 |
|---|---|---|
NUXT_ALIPAY_APP_ID | — | 支付宝开放平台应用 APPID。 |
NUXT_ALIPAY_PRIVATE_KEY | — | 应用私钥(RSA2),通常为 PKCS8;包含换行时用 \\n 转义。 |
NUXT_ALIPAY_PUBLIC_KEY | — | 支付宝公钥,用于异步通知验签。 |
NUXT_ALIPAY_KEY_TYPE | PKCS8 | 私钥格式:PKCS8 或 PKCS1。 |
API 文档开关
| 变量 | 默认 | 说明 |
|---|---|---|
NUXT_API_DOCS_ENABLED | true | 控制 /api_docs 页面、/api/docs/openapi.json 端点和 sitemap 收录。设为 false 后这些端点返回 404,适合不对外暴露接口文档的交付场景;修改后需重启生效。 |
预留变量
.env.example 中还保留以下后续接入变量,目前不会影响现有功能:
| 变量 | 说明 |
|---|---|
STRIPE_SECRET_KEY | Stripe 密钥预留项。 |
OPENAI_API_KEY | OpenAI API Key 预留项。 |

