FreeSWITCH的核心開發(fā)人員都使用Debian,但國內(nèi)好像用CentOS的比較多,再加上各種版本差異,因此,這個問題其實沒有一個最好的答案。我們一般會推薦Debian 10,但大多數(shù)人其實不聽我們的推薦。
不過,Docker的出現(xiàn)在一定情況下解決了這個問題。因此,我們做了一個xswitch-free Docker解決方案,獻給大家。希望大家能快速上手。
xswitch-free
xswitch-free是一個Docker鏡象,與https://xswitch.cn同款,有刪減。本鏡像一般都基于FreeSWITCH最新的版本,有一些我們自己的補丁。我們絕大多數(shù)的補丁都已經(jīng)合并到了上游的FreeSWITCH倉庫中,其它的一些補丁也會逐步開源出來。
很多朋友想試用FreeSWITCH,但是從源代碼安裝比較復(fù)雜。FreeSWITCH雖然有相應(yīng)的安裝包,但用起來也不那么方便。
現(xiàn)在,Docker已經(jīng)成了事實上的部署方式,我們xswitch.cn早已采用Docker容器化部署。為了大家更容易使用,我們做了這一鏡像,希望對大家有用。
環(huán)境準(zhǔn)備
首先,你要有一個Docker環(huán)境,如何安裝Docker超出了本文的范圍,您可以參閱以下鏈接,或自行查找相關(guān)資料安裝。安裝時注意有選擇國內(nèi)鏡像站點的一些設(shè)置比較有用,在以后使用的時候可以節(jié)省一些下載鏡像的時間。
https://www.runoob.com/docker/windows-docker-install.html
https://www.runoob.com/docker/ubuntu-docker-install.html
https://www.runoob.com/docker/macos-docker-install.html
https://yq.aliyun.com/articles/625403
Docker Compose也需要安裝,但不是必須的,只是下面的命令都依賴于Docker Compose。
本鏡像支持在Linux、Mac、Windows宿主機上運行。
快速上手
很簡單,先看命令:
- git clone https://github.com/rts-cn/xswitch-free.git
- cd xswitch-free
- make setup # 可選,生成。env,修改生成的。env里的環(huán)境變量
- make start
首先,Clone本項目,然后進入xswitch-free目錄,make setup會生成。env,里面是相關(guān)的環(huán)境變量,可以根據(jù)情況修改(一般至少要將EXT_IP改為你自己宿主機的IP)。最后make start會以NAT方式啟動容器。
啟動后,你就可以用你稱手的軟電話注冊到FreeSWITCH的IP上(默認(rèn)端口5060),用戶名密碼任意,打電話可以看到日志,注冊兩個不同的號碼可以互撥,試一把看爽不爽。
如果想進入控制臺,可以打開另一個終端,執(zhí)行make cli。
環(huán)境變量
以下環(huán)境變量,有相關(guān)的默認(rèn)值
- SIP_PORT:默認(rèn)SIP端口
- SIP_TLS_PORT:SIP TLS端口
- SIP_PUBLIC_PORT SIP public Profile端口
- SIP_PUBLIC_TLS_PORT:SIP public Profile TLS端口
- RTP_START:起始RTP端口
- RTP_END:結(jié)束RTP端口
- EXT_IP:宿主機IP,或公網(wǎng)IP,默認(rèn)SIP Profile中的ext-sip-ip及ext-rtp-ip會用到它。
- FREESWITCH_DOMAIN:默認(rèn)的FreeSWITCH域
- LOCAL_NETWORK_ACL:默認(rèn)為none,在host網(wǎng)絡(luò)模式下可以關(guān)閉。
配置
本鏡像沒有使用FreeSWITCH的默認(rèn)配置,F(xiàn)reeSWITCH的默認(rèn)配置為了展示FreeSWITCH各種強大的功能設(shè)計,復(fù)雜且初學(xué)者難以理解,所以,我們使用了最小化的配置,目標(biāo)是讓使用者快速上手,并進一步細化打造自己的鏡像和容器。
以下配置接受任何注冊和打電話。也就是說,你可以用軟電話。
param name="accept-blind-reg" value="true"/
param name="accept-blind-auth" value="true"/
如果沒有配置EXT_IP環(huán)境變量,需要將配置中如下內(nèi)容注釋掉。
param name="ext-rtp-ip" value="$${ext_rtp_ip}"/
param name="ext-sip-ip" value="$${ext_sip_ip}"/
常用命令
常用命令都在Makefile中,看起來也很直觀。如果你的環(huán)境中沒有make,也可以直接運行相關(guān)的命令。
- make setup:初始化環(huán)境,如果。env不存在,會從env.example復(fù)制。
- make start:啟動鏡像。
- make run:啟動鏡像并進入后臺模式。
- make cli:進入容器并進入fs_cli。
- make bash:進入容器并進入bash Shell環(huán)境?梢赃M一步執(zhí)行fs_cli等。
- make stop:停止容器。
- make pull:更新鏡像,更新后可以用。
如果沒有安裝Docker Compose,也可以直接使用Docker命令啟動容器,如:
docker run --rm --name xswitch-free \
-p 5060:5060/udp \
-p 2000-2020:2000-2020/udp \
-e ext_ip=192.168.7.7 \
-e sip_port=5060 \
-e sip_public_port=5080 \
-e rtp_start=2000 \
-e rtp_end=2010 \
xswitch-free
可以看出,這樣需要輸入很多參數(shù),所以,還是使用Docker Compose比較方便。
修改配置
可以直接進入容器修改配置,并在終端上reload xml或重載相關(guān)模塊使之生效。但在容器重啟后修改會丟失。
如果想保持自己的修改,那就需要把配置文件放到宿主機上。通過以下命令可以生成默認(rèn)的配置文件。
make eject
然后修改docker-compose.yml,取消掉以下行的注釋:
volumes:
-conf/:/usr/local/freeswitch/conf:cached
修改后需要重啟鏡像:
- make stop
- make start
- host模式網(wǎng)絡(luò)
典型的Docker容器運行方式是NAT型的網(wǎng)絡(luò),有時候,使用host模式網(wǎng)絡(luò)會比較方便(因為少了一層NAT)。本鏡像不需要特殊的配置就可以使用host網(wǎng)絡(luò),只需要在docker-compose.yml中啟用即可。
如果環(huán)境變量中沒有EXT_IP,則可能無法啟動Sofia Profile,請禁掉default.xml和public.xml中的ext-sip-ip和ext-rtp-ip參數(shù)。
默認(rèn)的配置是NAT模式,我們在Profile中啟動了如下配置:
param name="local-network-acl" value="$${local_net_acl}"/
注意,該環(huán)境變量默認(rèn)為none,它實際上是一個不存在的ACL,所以FreeSWITCH對任何來源IP都會認(rèn)為它在NAT后面。
如果在host網(wǎng)絡(luò)模式下可以在。env中注釋掉這個環(huán)境變量,讓它使用默認(rèn)的localnet.auto。
制作自己的鏡像
你可以根據(jù)本鏡像制作自己的鏡像。ToDo
報告問題
如果你發(fā)現(xiàn)有任何問題,請到Git Hub給我們提一個Issue。
歡迎提Pull Request。
測試號碼
默認(rèn)配置可以撥打如下測試號碼:
- 9196 回音測試Echo
- 888 XSWITCH技術(shù)服務(wù)電話
- 3000 進入會議
- 其它號碼,查找本地注冊用戶
關(guān)于我們
我們是https://xswitch.cn背后的團隊。
FAQ
- Q:本鏡像是否適合在生產(chǎn)使用?
- A:我們就是在生產(chǎn)上使用的,所以,沒有任何問題。只是,我們默認(rèn)的配置是為了幫助大家學(xué)習(xí)和入門,在生產(chǎn)上使用,推薦使用我們有商業(yè)技術(shù)支持的版本。
- Q:我可以安裝其它軟件嗎?
- A:本鏡像基于Debian Buster制作,你可以使用apt-get update以及apt-get install xxxx安裝任何其它軟件。
廣告福利時間:
2020年最新一期FreeSWITCH高級培訓(xùn)正在火熱報名中,F(xiàn)在掃描圖片二維碼還可以享受8折優(yōu)惠,想報名的小伙伴要抓緊時間啦!
另外,該鏡像是我們在xswitch.cn上使用的鏡像的精簡版,如果你想了解更多不妨閱讀下面的幾篇文章:
XSWITCH,我自己的通信助手
XSWITCH大規(guī)模視頻會議解決方案
說說遠程辦公和視頻會議
文章詳情https://github.com/rts-cn/xswitch-free了解~