docs: 教程同步本轮全部变更(升级守卫 / 可配置项 / agent 接口)

- 升级示例补 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 配置清单)
- 门户卡片章节补后台入口(站点信息 → 门户页服务卡片,与接口同一份数据)
- 自检域名说明:脚本内不写死任何域名,默认取路由表首条(避免脱敏改坏自检)
This commit is contained in:
HomeDash Bot
2026-09-12 10:47:41 +08:00
parent 700775866a
commit 412e51d1f5

View File

@ -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=<cdp端口> CK=<portal_session> 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` | 部署后浏览器验收脚本 |