跳到正文

阿里云公网核心节点 (aliyun) 部署与更新手册

该目录保存阿里云公网节点的所有组件部署配置、服务定义与更新操作说明。

重要说明

  1. FreeSWITCH 软交换中心在阿里云上已经安装并稳定运行,无需再次安装或重新部署
  2. 阿里云主要负责:
    • Web 前端静态站点更新callflow-webpagecallout-webpagecallai-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.md

2. 服务与端口拓扑

服务监听端口 / 地址部署路径说明
Nginx0.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/spaAI 统一决策中台前端 SPA (callai.wangijun.com)
docs-site文档站静态资源/usr/app/ai-voice-docs/current平台技术文档站点 (ai-voice.wangijun.com)
callflow-esl127.0.0.1:9911 (ESL)
127.0.0.1:9912 (HTTP)
/usr/app/callflow-esl/Outbound ESL 呼叫流程控制服务
FreeSWITCH172.21.38.245:5066/7443
12015 (ESL), 30000-30199/UDP
/usr/local/freeswitch/已存在,软交换与 WebRTC 音频交换中心
FRPS0.0.0.0:7000
127.0.0.1:12000~12013
/usr/app/frp/接收 WSL 端反向穿透,仅绑定本地回环
coTURN0.0.0.0:3478 (UDP/TCP)
31000-31040/UDP
/etc/turnserver.confWebRTC 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 build

3.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.json

3.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 nginx

4. 验证与排障

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/

文档与代码在同一仓库维护,现有 Markdown 是唯一内容源。