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 静态分配」(也叫「地址保留」「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 回车,运行 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(换成你的地址),按回车保存。

  3. 看连接状态

    「连接状态」变成绿色的「已连接」就好了。接着在「设备」里配对,之后复制就会同步。

CopySync 的设置页:信令服务器地址填着 ws://192.168.1.20:8787/signal,连接状态显示已连接

还没装 App?见快速开始。

常见问题

连接状态一直是「未连接」?

先核对地址:以 ws:// 开头,端口是 8787,以 /signal 结尾,填完按过回车。

再在这台电脑的浏览器里打开 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)