docs(部署方案): 同步 NAS+甲骨文反代决策 + 生成部署骨架

- SRS/SDD/README/PROGRESS 统一将部署目标由"美国服务器"更正为"NAS 本机 + 甲骨文服务器反向代理"(此前已确认但未入库)
- 新增 docker-compose.yml / nginx.conf / .env.example(对应待办任务4)
- 相对 SDD 草稿的安全加固:one-api 端口改绑 127.0.0.1(原为公网端口映射),lobe-chat 不再发布主机端口,仅走容器内网
This commit is contained in:
ericwyuan
2026-08-23 08:31:09 +08:00
parent 557ec170da
commit 188c02478b
7 changed files with 218 additions and 47 deletions

View File

@@ -36,7 +36,13 @@
│ HTTPS (443)
┌───────────────────────────────────────────────────────────────┐
美国服务器Docker 宿主机)
甲骨文服务器129.146.203.203,公网反代层)
│ frp / nginx 反向代理端口 → NAS对外统一入口
└──────────────────────────┬────────────────────────────────────┘
│ 反代 / 隧道frp
┌───────────────────────────────────────────────────────────────┐
│ NAS 本机Docker 宿主机) │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Nginx反向代理层 │ │
@@ -77,7 +83,8 @@
| 层级 | 组件 | 职责 |
|---|---|---|
| 接入层 | Nginx | HTTPS 终止、反向代理、访问入口统一 |
| 反代层 | 甲骨文服务器 | frp/nginx 反向代理端口,对外统一访问入口 |
| 接入层 | Nginx | HTTPS 终止、反向代理、访问入口统一NAS 本机) |
| 表现层 | LobeChat | 用户交互、对话渲染、多模态输入采集 |
| 网关层 | One-API | 协议转换、渠道路由、故障转移、用量统计 |
| 数据层 | MySQL | 网关配置与日志持久化 |
@@ -85,7 +92,7 @@
### 2.3 部署视图
单机 Docker Compose 部署,各服务以容器形式运行在同一 Docker 网络(`ai-network`)内,服务间通过容器名互相寻址,仅 Nginx 的 80/443 端口对网暴露。
单机 Docker Compose 部署**NAS 本机**,各服务以容器形式运行在同一 Docker 网络(`ai-network`)内,服务间通过容器名互相寻址,仅 Nginx 的 80/443 端口对局域网暴露;对外由**甲骨文服务器129.146.203.203**通过 frp/nginx 反向代理该端口,供公司内网公网访问
---
@@ -94,7 +101,7 @@
### 3.1 Nginx 反向代理模块
**职责**
- 对外仅暴露 443HTTPS与 80HTTP 跳转 443
- 在 NAS 本机暴露 443HTTPS与 80HTTP 跳转 443;公网访问由甲骨文服务器反向代理到本机 443 端口
- 将请求转发至 `lobe-chat:3210`
- 关闭代理缓冲以支持流式输出SSE
@@ -233,10 +240,11 @@ server {
| 风险点 | 设计对策 |
|---|---|
| 后台管理端口暴露 | One-API 的 3000 端口不映射到公网,仅容器内网可访问;如需远程管理,走 SSH 隧道或 VPN |
| 后台管理端口暴露 | One-API 的 3000 端口不映射到公网,仅容器内网可访问;Oracle 反代仅转发前端端口,管理端口走 SSH 隧道或 VPN |
| API Key 泄露 | 所有 Key 通过 `.env` 文件注入容器环境变量,`.env` 加入 `.gitignore`,不提交版本库 |
| 未授权访问前端 | LobeChat `ACCESS_CODE` 强制校验 |
| 传输层安全 | Nginx 强制 HTTPSHTTP 请求 301 跳转 |
| 公网入口暴露 | 对外仅暴露甲骨文服务器反代端口NAS 本机不直接暴露公网 |
| 密钥被盗用后的止损 | One-API 后台可随时吊销/轮换 Token不影响各渠道原始 Key |
---
@@ -327,15 +335,16 @@ networks:
### 6.3 部署步骤
1. 服务器安装 Docker + Docker Compose
1. NAS 安装 Docker + Docker ComposeContainerManager
2. 按 6.1 结构创建目录,放置 `docker-compose.yml``.env``nginx.conf`
3. 申请 HTTPS 证书Let's Encrypt/certbot放入 `certs/`
4. 执行 `docker-compose up -d` 启动全部服务
5. 访问 `http://<服务器IP>:3000` 完成 One-API 初始化(设置管理员密码)
5. 访问 `http://<NAS-IP>:3000` 完成 One-API 初始化(设置管理员密码)
6. 后台按 3.3 节渠道设计表逐个添加渠道,设置优先级
7. 创建对外 Token写入 `.env``ONE_API_TOKEN`
8. `docker-compose restart lobe-chat` 使配置生效
9. 访问 `https://<域名>` 验证前端可正常对话、上传图片、触发 Failover
9. 在甲骨文服务器配置 frp或 nginx 反代)将公网端口转发至 NAS 的 Nginx 443 端口
10. 访问 `https://<域名>`(经甲骨文反代)验证前端可正常对话、上传图片、触发 Failover
### 6.4 运维监控设计
@@ -368,3 +377,5 @@ networks:
2. 后台管理端口是否需要通过 VPN/SSH 隧道访问,还是接受当前仅内网暴露的方案
3. 是否需要接入 Prometheus/Grafana 做可视化监控(当前为后续扩展项,非本期必做)
4. 域名与证书由紫川自行准备,还是需要方案建议
5. **NAS 到各海外 API 官方域名的直连稳定性验证**(部署目标已改为 NAS 本机 + 甲骨文反代,需确认 NAS 出站访问 Google/NVIDIA/Groq/OpenRouter/Mistral 的稳定性)
6. **甲骨文反代方式确认**frp 隧道(参照 FAM 项目方案)还是 nginx 反代