跳转至

配置(环境变量)

所有配置都通过环境变量完成。权威示例见 backend/.env.example

切勿提交密钥

backend/internal/config/.env*、根目录的 .envbackend.env 全部已 加入 gitignore。新增变量时,请在各 README 中记录该变量 — 但绝不要记录它的值。

核心

变量 示例 用途
PORT 8080 API 监听端口
ENVIRONMENT production 开启严格的生产守卫
DEBUG false 详细日志
ALLOWED_ORIGINS https://gerege.mn CORS 白名单(逗号分隔;禁止 *
TRUSTED_PROXIES 反向代理地址

数据库与 Redis

变量 用途
DB_POSTGRE_DSN / DB_POSTGRE_URL 连接字符串
DB_MAX_OPEN_CONNSDB_MAX_IDLE_CONNSDB_CONN_MAX_LIFE_MINS 连接池调优
REDIS_HOSTREDIS_PASSREDIS_EXPIRED Redis 连接与 TTL

生产环境的 DSN 必须使用 sslmode=verify-full

生产守卫强制要求这一点。Docker Compose 技术栈之所以刻意以 ENVIRONMENT=development 运行,是因为其内部数据库没有启用 TLS。

API 不得以超级用户身份连接数据库

只有当应用以最小权限角色连接时,RLS 才会真正生效。在生产环境中, 超级用户或带 BYPASSRLS 的角色会导致启动失败。

JWT 与会话

变量 用途
JWT_SECRET ≥32 个字符。 修改它会使所有会话失效
JWT_EXPIREDJWT_REFRESH_EXPIRED access / refresh 的有效期
JWT_ISSUER 通常为应用域名。修改它会使所有已签发令牌失效

eID(依赖方 RP)

变量 用途
EID_BASE_URL e-ID Gerege /v3 基址(或 SSO 签署中继)
EID_RP_UUIDEID_RP_SECRET RP 凭据
SIGN_RELAY_TOKEN 签名中继的共享令牌(留空则停用)

OIDC 提供方侧(本应用作为提供方)

变量 用途
OAUTH_ISSUER 例如 https://gerege.mn只有设置该变量时提供方才会启用
SSO_STATE_KEY 登录/授权临时 state 的 HMAC 密钥(≥32 字节
SSO_FIRSTPARTY_CLIENTS 跳过授权确认页的第一方客户端
SSO_ADMIN_API_KEYSSSO_ADMIN_SUBS 管理 API 访问权限

第三方与存储

变量 用途
GEMINI_API_KEY AI 流水线。缺少它时 /ai/* 会返回真实的 500
GOOGLE_CLIENT_ID / SECRET Google 绑定(留空时按钮隐藏)
VERIFY_API_BASEVERIFY_API_KEYVERIFY_CHANNEL 公民 / 组织信息核验
XYP_API_BASEXYP_CLIENT_IDXYP_CLIENT_SECRET 国家登记系统查询
GSPACE_* 应用自有的 SFTP 存储(按用户配额)
INTEGRATION_ENC_KEY ≥16 字节。 用于加密 OAuth 令牌和超级管理员 MFA

INTEGRATION_ENC_KEY 是必填项

各部署必须配置该密钥,且一经设置就绝不能更改 — 轮换它会破坏此前加密的所有数据。

可观测性

变量 用途
OTEL_EXPORTEROTEL_SAMPLE_RATIO OpenTelemetry 链路追踪
OBSERVABILITY_TOKEN 生产环境中把关 /metrics/swagger 的 bearer 令牌

前端

变量 用途
BACKEND_URL BFF 调用的内部地址(例如 http://api:8080

在共享网络中名称 api 可能冲突

当多套技术栈共用同一个 Docker 网络时,http://api:8080 可能解析到另一个容器, 从而使每个 /api/v1/* 调用都变成 404。此时请把 BACKEND_URL 固定为 您自己 api 容器的完整名称。