完善企微开通与部署端口契约(07-26-internal-ops-recovery-baseline)
这个提交包含在:
+14
-9
@@ -6,7 +6,7 @@
|
||||
- 官网继续保持 `hyinda.com / www.hyinda.com` 静态托管,不要改官网目录和配置。
|
||||
- OA 新增独立二级域名,例如 `oa.hyinda.com`。
|
||||
- OA 部署目录由受控环境中的 `REMOTE_DIR` 指定,不在仓库固化机器路径。
|
||||
- OA 推荐访问方式:`Caddy(443) -> 127.0.0.1:3000 -> docker-compose(server)`。
|
||||
- OA 推荐访问方式:`Caddy(443) -> 127.0.0.1:<APP_HOST_PORT> -> docker-compose(server:3000)`。
|
||||
- Caddy 必须覆盖客户端传入的 `X-Forwarded-For`。OA 站点的 `reverse_proxy` 中应设置 `header_up X-Forwarded-For {remote_host}`,不得保留不可信客户端链。
|
||||
- 首次初始化时:
|
||||
1. 服务器以 root 执行 `bash deploy/trialrun/setup-server.sh`
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
## 0B. 历史部署基线(基础设施信息已脱敏)
|
||||
- SSH 目标、部署账号和机器地址只保存在受控运维配置中,通过 `DEPLOY_SERVER` 显式传入。
|
||||
- 反向代理:`caddy` 正在运行,`oa.hyinda.com` 已反代到 `127.0.0.1:3000`
|
||||
- 反向代理:`caddy` 正在运行,`oa.hyinda.com` 应反代到 `.env` 中 `APP_HOST_PORT` 对应的宿主回环端口。
|
||||
- 部署目录通过 `REMOTE_DIR` 显式传入。
|
||||
- 远端目录当前不是 git 工作树;发布应优先从本地执行 `bash deploy/trialrun/deploy.sh`,由脚本 `rsync` 到服务器
|
||||
- 远端容器编排当前实际为 `docker-compose 1.29.2`;本 runbook 命令以 `docker-compose` 为准
|
||||
@@ -45,6 +45,7 @@ cp deploy/trialrun/.env.example deploy/trialrun/.env
|
||||
- `deploy/trialrun/.env` 现在是 trialrun 部署事实源,`server / worker / init` 统一通过 `env_file` 注入。
|
||||
- `BUILD_SHA` / `VITE_BUILD_SHA` 由发布入口按已批准提交临时注入,不写入长期 `.env`;前者供后端运行时核对,后者只允许 12 位短 SHA 进入公网 bundle。
|
||||
- 推荐使用无引号值,例如 `COOKIE_SECURE=true`、`PORT=3000`。
|
||||
- `PORT=3000` 是容器内端口;`APP_HOST_PORT` 是宿主回环端口。发布脚本通过 Compose 动态解析后者,Caddy 必须指向相同值。
|
||||
- 历史上已经写成带引号的 `.env` 当前仍兼容,但建议后续逐步改成无引号。
|
||||
- 正式部署前可先执行 `node deploy/trialrun/validate-env-contract.js` 做静态契约检查。
|
||||
- **EXTERNAL_GATED**:涉及认证安全迁移时,发布或回滚前必须由操作人先在边缘暂停 `/api/auth/forgot-password`、`/api/auth/reset-password`、`/api/auth/email-login/code`、`/api/auth/email-login/verify` 四个 challenge 端点,再执行“新镜像配置预检 -> additive migration -> 新应用切换”。部署脚本不会自动修改边缘配置;未人工确认四端点已关闭不得发布或回滚开放。仅在安全版本及 smoke 全部通过后人工恢复;若回滚到旧认证代码,四端点必须继续关闭。
|
||||
@@ -102,9 +103,11 @@ docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/
|
||||
|
||||
### 1.4 验收
|
||||
```bash
|
||||
curl -fsS http://127.0.0.1:3000/health
|
||||
curl -fsS http://127.0.0.1:3000/ready
|
||||
curl -fsS http://127.0.0.1:3000/metrics | head
|
||||
SERVER_HOST_PORT="$(docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env port server 3000)"
|
||||
SERVER_HOST_PORT="${SERVER_HOST_PORT##*:}"
|
||||
curl -fsS "http://127.0.0.1:${SERVER_HOST_PORT}/health"
|
||||
curl -fsS "http://127.0.0.1:${SERVER_HOST_PORT}/ready"
|
||||
curl -fsS "http://127.0.0.1:${SERVER_HOST_PORT}/metrics" | head
|
||||
docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env exec -T server node src/scripts/smoke-trialrun-runtime.js
|
||||
```
|
||||
|
||||
@@ -119,7 +122,7 @@ docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/
|
||||
- 2026-05-05 公网复核显示:`OCR_PROVIDER=tencent` 可用,真实发票上传后进入 `available`,provider 为 `tencent`;后续发布不能再把 OCR 回退到 mock 而不记录原因。
|
||||
|
||||
浏览器访问:
|
||||
- `http://127.0.0.1:3000`(单域托管前端)
|
||||
- `docker-compose ... port server 3000` 返回的宿主回环端口(单域托管前端)。
|
||||
|
||||
### 1.4.1 腾讯 OCR 试运行核查
|
||||
远端 `.env` 是 OCR 配置事实源,禁止提交或复制密钥明文。只做以下脱敏检查:
|
||||
@@ -273,13 +276,14 @@ docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/
|
||||
```
|
||||
|
||||
### 2.2 前端部署一致性排障
|
||||
当前 `oa.hyinda.com` 由 Caddy 反代到 `127.0.0.1:3000`,前端静态资源由 server 容器内的 `/app/client/dist` 提供,不是 `/etc/caddy/Caddyfile` 里的独立静态目录。
|
||||
`oa.hyinda.com` 由 Caddy 反代到 `.env` 中 `APP_HOST_PORT` 对应的宿主回环端口,前端静态资源由 server 容器内的 `/app/client/dist` 提供,不是 `/etc/caddy/Caddyfile` 里的独立静态目录。
|
||||
|
||||
如果出现“本地源码已有功能,但公网仍显示旧 UI”,先按以下顺序核查:
|
||||
|
||||
```bash
|
||||
# 1) 确认 Caddy 仍是反代到 3000
|
||||
# 1) 确认 Caddy 指向 Compose 实际发布的宿主回环端口
|
||||
sudo sed -n '/oa.hyinda.com/,/}/p' /etc/caddy/Caddyfile
|
||||
docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env port server 3000
|
||||
|
||||
# 2) 比对公网首页引用的 asset hash
|
||||
curl -fsS https://oa.hyinda.com/ | grep -o '/assets/[^" ]*' | head
|
||||
@@ -295,7 +299,8 @@ docker exec hyb-oa-trialrun-server sh -lc \
|
||||
cd /opt/hyb-oa-trialrun
|
||||
docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d --build server
|
||||
docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env run --rm -T init </dev/null
|
||||
curl -fsS http://127.0.0.1:3000/ready
|
||||
SERVER_HOST_PORT="$(docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env port server 3000)"
|
||||
curl -fsS "http://127.0.0.1:${SERVER_HOST_PORT##*:}/ready"
|
||||
```
|
||||
|
||||
重建后必须补做:
|
||||
|
||||
在新工单中引用
屏蔽一个用户