外呼系统《FreeSwitch1.10.7部署指南和Docker容器化》(2022版)
FreeSwitch1.10.7 制作Docker镜像,无需联网,稳定可控。FreeSWITCH 是一个电话的软交换解决方案,包括一个软电话和软交换机用以提供音视频服务。FreeSWITCH 可以用作交换机引擎、PBX、多媒体网关以及多媒体服务器等。
自己制作一个 FreeSwitch1.10.7 Docker 镜像
FreeSwitch1.10.7 介绍
根据百科,FreeSWITCH 是一个电话的软交换解决方案,包括一个软电话和软交换机用以提供音视频服务。FreeSWITCH 可以用作交换机引擎、PBX、多媒体网关以及多媒体服务器等。
Debian 10 "Buster" is the reference platform for FreeSWITCH™ as of version 1.10
Dependencies are available from FreeSWITCH repository via the "apt-get build-dep freeswitch" command.
注:官网将 Debian 10 (代号 Buster)作为参考平台,且容易获得所有需要的依赖包。
根据 2021.05.05 更新的官方文档描述,极力推荐大家使用 Debian 10 做为 FreeSwitch 的运行环境,相比 Centos 7 可以极大的减少环境异常,让我们把工作更聚焦在业务上。整体来说,FreeSwitch 的部署和基本运行还是比较容易的。
本文使用环境(点击跳转):
FreeSwitch-1.10.7
Docker debian:buster
NOTE:
1.FreeSwitch 采用源码编译, debian:buster 容器化部署,建议你查看本文后使用 debian 10 系统或 docker debian:buster 镜像,否则可能需要自己处理部分依赖和异常。
2.如果用虚拟机,可下载 debian 官方镜像
3.FreeSwitch 默认使用 SQLite 用来存放运行时的用户注册、通话状态和事件等数据记录,且都可以在 fs_cli 交互时用命令查询,暂无需额外关注。
4.确保你的端口开放状态,其中加粗为本文实例正常通话必须开放的端口,如udp:5060,udp:5061,udp:16384-32768,tcp:7443,tcp:8021
进入正文
直接进入正题,制作镜像使用经过我多次优化后的 Dockerfile 文件
FROM debian:buster
RUN echo deb http://mirrors.163.com/debian/ buster main non-free contrib > /etc/apt/sources.list \
&& echo deb http://mirrors.163.com/debian/ buster-updates main non-free contrib >> /etc/apt/sources.list \
&& echo deb http://mirrors.163.com/debian/ buster-backports main non-free contrib >> /etc/apt/sources.list \
&& echo deb-src http://mirrors.163.com/debian/ buster main non-free contrib >> /etc/apt/sources.list \
&& echo deb-src http://mirrors.163.com/debian/ buster-updates main non-free contrib >> /etc/apt/sources.list \
&& echo deb-src http://mirrors.163.com/debian/ buster-backports main non-free contrib >> /etc/apt/sources.list \
&& echo deb http://mirrors.163.com/debian-security/ buster/updates main non-free contrib >> /etc/apt/sources.list \
&& echo deb-src http://mirrors.163.com/debian-security/ buster/updates main non-free contrib >> /etc/apt/sources.list \
&& apt-get update && apt-get -y install wget vim procps zip gnupg \
&& echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.8/ buster main" > /etc/apt/sources.list.d/freeswitch.list \
&& echo "deb-src http://files.freeswitch.org/repo/deb/freeswitch-1.8/ buster main" >> /etc/apt/sources.list.d/freeswitch.list \
&& /bin/bash -c 'echo -e "\nPATH=\$PATH:/usr/local/freeswitch/bin" >> /etc/profile' \
&& /bin/bash -c 'echo -e "\nPATH=\$PATH:/usr/local/freeswitch/bin" >> /etc/bash.bashrc' \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BD3189F5A2B57698 \
&& apt-get update \
&& apt-get build-dep -y freeswitch \
&& wget https://codeload.github.com/signalwire/freeswitch/zip/refs/tags/v1.10.7 -O /usr/local/src/freeswitch-1.10.zip \
&& unzip -o -d /usr/local/src /usr/local/src/freeswitch-1.10.zip \
&& mv /usr/local/src/freeswitch-1.10.7 /usr/local/src/freeswitch-master
WorkDir /usr/local/src/freeswitch-master
RUN ./bootstrap.sh -j \
&& ./configure \
&& make -j4 && make install
CMD /bin/bash
保存名为 Dockerfile 的文件,执行:
docker build . -t buster_freeswitch_1.10.7:1.0 -f Dockerfile
部分资源已经使用了网易镜像源了,但有些资源还会下载较慢,耐心等待下载和编译安装完成
# 查看镜像
docker images | grep freeswitch
镜像已成功生成,大小3G,这是因为下载(需联网)和安装依赖、下载 FreeSwitch 主程序源码和解压安装等占用了大量空间,优点是一步到位可以直接快速运行。
NOTE:作者尝试最小化镜像可以控制在 996MB (非极限,本文就不再详细描述了),原理是 apt-get -d 提前下载所有依赖和主程序,运行镜像时再执行安装依赖、解压和安装主程序,因为提前下载了所有资源,运行可以离线安装而无需联网且排除网络因素后安装耗时比较稳定可控。
# 运行镜像
docker run \
--name=buster_freeswitch_1.10.7 \
--env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/freeswitch/bin \
--volume=/data:/data \
--network=host \
-itd \
buster_freeswitch_1.10.7:1.0
# 查看容器运行状态
docker ps | grep freeswitch
# 进入容器(需替换 container_id)
docker exec -it ${container_id} bash
注意以下配置项需要定制修改
vim /usr/local/freeswitch/conf/vars.xml
# 修改默认密码 default_password 如 pass20220101
# 如果需要外网可访问注册到电话系统 修改 domain=外网ip
# 基本配置完成,启动 FreeSwitch
# 先前台运行看看(后台运行命令 freeswitch -nc 可以 fs_cli 进入交互窗口)
freeswitch
# 成功运行,用 microsip 注册一个话机试试(xlite、linphone、microsip 等软件均可)
已经在线了,默认号码有 1000-1019,现在用另一台电脑登录两边互打了。
# 查看分机注册情况,FreeSwitch 交互窗口内输入
show registrations
更多命令和详细配置一定要去官网阅读调试,传送门
总结
希望大家通过本文能让大家快速使用 FreeSwitch 做 SIP 服务器和软电话系统。FreeSwitch 的多节点高可用可以看我另一篇文章,后面我们将用代理服务器对 FreeSwitch 做负载均衡配置和 OpenSIPS 的多节点高可用做更多介绍,并全部更新到私有化部署版本。后续我会对各电话外呼中心,电话网络基建进行更多的详尽解释,喜欢可以关注我~有问题可以留言或私信我
更多推荐
所有评论(0)