外观
阿里云公网核心节点 (aliyun) 部署与更新手册
该目录保存阿里云公网节点的所有组件部署配置、服务定义与更新操作说明。
重要说明:
- FreeSWITCH 软交换中心在阿里云上已经安装并稳定运行,无需再次安装或重新部署。
- 阿里云主要负责:
- Web 前端静态站点更新:
callflow-webpage、callout-webpage、callai-webpage三个 SPA 产物与文档站托管;- 业务编排服务更新:
callflow-esl二进制、配置更新与 systemd 托管;- 公网入口与安全终结:Nginx (HTTPS/WSS 终结、反代、录音与静态托管);
- 穿透与中继基础服务:FRPS (
7000) 与 coTURN (3478/31000-31040)。
1. 目录结构与职责
text
deploy/aliyun/
├── nginx/ # 公网 Nginx 反向代理、HTTPS SSL 终结与前端 SPA 静态托管
│ ├── ai-voice-public.conf
│ └── README.md # server 块清单、反代规则、缓存与安全约定、排障速查
├── callflow-esl/ # FreeSWITCH Outbound ESL 业务编排服务
│ ├── callflow-esl.config.json
│ └── callflow-esl.service
├── freeswitch/ # 核心 SIP 软交换中心配置参考树 (已有,无需重复部署)
│ ├── autoload_configs/
│ ├── dialplan/
│ ├── directory/
│ └── tls/
├── frp/ # FRP 反向代理穿透服务端 (FRPS)
│ ├── frps.toml
│ └── frps.service
├── coturn/ # WebRTC 5G 软电话 STUN/TURN 穿透服务
│ ├── turnserver.conf.example
│ ├── coturn.service
│ └── README.md
└── docs-site/ # 官方文档站点 (ai-voice.wangijun.com) Nginx 配置
├── nginx.conf
├── nginx-http-bootstrap.conf
└── README.md2. 服务与端口拓扑
| 服务 | 监听端口 / 地址 | 部署路径 | 说明 |
|---|---|---|---|
| Nginx | 0.0.0.0:80, 443 | /etc/nginx/ | 9 域名 HTTPS/WSS 终结、静态 SPA 托管与 API 反代(规则详见 nginx/README.md) |
| callflow-webpage | 前端静态资源 | /usr/app/webpage/callflow-webpage/dist/spa | 呼叫流程可视化前端 SPA (callflow.wangijun.com) |
| callout-webpage | 前端静态资源 | /usr/app/webpage/callout-webpage/dist/spa | 智能外呼与坐席管理前端 SPA (callout.wangijun.com) |
| callai-webpage | 前端静态资源 | /usr/app/webpage/callai-webpage/dist/spa | AI 统一决策中台前端 SPA (callai.wangijun.com) |
| docs-site | 文档站静态资源 | /usr/app/ai-voice-docs/current | 平台技术文档站点 (ai-voice.wangijun.com) |
| callflow-esl | 127.0.0.1:9911 (ESL)127.0.0.1:9912 (HTTP) | /usr/app/callflow-esl/ | Outbound ESL 呼叫流程控制服务 |
| FreeSWITCH | 172.21.38.245:5066/744312015 (ESL), 30000-30199/UDP | /usr/local/freeswitch/ | 已存在,软交换与 WebRTC 音频交换中心 |
| FRPS | 0.0.0.0:7000127.0.0.1:12000~12013 | /usr/app/frp/ | 接收 WSL 端反向穿透,仅绑定本地回环 |
| coTURN | 0.0.0.0:3478 (UDP/TCP)31000-31040/UDP | /etc/turnserver.conf | WebRTC NAT 穿透与媒体中继 |
3. 前端与 ESL 部署/更新操作指南
3.1 步骤一:构建前端产物与 ESL 二进制
在本地(Windows / 开发机)根目录下执行构建:
bash
# 1. 构建三个 Quasar 前端 SPA 静态包 (默认 API 前缀为同域 /api)
bun run --cwd apps/callflow-webpage build
bun run --cwd apps/callout-webpage build
bun run --cwd apps/callai-webpage build
# 2. 构建 callflow-esl Linux x64 独立二进制
bun run --cwd apps/callflow-esl build3.2 步骤二:上传并部署至阿里云服务器
bash
# 1. 创建远程目标目录
ssh aliyun "mkdir -p /usr/app/webpage/{callflow-webpage,callout-webpage,callai-webpage}/dist/spa /usr/app/callflow-esl"
# 2. 同步前端静态 SPA 产物(精准部署至 dist/spa 目录)
scp -r apps/callflow-webpage/dist/spa/* aliyun:/usr/app/webpage/callflow-webpage/dist/spa/
scp -r apps/callout-webpage/dist/spa/* aliyun:/usr/app/webpage/callout-webpage/dist/spa/
scp -r apps/callai-webpage/dist/spa/* aliyun:/usr/app/webpage/callai-webpage/dist/spa/
# 3. 同步 callflow-esl 二进制与配置文件
scp apps/callflow-esl/dist/callflow-esl aliyun:/usr/app/callflow-esl/
scp deploy/aliyun/callflow-esl/callflow-esl.config.json aliyun:/usr/app/callflow-esl/config.json3.3 步骤三:权限设置与服务重启
登录阿里云执行服务重载与生效:
bash
ssh aliyun
# 1. 设置可执行权限与目录属主(必须保证 a+rX 权限,避免 Nginx 404)
chmod +x /usr/app/callflow-esl/callflow-esl
chmod -R a+rX /usr/app/webpage/
chown -R aivoice:aivoice /usr/app/callflow-esl /usr/app/webpage
# 2. 重启 callflow-esl 服务
sudo systemctl restart callflow-esl
sudo systemctl status callflow-esl
# 3. 检查 Nginx 配置并平滑重载
sudo nginx -t && sudo systemctl reload nginx4. 验证与排障
bash
# 1. 验证 callflow-esl 监听状态 (9911 与 9912)
ss -tulpn | grep -E '9911|9912'
# 2. 验证 ESL HTTP 接口健康状态
curl -H "Token: esl-0x21" http://127.0.0.1:9912/health
# 3. 验证 FreeSWITCH Inbound ESL 状态 (已有 12015 端口)
nc -zv 127.0.0.1 12015
# 4. 验证公网 HTTPS / WSS 域名解析与证书状态
curl -Iv https://callflow.wangijun.com/
curl -Iv https://callout.wangijun.com/
curl -Iv https://callai.wangijun.com/
curl -Iv https://ai-voice.wangijun.com/