CopySync

CopySync / 連線方式

在區域網路裡架設伺服器

家裡或辦公室的電腦在同一個網路裡,就不需要雲端伺服器。找一台常開的電腦,下載並執行一個腳本,再把它顯示的位址填進每台電腦的 CopySync 裡。

在同一個網路裡,現在已經不需要伺服器了:裝好 App 直接配對就能用,見同一網路教學。這篇仍然適用於兩個網段之間互相連不到、需要經過一台兩邊都連得到的電腦中繼的情況。

  1. 準備
  2. 安裝伺服器
  3. 檢查
  4. 填位址
  5. 常見問題

伺服器只負責牽線

每台電腦都一直連著伺服器,靠它找到對方、交換連線資訊。連上之後,複製的內容在兩台電腦之間直接傳輸;只有直連打不通時,才經過它中繼,內容依然加密。

區域網路裡的 CopySync 在同一個區域網路裡,Mac 與 Windows 電腦透過信令連線到位址為 192.168.1.20 的伺服器,複製的內容在兩台電腦之間直連傳輸;直連不通時經伺服器的 TURN 中繼。 區域網路:同一個 Wi‑Fi 或有線網路 伺服器 192.168.1.20 信令 TCP 8787 中繼 UDP 3478,直連不通時 Mac 已安裝 CopySync Windows 已安裝 CopySync 直連,端對端加密 複製的內容只在兩台電腦之間傳輸 資料(直連) 資料(中繼,備用) 信令
  • 信令,TCP 8787。每台電腦都一直連著它,用來發現對方、配對、交換連線資訊。
  • 直連。在同一個區域網路裡,內容幾乎總是在兩台電腦之間直接傳輸,速度就是區域網路的速度。
  • 中繼,UDP 3478。只有在訪客網路、開了 AP 隔離的 Wi‑Fi、不同網段之間互相連不到時才會用到。

開始之前

一台常開的電腦
Windows 10、11,macOS 13 以上,或任何 Linux 都可以,用兩台電腦中的其中一台也行。它關機或睡眠時同步會暫停,醒來後自動恢復。NAS、軟路由、Mac mini 這類一直開著的裝置最適合,記憶體只佔約 15 MB。
一個固定的位址
在路由器的「DHCP 靜態分配」(也叫「DHCP 保留」「IP 與 MAC 綁定」)裡幫這台電腦固定一個位址。不然路由器換了位址,每台電腦都要重新填。
在同一個網路裡
裝置連同一個 Wi‑Fi 或有線網路就行。訪客網路、開了「AP 隔離」的 Wi‑Fi 不讓裝置互相連線,需要換個網路或關掉隔離。
離開這個網路就不會同步
伺服器只在區域網路裡連得到,筆電帶出門後,要回來才會繼續同步。

安裝伺服器

選擇伺服器所在電腦的系統。安裝腳本會自動找出本機的區域網路位址,把伺服器設成開機自動執行,最後顯示用戶端要填的位址。

Windows

  1. 下載 copysync-server-windows-amd64.zip,按右鍵選「解壓縮全部」。
  2. 打開解壓縮後的資料夾,按兩下 install.cmd。出現「Windows 已保護您的電腦」時,點「其他資訊」,再點「仍要執行」;跳出「使用者帳戶控制」時點「是」。伺服器還沒有程式碼簽章,所以會詢問這一次。
  3. 安裝會在新開的視窗裡進行。最後顯示的 ws://…/signal 就是用戶端要填的位址。
下載 Windows 版伺服器
  • 以 Windows 服務執行:開機就啟動,不用登入,也沒有視窗。在「服務」裡的名稱是 CopySync Server。
  • 防火牆已經開放:腳本新增了一條只針對 copysync-server.exe 的輸入規則,不用自己開連接埠。
  • 位址抓錯了(例如裝了虛擬機或 VPN,有好幾張網路卡):在解壓縮後資料夾的網址列輸入 cmd 再按 Enter,執行 install.cmd 192.168.1.20,換成你的位址。
  • 支援 Windows 10、11,x64。
之後會用到的
狀態在系統管理員 PowerShell 裡執行 Get-Service CopySyncServer,或在「服務」裡找 CopySync Server
記錄檔C:\ProgramData\CopySync Server\server.log
重新啟動在系統管理員 PowerShell 裡執行 Restart-Service CopySyncServer
升級下載新版本,解壓縮後再按兩下 install.cmd,原本的設定會保留
解除安裝按兩下 uninstall.cmd,服務、防火牆規則和檔案會一併刪除

macOS

  1. 打開「終端機」,逐行執行:
    curl -LO https://github.com/baiyuze/copysync/releases/latest/download/copysync-server-macos.tar.gz
    tar xzf copysync-server-macos.tar.gz
    cd copysync-server-macos
    ./install.sh
  2. 最後顯示的 ws://…/signal 就是用戶端要填的位址。
  • 不需要管理者權限。登入這台 Mac 後會自動在背景執行,意外結束時會被系統重新啟動。
  • 這台 Mac 不能進入睡眠:在「系統設定 → 能源」(筆電在「電池 → 選項」)裡開啟防止自動進入睡眠的選項。
  • 開著系統防火牆的話,腳本最後會給出開放 copysync-server 的指令。
  • Intel 與 Apple 晶片通用,macOS 13 以上。
之後會用到的
記錄檔~/Library/Logs/CopySync/server.log
重新啟動launchctl kickstart -k gui/$(id -u)/com.copysync.server
升級下載新版本,解壓縮後再執行 ./install.sh,原本的設定會保留
解除安裝./install.sh uninstall

Linux

  1. 在這台機器上(或用 ssh 登入後)逐行執行:ARM 裝置,例如裝了 64 位元系統的樹莓派,把 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
  2. 最後顯示的 ws://…/signal 就是用戶端要填的位址。
  • 註冊為 systemd 服務,開機自動執行。需要 root。
  • 開著 ufw 或 firewalld 的話,腳本最後會給出開放連接埠的指令。
  • 也可以用 Docker:把 env.example 複製為 .env,TURN_IP 填這台機器的區域網路位址,再執行 docker compose up -d。必須使用 host 網路模式,所以只適用於 Linux。
之後會用到的
狀態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

檢查其他電腦能不能連到它

在另一台電腦的瀏覽器裡打開 http://192.168.1.20:8787/healthz(換成你的位址),看到下面這一行,網路就是通的。

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

在每台電腦上填位址

  1. 打開設定

    在每台電腦上打開 CopySync,進入「設置」。伺服器所在的那台電腦也一樣。

  2. 填入位址

    在「信令服務器地址」裡填 ws://192.168.1.20:8787/signal(換成你的位址),按 Enter 儲存。

  3. 查看連線狀態

    「連接狀態」變成綠色的「已連接」就完成了。接著在「設備」裡配對,之後複製就會同步。

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

還沒裝 App?見快速入門。

常見問題

連接狀態一直是「未連接」?

先核對位址:以 ws:// 開頭,連接埠是 8787,以 /signal 結尾,填完有按 Enter。

再用這台電腦的瀏覽器打開 http://伺服器位址:8787/healthz。打不開,代表到伺服器的網路不通:伺服器沒有在執行、那台電腦進入睡眠了、被防火牆擋住了,或是它的位址變了。

Windows 的安裝腳本已經開放了防火牆;Mac 開著系統防火牆時,請執行安裝腳本最後給出的開放指令;Linux 上的 ufw、firewalld 也一樣。

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

在同一個區域網路裡一般都是直連。顯示「中轉」,代表兩台電腦之間的 UDP 不通,常見於訪客網路、開了 AP 隔離的 Wi‑Fi,或兩台電腦在不同網段、中間有防火牆。中繼會經過伺服器,內容同樣加密,只是速度受那台電腦的網路限制。

伺服器的位址變了怎麼辦?

帶上新位址再執行一次安裝腳本:Windows 上是 install.cmd 新位址,Mac 上是 ./install.sh 新位址;Linux 上編輯 /etc/copysync/server.env 裡的 -turn-ip,再重新啟動服務。然後在每台電腦上改掉伺服器位址。

在路由器裡幫它固定一個位址,就不會再遇到這種事。

離開區域網路以後還能同步嗎?

不能,伺服器只在區域網路裡連得到。要在其他網路裡也能同步,請改用雲端伺服器,或Tailscale。

伺服器所在的那台電腦也要用 CopySync,位址要填什麼?

填同樣的區域網路位址就行,填 ws://127.0.0.1:8787/signal 也可以。伺服器和 App 互不影響。

一台常開的電腦,就夠了。

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

伺服器的完整架設說明(含雲端主機與 Docker)