Files
photo-live/.env.production.example-cn
2026-09-22 18:31:30 +08:00

80 lines
4.7 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# .env.production.example-cn —— 国内(cn)生产环境变量全量清单(P5-prep Task 1)。
# 复制为 infra/deploy 同目录下的 .env.production-cn(与 docker-compose.cn.yml 同层,
# env_file 相对路径即此处),逐项填值。矿来源 = services/packages 源码 process.env
# 全量审计(测试专用的 ADMIN_* 仅 seed 用;IT_USERS/EMBED_POLL_* 为开发/前端项不列)。
# 【安全】本文件只放占位符;真实文件不入 git、不进镜像(.dockerignore 拦截)。
# ── 数据库 / 缓存(1Panel 既有容器,见 infra/deploy/README-1Panel.md §2/§3)──
# host 用 1Panel 容器名(compose 挂 1panel-network)或宿主机 IP。
# 库 photo_cn:utf8mb4;库级校对 utf8mb4_0900_bin(MySQL ≥8.0.30,低版本回退
# utf8mb4_bin,见 D12——docs/plans/2026-09-17-P1a-后端核心链路.md)。账号/token
# 大小写敏感语义依赖它,勿改 _ci。connection_limit=10 是应用侧池上限约定。
DATABASE_URL_CN=mysql://photo:CHANGE_ME@1Panel-mysql-容器名或IP:3306/photo_cn?connection_limit=10
REDIS_URL_CN=redis://1Panel-redis-容器名或IP:6379
# sync 进程双库直连:cn 侧容器还要能网络可达 ov 库(跨地域公网 + 白名单 cn 服务器
# 出口 IP;生产建议 MySQL SSL 或隧道,P5 G 关口实测定案)。sync 进程(compose 服务
# sync)读取;api-cn/worker 不读此键。
DATABASE_URL_OV=mysql://photo_ov:CHANGE_ME@OV服务器IP:3306/photo_ov?connection_limit=10
# ── 对象存储(真实阿里云 OSS 私有桶,G1 已于 2026-09-21 实测通过)──
# endpoint 用「外网 Endpoint」(api-cn 服务器上传;worker 处理读原文件)。
# bucket 私有读写:一切访问走 SigV4 现签 URL(SIGNED_URL_TTL_SECONDS)。
# ⚠️ 寻址形态(G1 实测定案):基础 endpoint(不含 bucket)+ virtual-host——
# 即 S3_FORCE_PATH_STYLE=false。OSS 兼容口在 path-style 下 403 签名不匹配。
S3_ENDPOINT=https://oss-cn-beijing.aliyuncs.com
S3_REGION=oss-cn-beijing
S3_ACCESS_KEY=CHANGE_ME_LTAI
S3_SECRET_KEY=CHANGE_ME
S3_BUCKET=live-album
S3_FORCE_PATH_STYLE=false
# 现签 GET(viewer 图片)/ PUT(上传)凭证有效期秒(uploads/support.ts)。
SIGNED_URL_TTL_SECONDS=900
# 单文件上传上限字节(uploads/support.ts;50MB 与契约 UPLOAD_MAX_BYTES 建议值一致)。
UPLOAD_MAX_BYTES=52428800
# ── 会话 / 域名 / 网络 ──
# 会话 TTL 秒(auth.service;30 天 = 2592000)。
AUTH_SESSION_TTL_SECONDS=2592000
# CORS 放行 origin 逗号清单(configure-app.ts)。生产 = viewer/admin 的 https 域名
# 两形(有无 www);admin 与 viewer 同域走网关同源时可省。示例:
# CORS_ORIGINS=https://photo.example.cn,https://www.photo.example.cn
CORS_ORIGINS=https://CHANGE_ME_cn域名
# api-cn 容器内监听端口(main-cn.ts;compose 内固定 8080,健康检查同端口)。
PORT=8080
# ── 同步(cn→ov outbox + 对账 + 统计回传;服务间 HMAC 密钥两端一致)──
# SYNC_INTERNAL_KEY:x-sync-signature 的 HMAC-SHA256 密钥(internal-sync.ts)。
# 强随机 ≥32 字节:openssl rand -hex 32 生成;cn 的 sync 进程与 ov 的 api-ov
# (inbox + emergency 通道)必须同值。泄漏 = 可注入内容/紧急停用,妥善保管。
SYNC_INTERNAL_KEY=CHANGE_ME_openssl_rand_hex_32
# sync 进程两翼 API 基址(不含路径;容器名/域名均可,走 https 时 OV_API_URL 用域名)。
CN_API_URL=http://api-cn:8080
OV_API_URL=https://CHANGE_ME_ov域名
# 节奏参数(D11 建议初值,P5 实测冻结):批 100 条 / 推送 2s / 对账 5min / 回传 60s。
SYNC_BATCH_SIZE=100
SYNC_PUSH_INTERVAL_MS=2000
SYNC_RECONCILE_INTERVAL_MS=300000
STAT_RETURN_INTERVAL_MS=60000
# ── 用户源同步(user-sync 调度,仅 cn 装配;缺省见注释)──
# 定时同步间隔毫秒(缺省 300000=5min;user-sync.service.ts)。
SYNC_USERS_INTERVAL_MS=300000
# 每 N 批强制全量对账(游标复位;缺省 10)。
RECONCILE_EVERY_N_RUNS=10
# ── 首次部署引导(seed-admin 角色;seed-admin.ts 读,生产可移除)──
ADMIN_ACCOUNT=admin
ADMIN_PASSWORD=CHANGE_ME_强密码
# ── 日志 ──
# pino 级别(logger-options/worker/sync;生产建议 info,排障临时 debug)。
LOG_LEVEL=info
# ── 用户信息开放接口(uniservice)──
OPEN_API_USERS_URL=https://uniservice.server.hnxinyouhe.com/open/v1/users
OPEN_API_USERS_KEY=CHANGE_ME
# 用户同步源:mock(默认)/ http(uniservice 真实接口——生产开)
USER_SYNC_SOURCE=http
# 用户同步定时间隔(毫秒):生产每 12 小时一批;缺省 300000(5 分钟)为开发/演示节奏
SYNC_USERS_INTERVAL_MS=43200000