Skip to content

环境变量 ​

Nexus 通过项目根目录的 .env 注入配置。以下清单与主项目的 .env.example 保持同步;变量名以 NUXT_ 开头的配置会被 Nuxt runtimeConfig 使用,数据库连接同时供 Drizzle Kit 使用。

修改 .env 后需要重启应用容器。生产环境不要把包含密钥的 .env 提交到 Git。

当前只有 App Only 的 docker-compose.yml 完整读取 .env。docker-compose-full.yml 修正前不要依据本页配置进行生产部署。

数据库 ​

变量默认/示例说明
NUXT_DATABASE_URLpostgresql://root:123456@localhost:5432/nexusPostgreSQL 连接串,Nuxt runtimeConfig 与 Drizzle Kit 共用。生产环境应使用独立数据库和受控账号。
NUXT_DATABASE_POOL_MAX20数据库连接池上限。多进程部署时需确保「进程数 × 此值」小于 PostgreSQL max_connections。

Docker 注意:容器内 localhost 指向容器自身;连接宿主机本地数据库使用 host.docker.internal,连接云数据库填写容器可达的公网或内网地址。Full Compose 模式会注入容器内 PostgreSQL 连接串。

应用与日志 ​

变量默认/示例说明
LOG_LEVELdebug日志级别:debug、info、warn、error。开发环境默认输出 debug;生产默认 warn。生产排查可设置为 info 或 debug,低于当前级别的业务日志会被过滤。安全诊断的 console.error 不受此开关限制。
NUXT_UPLOAD_DIRpublic/uploads上传文件根目录,覆盖 runtimeConfig.uploadDir。Docker 部署建议设为 /data/uploads 并挂载持久化卷,容器重建不会丢失上传文件。

认证与管理员 ​

变量默认/示例说明
NUXT_AUTH_SECRETyour-auth-secret-change-in-production登录 JWT(HS256)签名密钥,应用启动必填。生产必须使用强随机值。生成:openssl rand -hex 32。部署后更换会使现有登录状态失效。
NUXT_ADMIN_EMAILadmin@nexus.dev首次启动创建的默认管理员邮箱;若该邮箱已有普通用户会自动提权。
NUXT_ADMIN_PASSWORDadmin123456首次启动创建的默认管理员密码,生产必须修改。
NUXT_ADMIN_NAMESystem 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 密钥 ​

bash
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_ATTEMPTS5连续登录失败达到此次数后锁定。
NUXT_LOGIN_LOCK_WINDOW15登录锁定窗口,单位为分钟。
NUXT_PASSWORD_MIN_LENGTH8密码最小长度。
NUXT_PASSWORD_REQUIRE_UPPERCASEtrue是否要求至少一个大写字母。
NUXT_PASSWORD_REQUIRE_LOWERCASEtrue是否要求至少一个小写字母。
NUXT_PASSWORD_REQUIRE_DIGITtrue是否要求至少一个数字。
NUXT_PASSWORD_REQUIRE_SPECIAL_CHARfalse是否要求至少一个特殊字符。

站点 URL ​

变量默认说明
NUXT_APP_URLhttp://localhost:3000站点对外 URL,用于 OAuth 回调、canonical/hreflang/sitemap 域名和资产接口 CSRF Origin 校验。必须与浏览器实际访问地址的协议、host、端口完全一致;HTTPS 反代场景填写外部 https:// 地址。

多语言 URL ​

变量默认说明
NUXT_LOCALE_URL_PREFIXtrue是否为非默认语言生成 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 编码。

证书内容编码示例:

bash
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_TYPEPKCS8私钥格式:PKCS8 或 PKCS1。

API 文档开关 ​

变量默认说明
NUXT_API_DOCS_ENABLEDtrue控制 /api_docs 页面、/api/docs/openapi.json 端点和 sitemap 收录。设为 false 后这些端点返回 404,适合不对外暴露接口文档的交付场景;修改后需重启生效。

预留变量 ​

.env.example 中还保留以下后续接入变量,目前不会影响现有功能:

变量说明
STRIPE_SECRET_KEYStripe 密钥预留项。
OPENAI_API_KEYOpenAI API Key 预留项。