開源 · 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 的安全設定,在設定頁面上給出新增到閘道用的連線資訊,並做自我檢查。
  • 安全設定:只認臨時憑證,有額度限制,禁止轉發到內網和保留位址。