fix(部署): frp 对外端口改用专属 3210,不占用默认 443
- 与 Gitea(3000)/WordPress(8500)/FAM-core(8000) 保持同一约定:每个服务用专属端口而非默认 443 - NAS frpc.toml 的 nexusai 代理 remotePort 由 443 改为 3210,已重启 frpc 并验证 https://129.146.203.203:3210/ 端到端可访问 - 同步更新 README/PROGRESS/SDD 中所有相关端口引用
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
| 服务 | 节点 | 状态 | 说明 |
|
||||
|------|------|------|------|
|
||||
| Oracle frp 隧道 | 甲骨文服务器 129.146.203.203 | ✅ 已配置 | 复用已有 frps;新增 `nexusai` 代理,remotePort 443 → NAS:8443 |
|
||||
| Oracle frp 隧道 | 甲骨文服务器 129.146.203.203 | ✅ 已配置 | 复用已有 frps;新增 `nexusai` 代理,remotePort 3210 → NAS:8443 |
|
||||
| Nginx | NAS 192.168.50.64 | ✅ 已部署 | 容器 `nginx-proxy`,本机端口 8443(80/443 已被占用) |
|
||||
| LobeChat | NAS 192.168.50.64 | ✅ 已部署 | 容器 `lobe-chat`,端到端连通性已验证 |
|
||||
| One-API | NAS 192.168.50.64 | ✅ 已部署(未初始化) | 容器 `one-api`,本机 127.0.0.1:3001;管理员密码/渠道/Token 待用户在 Web UI 完成 |
|
||||
@@ -25,14 +25,14 @@
|
||||
- OpenRouter (openrouter.ai) HTTP 200
|
||||
- Mistral (api.mistral.ai) HTTP 404(预期)
|
||||
- 结论:NAS 出站直连稳定,无需额外代理
|
||||
- **Oracle 反代方式确认(待办任务3,已完成)**:确认沿用 frp 隧道方案(与 FAM 一致)。Oracle 上 `frps` 服务已在运行(`/etc/frp/frps.toml`,7000 控制端口),NAS 上 `frpc`(`/etc/frp/frpc.toml`)已有 gitea/wordpress/fam-core 三个代理在跑;本次仅追加第 4 个 `[[proxies]] name="nexusai"`(localPort 8443 → remotePort 443),修改前按现有约定做了时间戳备份(`/etc/frp/frpc.toml.bak.*`),重启 frpc 后四个代理全部 `start proxy success`,未影响既有 gitea/wordpress/fam-core 隧道
|
||||
- **Oracle 反代方式确认(待办任务3,已完成)**:确认沿用 frp 隧道方案(与 FAM 一致)。Oracle 上 `frps` 服务已在运行(`/etc/frp/frps.toml`,7000 控制端口),NAS 上 `frpc`(`/etc/frp/frpc.toml`)已有 gitea/wordpress/fam-core 三个代理在跑;本次仅追加第 4 个 `[[proxies]] name="nexusai"`(localPort 8443 → remotePort 3210),修改前按现有约定做了时间戳备份(`/etc/frp/frpc.toml.bak.*`),重启 frpc 后四个代理全部 `start proxy success`,未影响既有 gitea/wordpress/fam-core 隧道
|
||||
- **NAS 实际部署(待办任务5,部分完成)**:`~/ai-gateway/` 目录下已放置 `docker-compose.yml`/`nginx.conf`/`.env`(`MYSQL_ROOT_PASSWORD`、`LOBE_ACCESS_CODE` 已用 `openssl rand` 生成强随机值,仅存于 NAS,未入库、未在对话记录外泄露);证书为临时自签名(`certs/`,CN=nexusai.local,SAN 含两台服务器 IP),`docker compose up -d` 后四容器全部 Up(MySQL 首次初始化耗时导致 one-api 短暂重启几次,符合预期,之后自愈)
|
||||
- **端到端验证通过**:`curl -sk https://129.146.203.203/` 与 NAS 本机 `curl -sk https://127.0.0.1:8443/` 均返回 HTTP 307(LobeChat 正常重定向),链路 浏览器→Oracle frps:443→frp隧道→NAS nginx:8443→lobe-chat:3210 完全打通
|
||||
- **端到端验证通过**:`curl -sk https://129.146.203.203:3210/` 与 NAS 本机 `curl -sk https://127.0.0.1:8443/` 均返回 HTTP 307(LobeChat 正常重定向),链路 浏览器→Oracle frps:3210→frp隧道→NAS nginx:8443→lobe-chat:3210 完全打通
|
||||
- **仍需用户在浏览器里手动完成(不由 AI 代做,涉及创建账号/输入密钥)**:
|
||||
1. 通过 SSH 隧道 `ssh -p 2222 -L 3001:127.0.0.1:3001 ericwyuan@192.168.50.64` 访问 `http://127.0.0.1:3001` 完成 One-API 管理员账号初始化
|
||||
2. 后台按渠道设计表添加 5 个渠道(需要 Gemini/NVIDIA 新 Key,待办任务2)
|
||||
3. 创建对外 Token,写入 NAS `~/ai-gateway/.env` 的 `ONE_API_TOKEN`,然后 `docker compose restart lobe-chat`
|
||||
4. 访问 `https://129.146.203.203`(当前为自签名证书,浏览器会显示不安全警告;Access Code 已随机生成,存于 NAS `~/ai-gateway/.env` 的 `LOBE_ACCESS_CODE`,未写入版本库,见对话记录/自行 `cat` 查看)进行实际对话/图片问答/Failover 验证(待办任务5 收尾)、并决定正式域名与证书方案(待办任务6,届时替换 `certs/` 下的自签名证书)
|
||||
4. 访问 `https://129.146.203.203:3210`(当前为自签名证书,浏览器会显示不安全警告;Access Code 已随机生成,存于 NAS `~/ai-gateway/.env` 的 `LOBE_ACCESS_CODE`,未写入版本库,见对话记录/自行 `cat` 查看)进行实际对话/图片问答/Failover 验证(待办任务5 收尾)、并决定正式域名与证书方案(待办任务6,届时替换 `certs/` 下的自签名证书)
|
||||
|
||||
## 2026-08-23 部署骨架生成:docker-compose.yml / nginx.conf / .env.example
|
||||
|
||||
|
||||
12
README.md
12
README.md
@@ -27,9 +27,9 @@
|
||||
|
||||
```
|
||||
浏览器 / 移动端浏览器(公司内网)
|
||||
│ HTTPS (443)
|
||||
│ HTTPS (3210)
|
||||
▼
|
||||
甲骨文服务器(129.146.203.203)—— frp/nginx 反代端口(对外统一入口)
|
||||
甲骨文服务器(129.146.203.203)—— frp 隧道专属端口 3210(对外统一入口)
|
||||
│ 反代 / 隧道(frp)
|
||||
▼
|
||||
NAS 本机(Docker 宿主机)
|
||||
@@ -76,7 +76,7 @@ NAS 本机(Docker 宿主机)
|
||||
## 3. 部署概览
|
||||
|
||||
- **部署位置**:NAS 本机(Synology DSM 7,Docker Compose / ContainerManager)
|
||||
- **对外访问**:甲骨文服务器(129.146.203.203)frp 隧道(frps 已运行,`frpc.toml` 追加 `nexusai` 代理)转发公网 443 → NAS 的 Nginx 容器(NAS 本机端口 8443)
|
||||
- **对外访问**:甲骨文服务器(129.146.203.203)frp 隧道(frps 已运行,`frpc.toml` 追加 `nexusai` 代理)转发公网专属端口 3210 → NAS 的 Nginx 容器(NAS 本机端口 8443),即 `https://129.146.203.203:3210`
|
||||
- **方式**:所有服务在同一 `ai-network` 内;NAS 本机 80/443/3000 已被 Gitea/DSM 等既有服务占用,AI 网关改用 8443(nginx)与 3001(one-api,仅 127.0.0.1)
|
||||
- **目录结构**:`docker-compose.yml` / `.env`(敏感变量,不入库)/ `nginx.conf` / `certs/` / `one-api-data/` / `mysql-data/`
|
||||
- **详细部署步骤**:见 [SDD 第 6 章](docs/02-软件设计文档-SDD.md#6-部署设计)
|
||||
@@ -90,11 +90,11 @@ NAS 本机(Docker 宿主机)
|
||||
| one-api | justsong/one-api:latest | 127.0.0.1:3001→3000(仅本机回环) | 网关聚合层 |
|
||||
| mysql | mysql:8.0 | 未发布主机端口,仅容器内网 3306 | One-API 数据存储 |
|
||||
|
||||
> NAS 本机 80/443/3000 已被 Gitea(3000)与其他既有服务(80/443)占用,故 AI 网关容器改用上表端口;甲骨文侧无需改动,frps 按 `frpc.toml` 中新增的 `[[proxies]] name="nexusai"` 动态接受 remotePort 443。
|
||||
> NAS 本机 80/443/3000 已被 Gitea(3000)与其他既有服务(80/443)占用,故 AI 网关容器改用上表端口;甲骨文侧无需改动,frps 按 `frpc.toml` 中新增的 `[[proxies]] name="nexusai"` 动态接受 remotePort 3210。
|
||||
|
||||
### 3.2 安全要点
|
||||
|
||||
- 对外仅暴露甲骨文服务器 frp 隧道转发的 443 端口,NAS 本机不直接暴露公网
|
||||
- 对外仅暴露甲骨文服务器 frp 隧道转发的 3210 端口(专属端口,非默认 443,与 Gitea:3000/WordPress:8500/FAM-core:8000 同一约定),NAS 本机不直接暴露公网
|
||||
- One-API 后台端口只绑定 `127.0.0.1:3001`,不接入 frp 隧道;远程管理走 SSH 隧道:`ssh -p 2222 -L 3001:127.0.0.1:3001 ericwyuan@192.168.50.64`
|
||||
- 所有 API Key 通过服务器 `.env` 注入容器环境变量,`.env` 不入库(见 [SDD 第 5 章](docs/02-软件设计文档-SDD.md#5-安全设计))
|
||||
- 前端强制 `ACCESS_CODE` 校验;Nginx 全站 HTTPS
|
||||
@@ -186,7 +186,7 @@ NAS 本机(Docker 宿主机)
|
||||
|
||||
- 软件需求文档(SRS V1.0)与软件设计文档(SDD V1.0)入库(`docs/`)
|
||||
- 项目仓库初始化(Gitea: ericwyuan/NexusAI)
|
||||
- NAS→各渠道直连稳定性验证、frp 隧道打通、四容器(mysql/one-api/lobe-chat/nginx)部署上线,端到端 `https://129.146.203.203/` 已可访问(详见 [PROGRESS.md](PROGRESS.md))
|
||||
- NAS→各渠道直连稳定性验证、frp 隧道打通、四容器(mysql/one-api/lobe-chat/nginx)部署上线,端到端 `https://129.146.203.203:3210/` 已可访问(详见 [PROGRESS.md](PROGRESS.md))
|
||||
|
||||
### 待办(见 SDD 第 8 章待确认事项)
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ services:
|
||||
restart: always
|
||||
ports:
|
||||
# NAS 本机 80/443 已被其他服务占用(DSM/其他容器),改用 8443
|
||||
# 甲骨文 frp 隧道(frpc.toml [[proxies]] name=nexusai)将公网 443 转发到 NAS 的 8443
|
||||
# 甲骨文 frp 隧道(frpc.toml [[proxies]] name=nexusai)将公网专属端口 3210 转发到 NAS 的 8443
|
||||
- "8443:443"
|
||||
volumes:
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
|
||||
@@ -378,4 +378,4 @@ networks:
|
||||
3. ~~是否需要接入 Prometheus/Grafana~~ **默认结论**:本期不接入,沿用 SDD 6.4 既定的轻量监控(`docker compose ps` + One-API 后台渠道页面);用量不大,暂不需要额外可视化监控栈
|
||||
4. **域名与证书**:尚未有正式域名,当前用**临时自签名证书**(`certs/fullchain.pem`/`privkey.pem`,CN=nexusai.local)跑通链路,浏览器会提示"不安全"但功能不受影响;若紫川后续购买/已有域名,替换证书为 Let's Encrypt 即可,无需改动其他组件——**此项仍待紫川决定是否购买域名**
|
||||
5. ~~NAS 到各海外 API 官方域名的直连稳定性验证~~ **已完成(2026-08-23)**:五渠道 TCP/TLS 握手均 2 秒内完成,NAS 出站直连稳定,无需额外代理
|
||||
6. ~~甲骨文反代方式确认~~ **已完成(2026-08-23)**:采用 frp 隧道(与 FAM 项目一致),复用 Oracle 上已运行的 `frps`,NAS `frpc.toml` 新增 `nexusai` 代理(remotePort 443 → NAS 8443)
|
||||
6. ~~甲骨文反代方式确认~~ **已完成(2026-08-23)**:采用 frp 隧道(与 FAM 项目一致),复用 Oracle 上已运行的 `frps`,NAS `frpc.toml` 新增 `nexusai` 代理(remotePort **3210**(专属端口,非默认 443,与 gitea:3000/wordpress:8500/fam-core:8000 同一约定)→ NAS 8443),对外访问地址为 `https://129.146.203.203:3210`
|
||||
|
||||
Reference in New Issue
Block a user