自架中繼伺服器(TURN)並連接 Any Display

Any Display 產品團隊

中繼伺服器(TURN)會在兩台裝置無法直接互連時,在兩者之間代為轉送畫面、聲音與輸入。Any Display 通常讓裝置直接連線,但在公司、學校網路或部分行動網路這類會阻擋直連的環境中,遠端控制和遠端相機需要中繼伺服器才能連上。

為什麼需要它?在網際網路上,每台裝置通常都在各自的路由器或電信業者設備之後,因此兩台裝置不一定能直接找到對方的位址。多數情況下 Any Display 仍能找到直連路徑,但安全規則嚴格的網路會阻擋這種方式。這時準備一台雙方都能連到的中繼伺服器,兩台裝置就會經由它連線。畫面在裝置之間保持加密傳送,伺服器無法看到內容。本指南會依序說明如何在 Mac、Linux 或 Windows 上安裝免費的 TURN 伺服器 coturn,設定使用者名稱與密碼,並填入應用程式。

判斷重點

什麼時候需要中繼伺服器?

在公司或學校網路遠端控制家裡的電腦

安全管控嚴格的網路,常會阻擋裝置之間的直接連線。經由自己的中繼伺服器就能連上。

用行動網路觀看遠端相機

部分電信業者的行動網路很難直接連線。即使經過家裡的中繼伺服器,延遲通常也接近即時。

連線一直停在「連線中」

如果同一個帳號的裝置在遠端連線時一直等待,可能是直接連線被阻擋了。

  1. 1

    準備:伺服器電腦與位址

    中繼伺服器要安裝在一直開著的電腦上,例如家裡或辦公室的 Mac mini、Linux 迷你電腦、Windows PC,或雲端伺服器(VPS)都可以。請先記下兩個位址。公用 IP:在那台電腦的終端機輸入 curl -4 ifconfig.me 即可看到。內部 IP:Mac 用 ipconfig getifaddr en0,Linux 用 hostname -I,Windows 用 ipconfig 查詢(例如 192.168.0.20)。

    在路由器的 DHCP 設定中為這台電腦保留(固定)內部 IP,之後連接埠轉送才不會失效。

  2. 2

    建立設定檔並設定使用者名稱和密碼

    三種作業系統都使用一個像下面這樣的 turnserver.conf 檔案。user= 這一行就是要輸入到 Any Display 的使用者名稱和密碼,格式是 user=使用者名稱:密碼,請把 myname 和 CHANGE-THIS-LONG-PASSWORD 換成自己的值。密碼請使用夠長的隨機字串,在終端機輸入 openssl rand -base64 24 就能產生一組。密碼中不要使用冒號(:)。

    如果電腦在路由器後方,external-ip 請寫成 公用IP/內部IP(使用上一步查到的值)。如果是公用 IP 直接設在伺服器上的 VPS,可以刪掉這一行。min-port 到 max-port 是中繼使用的 UDP 連接埠範圍。個人使用 41 個就很夠了,多人同時使用時再加大範圍。

    listening-port=3478
    fingerprint
    lt-cred-mech
    realm=anydisplay
    user=myname:CHANGE-THIS-LONG-PASSWORD
    min-port=49160
    max-port=49200
    external-ip=203.0.113.10/192.168.0.20
    no-tls
    no-dtls
    no-cli
    no-multicast-peers
  3. 3

    在 macOS 上安裝(Homebrew)

    已安裝 Homebrew 的話,在終端機依序輸入下面的指令。第二個指令會開啟設定檔,貼上上一步的設定內容後儲存(nano 中按 Control+O、Enter、Control+X)。Intel Mac 的路徑是 /usr/local/etc/turnserver.conf。

    sudo brew services start coturn 會在 Mac 開機時自動啟動中繼伺服器,即使還沒有人登入也一樣。如果「系統設定 › 網路 › 防火牆」已開啟,請允許 turnserver 的傳入連線。

    brew install coturn
    nano /opt/homebrew/etc/turnserver.conf
    sudo brew services start coturn
  4. 4

    在 Linux 上安裝(Ubuntu、Debian)

    用下面的指令安裝 coturn,並把前面步驟的設定內容放進 /etc/turnserver.conf。較舊的 Debian、Ubuntu 套件需要刪掉 /etc/default/coturn 中 TURNSERVER_ENABLED=1 前面的 # 才會啟動。systemctl enable --now 會立即啟動,重新開機後也會自動執行。

    沒有使用 ufw 防火牆的話,可以略過最後兩行。Fedora、RHEL 請用 sudo dnf install coturn 安裝,設定檔是 /etc/coturn/turnserver.conf。如果是雲端伺服器,也要在服務商的安全群組或防火牆中開放 UDP 3478 和 49160–49200。

    sudo apt update && sudo apt install coturn
    sudo nano /etc/turnserver.conf
    sudo systemctl enable --now coturn
    sudo ufw allow 3478/udp
    sudo ufw allow 49160:49200/udp
  5. 5

    在 Windows 上安裝(Docker Desktop)

    coturn 沒有 Windows 官方安裝程式,所以要用免費的 Docker Desktop 執行官方 coturn 映像檔。安裝 Docker Desktop 後,在設定中開啟「Start Docker Desktop when you sign in」(登入時啟動 Docker Desktop)。接著在 PowerShell 依序輸入下面的指令。記事本開啟後,貼上前面步驟的設定內容並儲存。

    在 Windows 上,external-ip 只要寫公用 IP,例如 external-ip=公用IP。最後一個防火牆指令請在系統管理員身分的 PowerShell 中執行。因為有 --restart unless-stopped,電腦重新開機後只要 Docker 啟動,中繼伺服器也會跟著恢復。

    mkdir C:\coturn
    notepad C:\coturn\turnserver.conf
    docker run -d --name coturn --restart unless-stopped -p 3478:3478/udp -p 49160-49200:49160-49200/udp -v C:\coturn\turnserver.conf:/etc/coturn/turnserver.conf coturn/coturn
    New-NetFirewallRule -DisplayName "Any Display TURN" -Direction Inbound -Protocol UDP -LocalPort 3478,49160-49200 -Action Allow
  6. 6

    在路由器設定連接埠轉送

    在路由器管理頁面的連接埠轉送(Port Forwarding 或虛擬伺服器)選單中,新增兩條指向伺服器電腦內部 IP 的規則:UDP 3478 → 3478,以及 UDP 49160–49200 → 49160–49200。通訊協定一定要包含 UDP。

    如果你的路由器還接在電信業者的另一台路由器後面,或電信業者沒有提供公用 IP(CGNAT),家裡的伺服器就無法從外部連上。這時請改用雲端伺服器(VPS)搭配 Linux 安裝。

  7. 7

    變更使用者名稱或密碼並重新啟動

    要變更使用者名稱或密碼,請修改 turnserver.conf 中的 user= 這一行,然後重新啟動中繼伺服器。加入多行 user= 就能讓每個人使用各自的帳號;刪除的帳號在重新啟動後就無法再使用。下面是各作業系統的重新啟動指令。

    如果變更了密碼,記得也要更新 Any Display 中儲存的密碼。

    # macOS
    sudo brew services restart coturn
    # Linux
    sudo systemctl restart coturn
    # Windows (Docker)
    docker restart coturn
  8. 8

    在電腦 App 中輸入

    在 Mac 或 Windows 的 Any Display 中開啟「設定 › 網路 › 中繼伺服器(TURN)」。開啟「使用中繼伺服器」,在「伺服器位址」輸入 turn:公用IP:3478 格式的位址(範例如下)。沒有固定位址的話,也可以使用路由器的 DDNS 名稱,例如 turn:myhome.example.com:3478。在「使用者名稱」和「密碼」輸入 user= 這一行設定的值。

    按「測試連線」,出現「連線成功,可以透過這台伺服器中繼。」後按「儲存」。輸入「伺服器名稱」並按「儲存到列表」,它就會保留在「已儲存的伺服器」中,之後可以直接載入。

    turn:203.0.113.10:3478
  9. 9

    在手機或平板 App 中輸入

    在 iPhone、iPad 或 Android 的 Any Display 中開啟「設定 › 中繼伺服器(TURN)」,輸入和電腦 App 相同的伺服器位址、使用者名稱和密碼,然後點「測試連線」和「儲存」。只要在其中一台裝置設定即可,但如果你常在外面用行動網路連線,設定在手機上會比較方便。

  10. 10

    用「測試連線」的結果排除問題

    如果出現「伺服器沒有回應」,請檢查位址和連接埠、伺服器電腦是否開著、路由器的 UDP 3478 轉送,以及伺服器的防火牆。如果在同一個網路內用公用 IP 測試卻沒有回應,可能是路由器不支援 NAT 迴路(Hairpin NAT),請切換到行動網路後再測試一次。

    如果出現登入失敗,代表已連到伺服器,但使用者名稱或密碼錯誤。請確認與 user= 這一行完全相同(包含大小寫),修改設定後要重新啟動伺服器。如果測試通過,但遠端畫面一直沒有出現,請檢查 49160–49200 的轉送。

兩台裝置都要設定中繼伺服器嗎?
不用。只要在連線的兩台裝置其中一台設定即可,兩邊設定不同的伺服器也沒問題。
中繼伺服器的管理者看得到我的畫面嗎?
看不到。影像和聲音在裝置之間加密後才經過伺服器,伺服器無法解密。
可以用 turns:(TLS)嗎?
Any Display 的快速 UDP 路徑只使用 turn:(UDP)。建議使用 turn:位址:3478 格式,效果最好。
公用 IP 變了怎麼辦?
把 turnserver.conf 中的 external-ip 改成新位址,然後重新啟動伺服器。如果 App 中的伺服器位址使用 DDNS 名稱,就不需要修改。
可以多人共用一台中繼伺服器嗎?
可以。每個人新增一行 user=,如果同時使用的人很多,請一併加大 min-port 到 max-port 的範圍和連接埠轉送。

檢查依據

已於 2026 年 10 月 8 日使用 macOS 中繼伺服器(Homebrew coturn 4.18.0)與 Any Display 遠端相機連線確認。Linux 和 Windows 步驟依據 coturn 官方套件與 Docker 映像檔文件撰寫。

使用限制

官方來源

下載 Any Display價格