所有電腦都直接連線到它
伺服器在公網上,每部電腦不論身處哪個網絡,都能直接連上。複製的內容優先在兩部電腦之間直連傳輸;打不通直連時經伺服器中轉,內容依然加密。
- 信令,TCP 8787。每部電腦一直連着它,用來發現對方、配對、交換連線資訊。
- 直連。兩部電腦在不同網絡裏時,靠 NAT 打洞直接相連,大多數家庭和公司網絡都能打通。
- 中轉,UDP 3478 與中轉端口。打不通直連時經伺服器轉發,內容依然加密,速度受伺服器頻寬限制。
開始之前
- 一部雲端伺服器
- Linux,x86_64 或 ARM64 都可以,最低配置已經足夠,伺服器程式只佔約 15 MB 記憶體。需要 root 權限。
- 一個公網 IP
- 雲端伺服器本身的公網 IP 就可以,最好是固定的(彈性 IP)。地址改變了,每部電腦都要重新填寫。
- 能登入它
- 能用 ssh 登入,或者使用雲端供應商網頁上的遠端終端機。
- 在內地的雲端伺服器
- 域名未有 ICP 備案時,用戶端裏要直接填 IP,不能填域名,原因見下面的常見問題。
第 1 步
在安全群組裏開放端口
在雲端供應商的控制台,為這部雲端伺服器的安全群組加入下面三條入站規則。
| 協定 | 端口範圍 | 來源 | 用途 |
|---|---|---|---|
| TCP | 8787 | 0.0.0.0/0 | 信令 |
| UDP | 3478 | 0.0.0.0/0 | STUN 與 TURN |
| UDP | 32768-60999 | 0.0.0.0/0 | 中轉端口 |
- 名稱不一樣:有些雲端供應商叫「防火牆」或「網絡 ACL」,都是指這一項。
- 中轉端口由系統隨機分配,範圍以伺服器為準:執行
cat /proc/sys/net/ipv4/ip_local_port_range查看,安裝腳本最後也會顯示出來。 - 系統防火牆:如果開啟了 ufw 或 firewalld,這三條也要開放,安裝腳本最後會提供指令。
第 2 步
執行安裝腳本
把公網 IP 傳給安裝腳本,它會安裝好伺服器、註冊為開機自動啟動的 systemd 服務,最後顯示用戶端要填的地址。
- 用 ssh 登入伺服器,例如
ssh root@203.0.113.10(換成你的公網 IP)。 - 逐行執行,最後一行換成你的公網 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 - 最後顯示的
ws://203.0.113.10:8787/signal就是用戶端要填的地址。
- 註冊為 systemd 服務,開機自動執行,設定檔在
/etc/copysync/server.env。 - 升級:下載新版本,解壓後再執行
sudo ./install.sh,原有設定會保留。 - 也可以用 Docker:見伺服器部署說明。
$ sudo ./install.sh 203.0.113.10 ▶ 安装二进制到 /usr/local/bin ▶ 写入 systemd 单元 ▶ 生成配置 /etc/copysync/server.env(中转地址 203.0.113.10) ▶ 启动 ✓ 已启动 安装完成:copysync-server 1.6.4 在每台电脑的 CopySync「设置 → 信令服务器地址」填: ws://203.0.113.10: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(中转端口,系统随机分配)
第 3 步
檢查能否連到它
在任何一部電腦的瀏覽器開啟 http://203.0.113.10:8787/healthz(換成你的公網 IP),看到下面這一行就代表連通了。
{"status":"ok","version":"1.6.4"}
開啟不了的話,請看下面的常見問題。
第 4 步
在每部電腦上填寫地址
開啟設定
在每部電腦上開啟 CopySync,進入「設置」。
填寫公網地址
在「信令服務器地址」裏填
ws://203.0.113.10:8787/signal(換成你的公網 IP),按 Enter 儲存。查看連線狀態
「連接狀態」變成綠色的「已連接」就完成了。如果仍未配對,請在「設備」裏配對。
仍未安裝 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,不經過反向代理,安全群組照樣要開放。
一部雲端伺服器,
在哪裏都能同步。
版本 1.6.4,免費開源。macOS 13 或以上;Windows 10、11;Linux(x64 與 ARM64)。
伺服器的完整部署說明(包括 Docker 與全部參數)