SyncClipboard 是一个开源的跨平台剪贴板同步工具,GitHub 上已经有 4.1k star。它支持 Windows、macOS、Linux 桌面端,以及 iOS、Android、鸿蒙手机端。服务器部分可以用 Docker 跑在 NAS 上,整个同步过程走自己的服务器,数据不经过任何第三方。对家庭 NAS 用户来说,这是目前最省心的方案之一。


部署服务器

NAS 上只需要跑一个 Docker 容器,镜像是 jericx/syncclipboard-server:latest

用 docker run 直接启动:

docker run -d \
  --name=syncclipboard-server \
  -p 5033:5033 \
  -e SYNCCLIPBOARD_USERNAME=your_username \
  -e SYNCCLIPBOARD_PASSWORD=your_password \
  -v /data/syncclipboard-server:/app/data \
  --restart unless-stopped \
  jericx/syncclipboard-server:latest

your_usernameyour_password 换成自己的账号密码,/data/syncclipboard-server 是 NAS 上用于持久化数据的目录,提前建好就行。--restart unless-stopped 保证 NAS 重启后容器自动拉起。

docker compose :

docker-compose.yaml

services:
  syncclipboard-server:
    image: jericx/syncclipboard-server:latest
    container_name: syncclipboard-server
    restart: unless-stopped
    ports:
      - "5033:5033"
    environment:
      - SYNCCLIPBOARD_USERNAME=you_username
      - SYNCCLIPBOARD_PASSWORD=you_password
    volumes:
      - /data/syncclipboard-server:/app/data

或者终端拉取文件并执行

curl -sL https://github.com/Jeric-X/SyncClipboard/raw/master/src/SyncClipboard.Server/docker-compose.yml >> docker-compose.yml
docker compose up -d

容器第一次启动后,会在 /data/syncclipboard-server(即容器内 /app/data)目录下自动生成一份 appsettings.json。如果你想调整端口或历史记录条数,直接编辑这个文件:

{
  "AppSettings": {
    "UserName": "your_username",
    "Password": "your_password",
    "MaxSavedHistoryCount": 1000
  },
  "Kestrel": {
    "Endpoints": {
      "http": {
        "Url": "http://*:5033"
      }
    }
  }
}

MaxSavedHistoryCount 控制历史记录保存条数,默认 1000 条,按需改。

关于 HTTPS: 如果服务器只在局域网内用,HTTP 问题不大。一旦要从外网访问,强烈建议在 NAS 的反向代理(比如 Nginx Proxy Manager)上配好 HTTPS,或者在 appsettings.json 里启用 HTTPS 并配置证书路径。明文传密码这件事,在公网上别做。


外网访问:内网穿透或 DDNS

服务器跑在家里的 NAS 上,默认只能在局域网内访问。想要在公司、咖啡馆、手机流量下也能同步,需要让外网能访问到你的 NAS。常见的方法有两种。

方法一:公网 IP + DDNS 解析。 如果你的宽带有公网 IP(拨号后可以在路由器里查到 WAN IP,且不是 100.x 或 10.x 开头),可以在路由器上做端口转发,把 5033 端口映射出去,再用 DDNS 服务(群晖自带的 DDNS、阿里云、Cloudflare 等均可)把一个域名解析到你的动态公网 IP。这样客户端填写 http://你的域名:5033 就能访问。配合 HTTPS 证书使用更安全。

方法二:内网穿透。 如果宽带没有公网 IP(大多数运营商现在已经不默认分配),可以用内网穿透工具,比如 Cloudflare Tunnel(免费)、FRP、Lucky 等,把 NAS 上的 5033 端口穿透到一个公网可访问的地址。Cloudflare Tunnel 配置相对简单,穿透后还自带 HTTPS,适合没有折腾经验的用户。FRP 需要自己有一台有公网 IP 的云服务器,灵活性更高。

两种方法都配好之后,客户端填写穿透后的地址即可,其余配置步骤和局域网完全一样。


安装桌面客户端

服务器跑起来之后,各设备安装客户端,填入三个参数就能用:用户名、密码、服务器地址。地址格式是 http://NAS的IP:5033,如果配了域名就填域名。

Windows:GitHub Releases 下载 SyncClipboard_win_ 开头的 zip,解压运行 SyncClipboard.exe。客户端跑在后台,复制即同步,不需要手动操作。最低要求 Windows 10 2004。

0-OBAN

macOS: 下载 SyncClipboard_macos_ 开头的安装包,拖到 Applications。如果系统提示"无法验证开发者",去「设置 → 隐私与安全性」点"仍要打开"。如果提示"已损坏",在终端执行:

sudo xattr -d com.apple.quarantine /Applications/SyncClipboard.app

Linux: 下载 SyncClipboard_linux_ 开头的包。如果剪贴板同步不稳定,装一下 xclip(X11 环境)或 wl-clipboard(Wayland 环境),SyncClipboard 会自动调用它们。


手机端配置

手机端没有原生客户端,靠第三方工具桥接。iOS 和 Android 的方案不一样。

iOS 用系统自带的快捷指令。项目提供了现成的快捷指令文件,导入后填好服务器地址、账号、密码,就能手动触发上传或下载。还有一个自动同步版本,运行后会在后台持续轮询,需要手动关闭。短信验证码自动上传也有对应的快捷指令,配好后收到验证码直接同步到电脑剪贴板。

Android 选择多一些。官方推荐的 SyncClipboard Mobile 支持从通知栏、桌面快捷方式、分享菜单触发同步,也有一定的后台同步能力。另一个选项是 Sync Clipboard Flutter,Material 3 风格,支持从控制中心快捷操作。如果你用 Fcitx5-android 输入法,使用 Fcitx5-SyncClipboard 借助输入法权限实现无感同步,连手动触发都省了。

0-TorV

几个要注意的地方

版本兼容性: v3.1.1 起,客户端和服务器与旧版本不兼容。如果你之前用过老版本,服务器和所有客户端要一起升级,不能混用。

历史记录功能: 剪贴板历史记录目前还在早期阶段,官方文档里明确写了"请做好丢失全部信息的准备"。重要内容别只存在这里。

数据目录: 容器挂载的 /data/syncclipboard-server 目录存着所有数据和配置。如果要迁移或备份,这个目录打包就够了。修改 appsettings.json 里的文件路径时,记得区分容器内路径和宿主机路径,别搞混。


整个部署过程大概十分钟。跑起来之后,Windows 上复制的内容,手机上直接粘贴,反过来也一样。图片同步也做了专门优化,从浏览器复制图片时会后台下载原图,webp、heic 格式的图片文件复制后会自动转成兼容格式,粘贴到聊天框里不会出问题。

项目地址:https://github.com/Jeric-X/SyncClipboard


本文图片均来自项目开发者 Jeric-X 相关 GitHub 仓库,版权归原作者所有。