CopySync

CopySync / 連線方式

部署到公網伺服器

一部有公網 IP 的 Linux 雲端伺服器,最低配置已經足夠。每部電腦直接連線到它,在家、在公司、在外面都能同步,不用另外安裝軟件。

  1. 準備
  2. 開放端口
  3. 安裝伺服器
  4. 檢查
  5. 填寫地址
  6. 常見問題

所有電腦都直接連線到它

伺服器在公網上,每部電腦不論身處哪個網絡,都能直接連上。複製的內容優先在兩部電腦之間直連傳輸;打不通直連時經伺服器中轉,內容依然加密。

透過公網伺服器使用 CopySync 公網伺服器的地址是 203.0.113.10。Mac 在公司網絡裏,Windows 在家裏的網絡裏,兩部電腦都透過信令連接到伺服器;複製的內容在兩部電腦之間直連傳輸,打不通直連時經伺服器中轉。 公網伺服器 雲端伺服器,有公網 IP 203.0.113.10 公司網絡 家裏的網絡 信令 TCP 8787 中轉 UDP,打不通直連時 Mac 已安裝 CopySync Windows 已安裝 CopySync 直連 資料(直連) 資料(中轉,後備) 信令
  • 信令,TCP 8787。每部電腦一直連着它,用來發現對方、配對、交換連線資訊。
  • 直連。兩部電腦在不同網絡裏時,靠 NAT 打洞直接相連,大多數家庭和公司網絡都能打通。
  • 中轉,UDP 3478 與中轉端口。打不通直連時經伺服器轉發,內容依然加密,速度受伺服器頻寬限制。

開始之前

一部雲端伺服器
Linux,x86_64 或 ARM64 都可以,最低配置已經足夠,伺服器程式只佔約 15 MB 記憶體。需要 root 權限。
一個公網 IP
雲端伺服器本身的公網 IP 就可以,最好是固定的(彈性 IP)。地址改變了,每部電腦都要重新填寫。
能登入它
能用 ssh 登入,或者使用雲端供應商網頁上的遠端終端機。
在內地的雲端伺服器
域名未有 ICP 備案時,用戶端裏要直接填 IP,不能填域名,原因見下面的常見問題。

第 1 步

在安全群組裏開放端口

在雲端供應商的控制台,為這部雲端伺服器的安全群組加入下面三條入站規則。

  • 名稱不一樣:有些雲端供應商叫「防火牆」或「網絡 ACL」,都是指這一項。
  • 中轉端口由系統隨機分配,範圍以伺服器為準:執行 cat /proc/sys/net/ipv4/ip_local_port_range 查看,安裝腳本最後也會顯示出來。
  • 系統防火牆:如果開啟了 ufw 或 firewalld,這三條也要開放,安裝腳本最後會提供指令。

第 2 步

執行安裝腳本

把公網 IP 傳給安裝腳本,它會安裝好伺服器、註冊為開機自動啟動的 systemd 服務,最後顯示用戶端要填的地址。

  1. 用 ssh 登入伺服器,例如 ssh root@203.0.113.10(換成你的公網 IP)。
  2. 逐行執行,最後一行換成你的公網 IP:ARM 伺服器請把 amd64 換成 arm64。
    curl -LO https://github.com/baiyuze/copysync/releases/latest/download/copysync-server-linux-amd64.tar.gz
    tar xzf copysync-server-linux-amd64.tar.gz
    cd copysync-server-linux-amd64
    sudo ./install.sh 203.0.113.10
  3. 最後顯示的 ws://203.0.113.10:8787/signal 就是用戶端要填的地址。
  • 註冊為 systemd 服務,開機自動執行,設定檔在 /etc/copysync/server.env。
  • 升級:下載新版本,解壓後再執行 sudo ./install.sh,原有設定會保留。
  • 也可以用 Docker:見伺服器部署說明。

第 3 步

檢查能否連到它

在任何一部電腦的瀏覽器開啟 http://203.0.113.10:8787/healthz(換成你的公網 IP),看到下面這一行就代表連通了。

開啟不了的話,請看下面的常見問題。

第 4 步

在每部電腦上填寫地址

  1. 開啟設定

    在每部電腦上開啟 CopySync,進入「設置」。

  2. 填寫公網地址

    在「信令服務器地址」裏填 ws://203.0.113.10:8787/signal(換成你的公網 IP),按 Enter 儲存。

  3. 查看連線狀態

    「連接狀態」變成綠色的「已連接」就完成了。如果仍未配對,請在「設備」裏配對。

CopySync 的「設置」頁:「信令服務器地址」填着 ws://203.0.113.10:8787/signal,「連接狀態」顯示「已連接」

仍未安裝 App?見快速開始。

日後會用到的
狀態systemctl status copysync-server
日誌journalctl -u copysync-server -f
重新啟動sudo systemctl restart copysync-server
設定/etc/copysync/server.env,改完要重新啟動服務
升級下載新版本,解壓後再執行 sudo ./install.sh,原有設定會保留
解除安裝sudo ./install.sh uninstall

常見問題

填域名連不上,填 IP 卻能連上?

在內地的雲端伺服器上,域名未有 ICP 備案時,雲端供應商會攔截指向它的明文 HTTP 請求,回傳一個跳轉到攔截頁面的回應,實測 8787 這類非常用端口也一樣。WebSocket 握手也是一個 HTTP 請求,所以同樣會被攔截,用戶端就顯示「未連接」。

伺服器地址直接填 IP 就可以,例如 ws://伺服器IP:8787/signal;或者為域名辦理 ICP 備案。

需要多高的配置?

最低配置已經足夠。伺服器程式只佔約 15 MB 記憶體,平時只轉發很少量的信令訊息。複製的內容能直連時不會經過它;只有打不通直連、改經中轉時,速度才會受它的對外頻寬限制。

裝置之間顯示「中轉」,而不是「直連」?

剛連上時顯示中轉、過一會兒變成直連是正常的:先用中轉確保可用,閒置時再換成直連。如果一直是中轉,代表兩部電腦之間打不通,常見於端口隨機分配的 NAT 或嚴格的防火牆。內容同樣加密,只是速度受伺服器頻寬限制。

想用 HTTPS(wss://)?

可以放在 HTTPS 反向代理後面,用戶端填以 wss:// 開頭的地址,代理需要支援 WebSocket 升級。在內地的雲端伺服器上,域名需要 ICP 備案。STUN 與 TURN 走 UDP,不經過反向代理,安全群組照樣要開放。

家裏的寬頻有公網 IP,能當公網伺服器用嗎?

可以,但比雲端伺服器麻煩:要在路由器上把 TCP 8787、UDP 3478 和一大段中轉用的 UDP 端口轉發到那部電腦,家裏的公網 IP 也可能會改變。電腦都在家裏時,在同一個網絡裏根本不需要伺服器;要跨網絡又不想費神設定端口轉發,可以用Tailscale。

一部雲端伺服器,
在哪裏都能同步。

版本 1.6.4,免費開源。macOS 13 或以上;Windows 10、11;Linux(x64 與 ARM64)。

伺服器的完整部署說明(包括 Docker 與全部參數)