aI通知项目备份迁移使用说明
AI 智能外呼系统 - 完整备份与离线部署指南
目录
系统架构
当前系统由两部分组成:
1. Docker 容器部分
| 容器名 | 镜像 | 端口 | 用途 |
|--------|------|------|------|
| db | postgres:15-alpine | 5432 | PostgreSQL 数据库 |
| redis | redis:7-alpine | 6379 | Redis 缓存 |
| app | ai-call-tongzhi-app | 8000 | FastAPI Web 应用 |
| celery_worker | ai-call-tongzhi-app | - | Celery 异步任务处理 |
2. 宿主机部分
| 组件 | 版本 | 用途 |
|------|------|------|
| FreeSWITCH | 1.10.12 | SIP 呼叫服务器 |
| ESL TCP 代理 | Python 脚本 | Docker 内部连接 FreeSWITCH |
备份内容
执行备份后会生成以下文件:
`
backups/20260621/
├── install_offline.sh # 一键安装脚本(包含Docker和FreeSWITCH)
├── start.sh # 启动脚本
├── stop.sh # 停止脚本
├── docker-compose.yml # Docker 配置
├── Dockerfile # 应用镜像构建文件
├── requirements.txt # Python 依赖
├── .env # 环境变量
├── project_code.tar.gz # 应用源代码
├── database.sql # 数据库备份
├── recordings/ # 通话录音文件
├── images/ # Docker 镜像文件
│ ├── postgres_15_alpine.tar.gz
│ ├── redis_7_alpine.tar.gz
│ └── app.tar.gz
├── freeswitch/ # FreeSWITCH 配置
│ └── etc/freeswitch/
├── tcp_proxy_internal.py # ESL TCP 代理脚本
└── README.txt # 部署说明
`
在当前服务器执行备份
步骤 1:进入项目目录
`bash
cd /home/vboxuser/myxiangmu/ai-call-tongzhi
`
步骤 2:执行完整备份
`bash
执行备份脚本(需要约5-10分钟)
bash backup_full.sh
`
备份完成后会在当前目录生成 backups/20260621/ 目录。
步骤 3:复制到新服务器
`bash
方法1:使用scp传输(需要网络)
scp -r backups/20260621/ user@新服务器IP:/home/user/
方法2:使用U盘或移动硬盘
sudo cp -r backups/20260621/ /mnt/usb/
`
在新服务器部署
前提条件
步骤 1:复制备份文件到新服务器
将 backups/20260621/ 目录复制到新服务器的任意位置,例如 /home/user/backup/。
步骤 2:执行一键安装
`bash
进入备份目录
cd /home/user/backup/20260621/
给脚本添加执行权限
chmod +x install_offline.sh start.sh stop.sh
执行安装脚本(需要root权限)
sudo ./install_offline.sh
`
安装脚本会自动完成以下操作:
步骤 3:验证服务
`bash
检查容器状态
docker ps
检查 FreeSWITCH 状态
sudo systemctl status freeswitch
测试 Web 页面
curl http://localhost:8000
测试 SIP 注册
curl -X POST http://localhost:8000/api/config/test-sip
`
步骤 4:登录系统
打开浏览器访问:http://新服务器IP:8000
adminadmin123常见问题
1. Docker 安装失败
`bash
如果自动安装失败,手动安装 Docker
sudo apt-get update
sudo apt-get install -y docker.io docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
`
2. FreeSWITCH 启动失败
`bash
检查 FreeSWITCH 状态
sudo systemctl status freeswitch
查看日志
sudo journalctl -u freeswitch -f
重启 FreeSWITCH
sudo systemctl restart freeswitch
`
3. 容器启动失败
`bash
查看容器日志
docker compose logs app
docker compose logs celery_worker
重新构建并启动
docker compose up -d --build
`
4. ESL 连接失败
`bash
检查 TCP 代理是否运行
ps aux | grep tcp_proxy_internal
重启 TCP 代理
python3 tcp_proxy_internal.py &
测试 ESL 连接
nc -zv 127.0.0.1 8022
`
5. Web 页面无法访问
`bash
检查端口占用
netstat -tlnp | grep 8000
检查防火墙
sudo ufw status
sudo ufw allow 8000/tcp
`
管理命令
启动系统
`bash
cd /home/user/backup/20260621/
bash start.sh
`
停止系统
`bash
cd /home/user/backup/20260621/
bash stop.sh
`
查看日志
`bash
查看所有容器日志
docker compose logs -f
查看应用日志
docker compose logs app
查看任务日志
docker compose logs celery_worker
`
备份数据库
`bash
docker exec ai-call-tongzhi-db-1 pg_dump -U postgres ai_call > backup_$(date +%Y%m%d).sql
`
恢复数据库
`bash
cat backup.sql | docker exec -i ai-call-tongzhi-db-1 psql -U postgres ai_call
`
FreeSWITCH 配置说明
SIP 网关配置
配置文件位置:/etc/freeswitch/sip_profiles/external/outbound.xml
当前配置:
修改 SIP 配置
`bash
sudo vim /etc/freeswitch/sip_profiles/external/outbound.xml
sudo fs_cli -x "reloadxml"
`
技术支持
如遇到问题,请检查:
文档生成时间:2026年6月21日
系统版本:FreeSWITCH 1.10.12 + Docker + FastAPI