Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

第 181 章 FreeSWITCH

目录

181.1. Docker 安装
181.2. Rocky Linux / AlmiLinux 安装
181.3. 防火墙端口
181.4. 备份 freeswitch 配置文件
181.5. 基本配置 /etc/freeswitch/vars.xml
181.5.1. 默认密码
181.5.2. 领域
181.5.3. 公网IP地址
181.5.4. NAT 配置
181.5.5. 编码
181.5.6. 控制台日志级别
181.5.7. 样本参考
181.6. 配置 NAT
181.6.1. 旁路模式
181.6.2. 启用 100rel
181.7. switch.conf.xml
181.7.1. 仅用 mod_signalwire
181.8. 网关配置
181.9. 新增号段
181.10. logfile.conf.xml
181.10.1. 控制台日志配置
181.10.2. 日志文件配置
181.10.3. sofia.conf.xml 日志级别配置
181.10.4. switch.conf.xml 日志配置
181.11. 视频通话
181.12. 语音邮箱(voicemail)
181.13. 多租户(多领域)配置
181.13.1. 测试号码
181.13.2. 组呼叫配置
181.13.3. 代接电话
181.14. MySQL 模块配置
181.14.1. 安装 mariadb
181.14.2. 安装模块
181.14.3. 启用 mysql 支持
181.14.4. db.conf.xml
181.14.5. switch.conf.xml
181.14.6. 修改 sip_profile 配置文件
181.14.7. 检查配置
181.15. fs_cli
181.15.1. fs_cli Socket Client 配置
181.15.2. 退出 fs_cli
181.15.3. 日志
181.15.4. profile
181.15.5. sofia status
181.15.6. sip 抓包
181.15.7. internal 状态查看
181.15.8. external 状态
181.15.9. 注册状态查看
181.15.10. 呼叫
181.15.11. 呼叫
181.15.12. 呼叫测试
181.15.13. 正则测试
181.15.14. 变量求值
181.15.15. 会议管理
181.16. 中文语音包
181.17. TLS
181.17.1. 创建 CA 根证书
181.17.2. 创建服务器证书
181.17.3. 开启TLS,监听 5061 端口
181.18. Websocket
181.19. fusionPBX
181.20. 开发
181.20.1. FreeSWITCH 用户管理
181.20.2. Java 开发包
181.21. freeswitch Docker 配置案例
181.21.1. 备份 freeswitch 配置文件
181.21.2. 基本配置
181.21.3. 配置拨出规则号段
181.21.4. 禁用外部配置
181.21.5. Websocket 配置
181.21.6. Verto
181.21.7. docker 环境 freeswitch 管理
181.22. 备份和恢复
https://www.freeswitch.org/

181.1. Docker 安装

		
docker volume create --name freeswitch-sounds 		
docker pull safarov/freeswitch:latest
docker run --net=host --name freeswitch \
           -e SOUND_RATES=8000:16000 \
           -e SOUND_TYPES=music:en-us-callie \
           -v freeswitch-sounds:/usr/share/freeswitch/sounds \
           -v /etc/freeswitch/:/etc/freeswitch \
           safarov/freeswitch	
		
		

netkiller-devops Docker 编排工具

		
[root@netkiller ~]# pip install netkiller-devops		
[root@netkiller ~]# cat freeswitch.py 
#!/usr/bin/env python3
##################################################
# Home  : https://www.netkiller.cn
# Author: Neo <netkiller@msn.com>
# Upgrade: 2026-02-09
# Docker freeswitch
##################################################

import sys

try:
    sys.path.insert(0, ".")
    from netkiller.docker import *
except ModuleNotFoundError as err:
    print("pip install netkiller-devops, %s" % (err))
    exit()

# -----------------------------------------------------------------------------------------------
development = Composes("development")
testing = Composes("testing")
production = Composes("production")
# -----------------------------------------------------------------------------------------------
volumes = Volumes("freeswitch-sounds")

freeswitch = Services("freeswitch")
freeswitch.container_name("freeswitch")
freeswitch.image("safarov/freeswitch:latest")
freeswitch.restart("unless-stopped")
freeswitch.environment({"SOUND_RATES": "8000:16000", "SOUND_TYPES": "music:en-us-callie"})
freeswitch.volumes(["freeswitch-sounds:/usr/share/freeswitch/sounds","/etc/freeswitch/:/etc/freeswitch"])
freeswitch.network_mode('host')
#freeswitch.ports(["5060:5060","5060:5060/udp","16384-32768:16384-32768/udp","5066:5066","7443:7443"])
# freeswitch.working_dir("/app")
development.services(freeswitch)
development.volumes(volumes)
# -----------------------------------------------------------------------------------------------
if __name__ == "__main__":
    try:
        docker = Docker()
        docker.none()
        # docker.env({'DOCKER_HOST':'ssh://root@192.168.30.13','COMPOSE_PROJECT_NAME':'experiment'})
        # docker.sysctl({"vm.overcommit_memory": "1"})
        docker.environment(development)
        # docker.environment(testing)
        # docker.environment(production)
        docker.main()
    except KeyboardInterrupt:
        print("Crtl+C Pressed. Shutting down.")		
		
		

安装用户管理工具

		
pip install freeswitch