docs(readme): 架构描述改为当前实态(单容器即统一入口 + 内置认证)

README 开头与架构图还停留在"portal-nginx + portal-auth + navi"三容器时代。

- 开头一句话改为:反向代理 + 统一登录 + Dashy + SearXNG + 历史 + 管理后台
  + 路由管理全在同一容器内,容器自己就是入口(3080/8443,3081 跳转)
- 架构图重画:公网 → frps → frpc → navi 单容器,容器内按 $host 查路由表分流、
  需要登录的走 auth_request 到内置登录服务(:3005)、未知域名给自定义 404、
  上游故障给自定义 500(错误页免认证)
- 容器内部图补:nginx 内部端口 18080(对外 3080/8443)、/auth/verify 认证校验、
  gateway/*.conf 路由生成来源
- 明确标注 portal-nginx / portal-auth 已停用,仅作回滚保留
This commit is contained in:
HomeDash Bot
2026-09-12 11:11:28 +08:00
parent 02b321ab51
commit 5ba7789e30

View File

@ -10,7 +10,13 @@
> 两者不冲突:AGENTS.md 是"怎么做且怎么确认做对了",README 是"为什么"。
将 **Dashy + SearXNG + 浏览器历史同步 + 管理后台**整合在单个 Docker 容器中,并附带**完整的内网服务发布方案**(带统一认证的反向代理 + webui4frpc 内网穿透),让外网通过域名安全访问内网服务。
把 **反向代理 + 统一登录 + Dashy + SearXNG + 浏览器历史同步 + 管理后台 + 服务转发路由管理**
全部装进**同一个 Docker 容器**:容器自己就是统一入口(对外 3080/8443,3081 做 http→https 跳转),
按域名把请求分流到内网各服务,并对**逐条路由**决定是否需要登录。配合 webui4frpc 内网穿透,
外网即可用域名安全访问内网服务。
> 早期形态是「portal-nginx + portal-auth + navi」三个容器;现已合并为单容器(见下文「一体化模式」)。
> 那三个旧组件中,`portal-nginx` / `portal-auth` 已停用,仅作为回滚保留。
## 架构总览(生产全链路)
@ -22,28 +28,31 @@
│ frps: vhost 端口 + tcp 隧道
▼
frpc (由 webui4frpc 在内网主机上管理, WebUI :7500)
│ configs/*.json → 定义各隧道
│ configs/*.json → 定义各隧道(把公网 443 转到容器入口端口)
▼
portal-nginx (统一认证反向代理, 容器)
│ auth_request → portal-auth(:4001) 统一登录
│ map $host → 按子域名分流
navi 单容器(--network host,既是应用也是统一入口)
│ nginx 监听 3080(TLS)/8443(TLS)/3081(→https 跳转)
│ ├─ 按 $host 查路由表(gateway.yml 生成,后台可维护)
│ ├─ 需要登录的路由 → auth_request ↗ 容器内置登录服务(:3005)
│ ├─ 未配置的域名 → 自定义 404(不会被兜底到某个服务)
│ └─ 上游故障 → 自定义 500(错误页本身免认证,否则会显示成 401)
▼
navi 单容器 (Dashy+SearXNG+历史+管理, :3003)
│ 内层 nginx :8080 按路径分流
▼
Dashy / SearXNG(→Clash 代理出网) / 历史 API / 管理 UI
Dashy / SearXNG(→Clash 代理出网) / 历史 API / 管理 UI / 各内网服务
```
### navi 容器内部
```
┌─────────────────────────────────────────────────────┐
│ nginx (:8080) — 统一入口,同域名同端口 │
│ nginx (:18080) — 容器内统一入口(对外 3080/8443) │
│ ├─ / → Dashy 静态仪表盘 │
│ ├─ /search → SearXNG 搜索 (:8888) │
│ ├─ /static/ → SearXNG 静态资源 (:8888) │
│ ├─ /api/history/ → 历史同步 API (:3004) │
│ ├─ /admin/ → 管理后台 WebUI (:3005) │
│ ├─ /auth/verify → 统一登录校验(auth_request) │
│ └─ gateway/*.conf → 按域名生成的服务路由(可热更新)│
│ ├─ /conf.yml → 运行时导航配置(数据卷) │
│ └─ /item-icons/ → 自定义图标 (数据卷) │
└─────────────────────────────────────────────────────┘