通过镜像部署 opensips - housekeeper-software/tech GitHub Wiki

原理

为了部署简单,我们封装了opensips的容器,可以直接从阿里云上pull回来即可。  
整个opensips环境分为两个部分:  
1)opensips容器,其中包含opensips信令部分和mediaproxy-dispatcher 
2)mediaproxy-relay,这个需要直接安装到主机中,它会直接与容器中的dispatcher连接。  
   本质上,mediaproxy-relay可以安装到多个服务器上,而opensips只需要一台即可。  
   媒体流的负载均衡是通过dispatcher与relay之间协商解决。  
因为我们用到了docker的网桥,所以配置被极大的简化了。一般,我们需要配置三个地方即可。  
1)主机上的/etc/mediaproxy/config.ini中的[relay]部分  
[Relay]
dispatchers = 172.18.12.1 #这里是固定的,指向网桥中的opensips容器地址  
advertised_ip = {public} #这里是脚本中被替换的主机外网地址,如果是云主机,则是公网ip,如果本地主机,则是本机ip地址。  

2)opensips容器中的dispatcher不需要配置,已经配置为网桥上正确的地址  
3)opensips.cfg只需要配置:  # public是被脚本替换的公网ip
listen=udp:172.18.12.1:18888 as {public}:18888
listen=tcp:172.18.12.1:18888 as {public}:18888
listen=tls:172.18.12.1:18889 as {public}:18889

4)opensipsctlrc
SIP_DOMAIN={public} #脚本会替换为外网ip

注意事项

mysql容器也需要挂在网桥上,而且ip地址必须为 172.18.12.2
opensips容器挂在网桥上,而且ip必须为 192.18.12.1

概述

如果不是阿里云服务器,先要配置下 /etc/apt/sources.list,比如用清华源,或者阿里源替换,否则很忙。  
如是阿里云主机,则不需要替换。
安装分为三个阶段,需要分步执行。因为中间需要手工创建数据库表,没有办法一次执行完成。  
如果阿里云docker无法安装,可以从这里安装:  
https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/

构建基础环境

先准备公网ip地址,指的是服务器的公网ip地址   
执行 ./setup 公网ip

创建opensips数据表

docker exec -it sip /bin/bash
执行: opensipsdbctl create
根据提示操作,输入mysql数据库密码,然后两个yes即可
退出容器。

启动opensips

执行 ./start.sh

添加测试账号

docker exec sip sh -c "opensipsctl add test001 ssc82893388"

安装mediaproxy如果遇到 apt-get error

https://chrisjean.com/fix-apt-get-update-the-following-signatures-couldnt-be-verified-because-the-public-key-is-not-available/
apt-get 可能会出现如下的错误: verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5
此刻执行: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
然后再次 apt-get 即可成功。如果遇到多个错误提示,每个 pubkey都需要添加一次,只需要添加一次