外呼系统《FreeSwitch1.10.7部署指南和Docker容器化》(2022版)_freeswitch docker-程序员宅基地

技术标签: 外呼系统  freeswitch  debian  docker  

自己制作一个 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 的多节点高可用做更多介绍,并全部更新到私有化部署版本。后续我会对各电话外呼中心,电话网络基建进行更多的详尽解释,喜欢可以关注我~有问题可以留言或私信我

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012960155/article/details/122853998

智能推荐

古典密码技术_了解古典密码的算法 了解古典密码的详细步骤 掌握古典密码的基本原理-程序员宅基地

文章浏览阅读7.4k次,点赞4次,收藏18次。古典密码技术古典密码是密码学中的其中一个类型,其大部分加密方式都是利用替换式密码或移项式密码,有时则是两者的混合。其于历史中经常使用,但在现代由于计算机的出现,使得古典密码解密已经不再困难,已经很少使用,大部分的已经不再使用了。古典密码技术根据其基本原理大体可以分为两类:替换密码技术和换位密码技术。替换密码技术替换密码技术是基于符号替换的密码技术。一般有单字符单表替换密码技术、单字符多表..._了解古典密码的算法 了解古典密码的详细步骤 掌握古典密码的基本原理

liunx中ls -la-程序员宅基地

文章浏览阅读1.4w次,点赞2次,收藏7次。ls 列出目录(文件夹)中的文件和子目录-l 长格式列出-a 显示所有文件,包括隐藏文件和目录(所有以“.”为开始的文件和目录为隐藏文件)所以ls -la 是列出当前目录中的所有文件和目录,包括隐藏文件和目录但不是查看文件里面的内容,查看文件的里的内容用的是more,less,cat等命令_ls -la

Java pta 面对对象(下)_定义一个车辆类(vehicle)和它的一个子类——客车类(bus),具体要求如下:(1)车辆类v-程序员宅基地

文章浏览阅读984次,点赞21次,收藏18次。Java pta 面对对象(下)7-1 定义一个车辆类和它的一个子类——客车类7-2 jmu-Java-03面向对象基础-04-形状-继承_定义一个车辆类(vehicle)和它的一个子类——客车类(bus),具体要求如下:(1)车辆类v

图像处理中常用的彩色模型_cmy-程序员宅基地

文章浏览阅读3.6w次,点赞10次,收藏68次。颜色模型就是描述用一组数值来描述颜色的数学模型。在彩色图像处理中,选择合适的彩色模型是很重要的。从应用的角度来看,彩色模型可分为两类:面向硬件设备的彩色模型面向视觉感知的彩色模型_cmy

计算机毕业设计 SSM+Vue健身房系统 健身会员管理系统 健身俱乐部管理系统 健身会所管理系统 健身预约教练管理系统Java Vue MySQL数据库 远程调试 代码讲解_ssm vue健身管理系统源码百度网盘-程序员宅基地

文章浏览阅读146次。计算机毕业设计 SSM+Vue健身房系统 健身会员管理系统 健身俱乐部管理系统 健身会所管理系统 健身预约教练管理系统_ssm vue健身管理系统源码百度网盘

LangChain - Chain-程序员宅基地

文章浏览阅读771次,点赞20次,收藏25次。1、概览为什么我们需要链?2、快速入门 (Get started) - Using `LLMChain`多个变量 使用字典输入在 `LLMChain` 中使用聊天模型:3、异步 API4、不同的调用方法`__call__`调用仅返回输出键值 return_only_outputs只有一个输出键 run只有一个输入键5、自定义chain6、调试链 (Debugging chains)7、从 LangChainHub 加载8、添加记忆(state)9、序列化将chain 保存到

随便推点

TailwindCSS为前端开发者带来了什么?_tailwindcss的优点-程序员宅基地

文章浏览阅读2.3k次。什么是Tailwind CSS?Tailwind CSS是一个功能类优先的CSS框架,它集成了flex、text-center这样的类,Tailwind CSS希望实现的是开发者无需离开HTML页面,即可快速创建出各种样式效果。Tailwind CSS相较于其他CSS框架有什么优势?优势1:Tailwind CSS类名具有较好的语义化传统的语义化类名是CSS难以维护的重要原因,也就是说起名很麻烦,但是Tailwind CSS的语义化类名可以很好的解决这个问题,例如:text-lg:表示一个_tailwindcss的优点

python 设置全局变量-程序员宅基地

文章浏览阅读8.2k次,点赞3次,收藏14次。python 设置全局变量,跨文件使用_python 设置全局变量

遍历磁盘_遍历所有移动硬盘-程序员宅基地

文章浏览阅读1.2k次。#include "stdafx.h"#include int main(){ TCHAR buf[MAX_PATH] = {}; int nDriveType; //1 获取磁盘盘符 GetLogicalDriveStrings(MAX_PATH, buf); TCHAR* pDrives = buf; while (_遍历所有移动硬盘

element-ui的隐藏组件el-scrollbar的使用(解决原生滚动条没有隐藏的问题 高宽设置)_el-scrollbar__wrap-程序员宅基地

文章浏览阅读1.3w次,点赞9次,收藏27次。element-ui的官网页面使用的这个滚动条,但是在官网文档中没有介绍这个组件。在vue+elementui搭建的前端项目中使用这个el-scrollbar组件。在项目中使用这个组件时由于各层的样式没有设置好,可能会显示出原生的滚动条,特此记录。搭建脚手架项目,安装element-ui插件按需引入需要的组件import Vue from 'vue'import { Scrollbar} from 'element-ui'Vue.use(Scrollbar)使用<_el-scrollbar__wrap

LabVIEW开发TDS1000 和TDS2000 系列泰克示波器_泰克示波器 labview-程序员宅基地

文章浏览阅读392次,点赞2次,收藏3次。泰克示波器是经常用到的工具,一般手动操作即可,但有时候也要集成到系统中,需要程控。这时候先要下载厂家提供的例子,了解LabVIEW的demo。示波器的功能挺多的,手册也是几百上千页,需要哪些功能,查找对应的部分就可以了。附件给出了LabVIEW的demo,需要的时候可以下载。手册可以到官网上下载,如果查不到,也可以联系厂家在线的技术,他们也会及时提供的。这是LabVIEW的一个功能介绍,更多的使用方法与开发案例,欢迎登录官网,了解更多信息。根据通讯协议的相关的说明,编写了适合项目的程序。_泰克示波器 labview

USB转2路RS422串口_ch347转接rs422-程序员宅基地

文章浏览阅读958次。默认建议使用厂商提供的VCP串口驱动程序。CH342DS1.PDF - 南京沁恒微电子股份有限公司CH342技术手册,USB转双串口芯片,支持最高3M波特率,串口信号支持1.8~5V,内置晶振。CH342芯片支持最高4Mbps串口波特率,如果对波特率有更高的需求,可以选择支持9Mbps的高速USB转接芯片CH347,使用单个CH342芯片即可实现USB一拖二串口转接产品,内置USB收发器和控制器、高速全双工串口控制器、以及每个UART内置独立的串口收发FIFO,可轻松满足各类串口波特率下的连续稳定通信。_ch347转接rs422