From 5ba7789e30189b9b7d3afee8346db4fa2a4d34ee Mon Sep 17 00:00:00 2001 From: HomeDash Bot Date: Sat, 12 Sep 2026 11:11:28 +0800 Subject: [PATCH] =?UTF-8?q?docs(readme):=20=E6=9E=B6=E6=9E=84=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=E6=94=B9=E4=B8=BA=E5=BD=93=E5=89=8D=E5=AE=9E=E6=80=81?= =?UTF-8?q?=EF=BC=88=E5=8D=95=E5=AE=B9=E5=99=A8=E5=8D=B3=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E5=85=A5=E5=8F=A3=20+=20=E5=86=85=E7=BD=AE=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 已停用,仅作回滚保留 --- README.md | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index cac5013..b44d06c 100644 --- a/README.md +++ b/README.md @@ -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/ → 自定义图标 (数据卷) │ └─────────────────────────────────────────────────────┘