# 公司 NAS Web Station 与工作手机 SDK 配置

> 更新：2026-07-12

## 结论

工作手机 SDK 是 FastAPI + WebSocket 服务，不能直接作为 PHP 网站放进 Web Station 的站点根目录运行。正确分工是：

```text
Container Manager
  └─ workphone-sdk-nas :8899  ← FastAPI、控制台、WebSocket、Mongo、Redis

DSM 登录门户/反向代理（可选）
  └─ workphone 域名 :443      ← 反代到 127.0.0.1:8899

Web Station（可选）
  └─ 仅放静态说明页、下载页或前端构建产物
```

## NAS 已登记的运行目录

- 项目目录：`/volume1/docker/workphone-sdk`
- Compose：`docker-compose.nas.yml`
- SDK：`workphone-sdk-nas`
- 控制台：`http://192.168.110.101:8899/hub`
- 健康检查：`http://192.168.110.101:8899/health`
- WebSocket：`ws://192.168.110.101:8899/ws/device/{device_id}`

## Container Manager 操作

在 DSM → Container Manager → 项目中打开 `workphone-sdk`：

1. 项目路径选择 `/volume1/docker/workphone-sdk`。
2. Compose 文件选择 `docker-compose.nas.yml`。
3. 确认 `.env` 保留在 NAS，不从本机覆盖。
4. 点击“构建”并“启动”。
5. 等待 `workphone-mongo-nas` 健康后，再确认 `workphone-sdk-nas` 为运行中。
6. 查看日志，确认没有 Mongo/Redis 连接错误。

## Web Station 配置建议

如果只需要访问 SDK 控制台，不必建立 Web Station 网站，直接使用 NAS 内网 8899 即可。

如果需要统一域名和 HTTPS：

1. 在 DSM → 控制面板 → 登录门户 → 高级 → 反向代理新增规则。
2. 来源协议 HTTPS、来源主机填 SDK 域名、来源端口 443。
3. 目标协议 HTTP、目标主机 `127.0.0.1`、目标端口 `8899`。
4. 开启 WebSocket 支持；`/ws/` 不能被静态站点规则吞掉。
5. 手机 Agent 地址改为 `wss://<SDK域名>/ws/device/{device_id}`。

## 验收

```bash
curl -fsS http://192.168.110.101:8899/health
curl -fsS http://192.168.110.101:8899/ready
curl -fsS http://192.168.110.101:8899/api/v3/integration/manifest
```

页面验收：`/hub` 可打开；容器重启后 SDK 自动恢复；手机 Agent 能上线并持续心跳；存客宝 BFF 能通过 API Key 访问 SDK。

## 当前状态

2026-07-12 已从本机同步最小运行集到 NAS 目录，并保留 NAS 原有 `.env`。由于当前 SSH 用户无法通过 sudo 操作 Container Manager，容器启动尚未完成；不把“文件已同步”标记为“服务已上线”。
