开源 · 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 的安全配置,在设置页面上给出添加到网关用的连接信息,并做自检。
- 安全配置:只认临时凭据,有限额,禁止转发到内网和保留地址。