伺服器只負責牽線
每台電腦都一直連著伺服器,靠它找到對方、交換連線資訊。連上之後,複製的內容在兩台電腦之間直接傳輸;只有直連打不通時,才經過它中繼,內容依然加密。
- 信令,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
- 下載 copysync-server-windows-amd64.zip,按右鍵選「解壓縮全部」。
- 打開解壓縮後的資料夾,按兩下
install.cmd。出現「Windows 已保護您的電腦」時,點「其他資訊」,再點「仍要執行」;跳出「使用者帳戶控制」時點「是」。伺服器還沒有程式碼簽章,所以會詢問這一次。 - 安裝會在新開的視窗裡進行。最後顯示的
ws://…/signal就是用戶端要填的位址。
- 以 Windows 服務執行:開機就啟動,不用登入,也沒有視窗。在「服務」裡的名稱是 CopySync Server。
- 防火牆已經開放:腳本新增了一條只針對 copysync-server.exe 的輸入規則,不用自己開連接埠。
- 位址抓錯了(例如裝了虛擬機或 VPN,有好幾張網路卡):在解壓縮後資料夾的網址列輸入
cmd再按 Enter,執行install.cmd 192.168.1.20,換成你的位址。 - 支援 Windows 10、11,x64。
- copysync-server.exe
- install.cmd按兩下
- install.ps1
- README.md
- uninstall.cmd
> 停止旧版本 > 安装到 C:\Program Files\CopySync Server > 注册服务 CopySyncServer(中转地址 192.168.1.20) > 在 Windows 防火墙里放行 > 启动 √ 已启动 安装完成:copysync-server 1.6.4,作为 Windows 服务开机自动运行 在每台电脑的 CopySync「设置 → 信令服务器地址」填: ws://192.168.1.20:8787/signal 程序 C:\Program Files\CopySync Server 日志 C:\ProgramData\CopySync Server\server.log 重启 Restart-Service CopySyncServer(管理员 PowerShell) 卸载 双击 uninstall.cmd
| 狀態 | 在系統管理員 PowerShell 裡執行 Get-Service CopySyncServer,或在「服務」裡找 CopySync Server |
|---|---|
| 記錄檔 | C:\ProgramData\CopySync Server\server.log |
| 重新啟動 | 在系統管理員 PowerShell 裡執行 Restart-Service CopySyncServer |
| 升級 | 下載新版本,解壓縮後再按兩下 install.cmd,原本的設定會保留 |
| 解除安裝 | 按兩下 uninstall.cmd,服務、防火牆規則和檔案會一併刪除 |
macOS
- 打開「終端機」,逐行執行:
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 - 最後顯示的
ws://…/signal就是用戶端要填的位址。
- 不需要管理者權限。登入這台 Mac 後會自動在背景執行,意外結束時會被系統重新啟動。
- 這台 Mac 不能進入睡眠:在「系統設定 → 能源」(筆電在「電池 → 選項」)裡開啟防止自動進入睡眠的選項。
- 開著系統防火牆的話,腳本最後會給出開放 copysync-server 的指令。
- Intel 與 Apple 晶片通用,macOS 13 以上。
% ./install.sh ▶ 停止旧版本 ▶ 安装到 /Users/me/Library/Application Support/CopySync Server ▶ 写入 LaunchAgent(中转地址 192.168.1.20) ▶ 启动 ✓ 已启动 安装完成:copysync-server 1.6.4,登录这台 Mac 后自动运行 在每台电脑的 CopySync「设置 → 信令服务器地址」填: ws://192.168.1.20:8787/signal 日志 /Users/me/Library/Logs/CopySync/server.log 重启 launchctl kickstart -k gui/501/com.copysync.server 卸载 ./install.sh uninstall
| 記錄檔 | ~/Library/Logs/CopySync/server.log |
|---|---|
| 重新啟動 | launchctl kickstart -k gui/$(id -u)/com.copysync.server |
| 升級 | 下載新版本,解壓縮後再執行 ./install.sh,原本的設定會保留 |
| 解除安裝 | ./install.sh uninstall |
Linux
- 在這台機器上(或用 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 - 最後顯示的
ws://…/signal就是用戶端要填的位址。
- 註冊為 systemd 服務,開機自動執行。需要 root。
- 開著 ufw 或 firewalld 的話,腳本最後會給出開放連接埠的指令。
- 也可以用 Docker:把
env.example複製為.env,TURN_IP填這台機器的區域網路位址,再執行docker compose up -d。必須使用 host 網路模式,所以只適用於 Linux。
$ sudo ./install.sh ▶ 安装二进制到 /usr/local/bin ▶ 写入 systemd 单元 ▶ 生成配置 /etc/copysync/server.env(中转地址 192.168.1.20) ▶ 启动 ✓ 已启动 安装完成:copysync-server 1.6.4 在每台电脑的 CopySync「设置 → 信令服务器地址」填: ws://192.168.1.20:8787/signal 配置 /etc/copysync/server.env 日志 journalctl -u copysync-server -f 重启 systemctl restart copysync-server 卸载 sudo ./install.sh uninstall 防火墙需放行:TCP 8787(信令)、UDP 3478(STUN 与 TURN)、UDP 32768-60999(中转端口,系统随机分配)
| 狀態 | 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(換成你的位址),看到下面這一行,網路就是通的。
{"status":"ok","version":"1.6.4"}
打不開的話,請看下面的常見問題。
在每台電腦上填位址
打開設定
在每台電腦上打開 CopySync,進入「設置」。伺服器所在的那台電腦也一樣。
填入位址
在「信令服務器地址」裡填
ws://192.168.1.20:8787/signal(換成你的位址),按 Enter 儲存。查看連線狀態
「連接狀態」變成綠色的「已連接」就完成了。接著在「設備」裡配對,之後複製就會同步。
還沒裝 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,再重新啟動服務。然後在每台電腦上改掉伺服器位址。
在路由器裡幫它固定一個位址,就不會再遇到這種事。
伺服器所在的那台電腦也要用 CopySync,位址要填什麼?
填同樣的區域網路位址就行,填 ws://127.0.0.1:8787/signal 也可以。伺服器和 App 互不影響。