From 412e51d1f544f1b10e2ee16316d2dd0fdaca231f Mon Sep 17 00:00:00 2001 From: HomeDash Bot Date: Sat, 12 Sep 2026 10:47:41 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=95=99=E7=A8=8B=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=9C=AC=E8=BD=AE=E5=85=A8=E9=83=A8=E5=8F=98=E6=9B=B4=EF=BC=88?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=AE=88=E5=8D=AB=20/=20=E5=8F=AF=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=A1=B9=20/=20agent=20=E6=8E=A5=E5=8F=A3=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 升级示例补 NAVI_COOKIE_DOMAIN、NAVI_HOME_URL:旧容器没有 cookie 域且未传时 脚本会拒绝升级(否则登录 cookie 退化 host-only,跨子域登录失效) - 升级脚本环境变量表补齐:NAVI_COOKIE_DOMAIN / NAVI_HOME_URL / NAVI_CHECK_HOST / NAVI_ROTATE_PORTAL_PASSWORD,并写明**默认不改登录口令**(生效凭据是数据卷里的加盐哈希, 改口令会让所有受保护域名立即要求新口令,属高风险,必须显式开启) - 自定义文件表补 pages.go(文案渲染 + 卡片覆盖)与 schema.go(/api/schema 配置清单) - 门户卡片章节补后台入口(站点信息 → 门户页服务卡片,与接口同一份数据) - 自检域名说明:脚本内不写死任何域名,默认取路由表首条(避免脱敏改坏自检) --- README.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9073e3f..b528f32 100644 --- a/README.md +++ b/README.md @@ -309,7 +309,7 @@ deploy/zd.sh v29 # 版本号只用于镜像 tag 6. 停旧容器并保留为回滚点 `navi-prev-<时间戳>`,新容器改名为 `navi` 可用环境变量:`NAVI_HOST`、`NAVI_SSH_PASS`、`NAVI_UPSTREAM_HOST`、`NAVI_PORTAL_CONF`、 -`NAVI_DATA_DIR`、`NAVI_BASE_IMAGE`。 +`NAVI_DATA_DIR`、`NAVI_BASE_IMAGE`、`NAVI_COOKIE_DOMAIN`、`NAVI_HOME_URL`、`NAVI_CHECK_HOST`、`NAVI_ROTATE_PORTAL_PASSWORD`。 ### 一个必须知道的坑:单文件 bind mount 不能用 `sed -i` @@ -362,7 +362,8 @@ PORT= CK= VPS=<对外IP> node deploy/verify-ui.js ### 部署(host 模式,接受数秒中断) ```bash -NAVI_SSH_PASS='<密码>' bash deploy/zd-host.sh v50 +NAVI_COOKIE_DOMAIN=.example.com NAVI_HOME_URL=https://example.com/ \ +NAVI_HOST=user@host NAVI_SSH_PASS='<密码>' bash deploy/zd-host.sh v54 ``` 流程:本地构建 → 校验(navi.js 语法、两个 Go 模块 gofmt+test)→ 上传 → **停旧容器** → 起新容器(`--network host`) @@ -413,7 +414,9 @@ NAVI_HOST=user@host NAVI_SSH_PASS='<密码>' bash deploy/zd-host.sh v54 `<数据卷>/portal/cards.html`,内容会替换标记之间的部分;清空该文件即回到内置卡片。 2. **接口**:`GET/POST /api/portal-cards`,body `{"html":"…"}`(POST 需后台令牌,空串表示重置)。 -整页替换(含版式)仍可用 `<数据卷>/portal/index.html`。仓库内置的卡片是通用示例,不含任何真实域名。 +整页替换(含版式)仍可用 `<数据卷>/portal/index.html`。 + +后台入口:**站点信息 → 门户页服务卡片**(与 `/api/portal-cards` 是同一份数据,界面能改的 agent 都能改)。仓库内置的卡片是通用示例,不含任何真实域名。 ### 跨子域单点登录需要的两个环境变量 @@ -534,6 +537,10 @@ host 网络启动容器 → 应用配置 + 自检。**自检不全绿就退出** | `NAVI_SYNC_TOKEN` / `NAVI_ADMIN_TOKEN` | 空→自动生成 | 历史同步令牌 / 后台 API 令牌 | | `NAVI_BUILD` / `NAVI_TAR` | `1` / 空 | `0` 表示用 `docker load -i $NAVI_TAR` 导入现成镜像 | | `NAVI_SSH_PASS`(zd-host.sh) | 空 | ssh 密码;用密钥则留空 | +| `NAVI_COOKIE_DOMAIN`(zd-host.sh) | 必填 | 跨子域单点登录所需,如 `.example.com`;**旧容器没有该项且未传时脚本拒绝升级**(避免登录 cookie 退化为 host-only) | +| `NAVI_HOME_URL`(zd-host.sh) | `/` | 登录成功后跳回的地址,如 `https://example.com/` | +| `NAVI_CHECK_HOST`(zd-host.sh) | 自动 | 入口自检探测的域名;默认取数据卷 `gateway.yml` 路由表首条,脚本内**不写死任何域名** | +| `NAVI_ROTATE_PORTAL_PASSWORD`(zd-host.sh) | `0` | `1` 时把门户口令重置为随机值并打印一次。**默认 0**:只清理容器 env 里的明文口令,不改登录口令(生效凭据本是数据卷里的加盐哈希) | | `NAVI_HOST`(zd-host.sh / zd.sh) | **必填、无默认** | 目标机 ssh 地址 `user@host`(仓库不预置任何真实地址);缺失会直接以退出码 2 报错 | ### 证书与初始网关配置 @@ -650,6 +657,8 @@ curl -s -X POST -H "Authorization: Bearer $TOK" "$A/api/gateway/apply" | `deploy/zd-host.sh` | **合并后**的部署脚本(host 模式,接受数秒中断,失败自动回滚) | | `portal/`(index.html、404.html、500.html、portal.css、favicon) | 门户静态页与自定义错误页,进镜像的 `/app/portal` | | `admin-server/auth.go` | 容器内置统一登录(HMAC 会话 cookie、恒定时间比较、跳转白名单) | +| `admin-server/pages.go` | 认证页/门户页文案渲染(读 `pageInfo`,留空回落内置默认)+ 门户卡片覆盖(数据卷 `portal/cards.html`)+ `/api/portal-cards` | +| `admin-server/schema.go` | `/api/schema`:全部可配置项与其写入口清单(供 agent/脚本按图配置) | | `admin-server/gateway.go` / `gateway_nav.go` / `gateway_import.go` / `portal_auth.go` | 路由表生成、导航同步、现有 nginx 配置导入、登录账号设置 | | `deploy/zd.sh` | 零停机部署脚本 | | `deploy/verify-ui.js` | 部署后浏览器验收脚本 |