开源 · GPL-3.0 · 给动手能力强的用户

自建中继

网关和 iPhone 之间直连不通时,通话要经一台中继转发。默认用 SimNest 的中继;你也可以在自己的云主机或家里的 NAS 上跑一个,通话就经你自己的机器。

部署包的程序和安全配置都有自动测试,网关也能添加和使用自建中继;但在真实的云主机或 NAS 上从部署到通话的整条路还没有实地验证过。遇到问题欢迎提 Issue。

中继能看到什么

  • 中继只转发加密后的声音,听不到也改不了通话内容:通话两端之间另有端到端加密。
  • 自建中继不连接 SimNest 的服务。它的地址和密钥只在你的网关上,SimNest 的服务器不知道有这台中继。
  • 中继能看到通话两端的公网地址、什么时候通话、通了多久。所以它应该放在你自己管的机器上。

需要什么

  • 一台有公网地址的机器。云主机可以直接用;家里的机器要在路由器上做端口映射,而且宽带得有公网地址(运营商级 NAT 后面的机器当不了中继)。
  • Docker 和 Docker Compose。
  • 放行 3478 的 UDP 和 TCP,以及 49160 到 49200 的 UDP。
  • 每通电话大约占 100 kbps 上行带宽。

部署

下载部署包,复制配置文件,把 EXTERNAL_IP 填成这台机器的公网地址:

git clone https://github.com/simnest-app/relay.git
cd relay
cp .env.example .env

然后启动:

docker compose up -d

启动后,docker compose logs helper 里有一个设置页面的地址。在局域网里用浏览器打开它(云主机用 SSH 端口转发),把页面上的连接文字复制到网关“网络与中继”里的“自建中继”,网关会立刻实测一次。完整步骤见部署包说明。

里面有什么

  • coturn:TURN 中继,用官方镜像并按摘要固定版本(BSD-3 许可)。
  • 小助手:第一次运行生成密钥,写出 coturn 的安全配置,在设置页面上给出添加到网关用的连接信息,并做自检。
  • 安全配置:只认临时凭据,有限额,禁止转发到内网和保留地址。