• cunt

    我一直向往那种在单一屏幕上无缝操控所有设备的终极体验。但由于iOS系统封闭的生态,无法在Windows实现。退而求其次,我将目光投向了解决日常最高频的痛点——跨设备剪贴板同步。

    在国民级软件的微信的大力推广下,我不得不发现了「小而美」的微信输入法。而微信输入法的一大亮点功能就有剪切板同步。半年前,我兴冲冲在各个设备都安装了微信输入法,使用体验还真不错,十分便捷,简约而不简单。

    但是,两个致命的缺陷逐渐让我浑身不自在,其一,作为一款输入法,它竟无法自定义用户词库,这对于追求效率的用户来说是个硬伤;其二,也是更让我警惕的——它建立在“用隐私换方便”的模式之上。每当我复制密码、API密钥或是个人敏感信息,并意识到这些数据正毫无保留地流向微信的服务器时,那种心头一紧的感觉便挥之不去。不是说自己的数据有多重要,但总有一股难受的感觉。

    某天闲下来的时候想到:我之前的思路太局限了。我将希望完全寄托于各大厂商的第三方输入法来实现互联,却因此忽略了隐私的代价,也忘记了去拥抱开源。


    SyncClipboard主要功能

    来自GitHub官方SyncClipboard: 跨平台剪贴板同步方案:

    - 剪贴板同步,支持「文字」、「图片」和「文件」。服务器/客户端架构,可以使用客户端内置服务器、独立部署服务器,也可以使用支持WebDAV的网盘作为服务器

    - 优化图片类型的剪贴板,功能有:

    - 从任意位置复制图片时,可以直接向文件系统粘贴图片文件,反之亦然

    - 从浏览器复制图片后,后台下载原图到本地,解决无法从浏览器拷贝动态图的问题(大多网站有认证,适用范围有限,支持bilibili动态图片)

    - 从文件系统复制较新格式类型的图片文件时(webp/heic等),在剪贴板内储存gif或jpg格式,用于直接向支持图片的文本框粘贴图片

    补充:

    - 支持所有主流平台,包括 Windows, macOS, Linux, Android, 和 iOS,真正实现了全平台覆盖。

    - 使用「服务器/客户端」架构,不受局域网的限制,适合网络复杂的情形(如校园网)。

    - 使用自部署的中转服务器,无隐私风险

    服务端搭建

    准备工作:

    - 服务器:由于需要服务器中转,延迟越低越好,但没有这么高的要求,我使用日本的服务器,无延迟体感。内存使用100MB左右。

    - 域名:用于开启 HTTPS,保障数据传输安全性。

    - 安装Nginx、Docker

    话不多说,直接用最简单的 docker-compose + Nginx 反代方案开干。

    编辑docker-compose.yml

    • 登录服务器,创建一个工作目录并进入,然后创建 docker-compose.yml 文件:```

    mkdir syncclipboard && cd syncclipboard
    sudo vim docker-compose.yml
    ``- 将以下内容写入``
    services:
    syncclipboard-server:
    image: jericx/syncclipboard-server:latest
    container_name: syncclipboard-server
    restart: unless-stopped
    ports:
    - "127.0.0.1:5033:5033" # 左边的5133可以改成服务器上没有用过的其他端口
    environment:
    - SYNCCLIPBOARD_USERNAME=your_username
    - SYNCCLIPBOARD_PASSWORD=your_pswd

    # 自动更新
    watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower_sync
    restart: unless-stopped
    environment:
    - TZ=Asia/Shanghai
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    command: --cleanup --schedule "0 0 4 *"
    ```> Tips:

    这里踩了个坑,密码不建议包含特殊符号,例如 * $等,会导致验证失败。

    • 运行```

    docker compose up -d

    
    不要忘记将域名解析到服务器,因为有很多种配置Nginx的方式,这里只给出我写的Nginx配置:```
    # Server block for HTTP to HTTPS redirection
    server {
        listen 80;
        server_name clip.yourdomain.com; # ⚠️ 替换成你的域名
    
        # Redirect all other HTTP traffic to HTTPS
        location / {
            return 301 https://$host$request_uri;
        }
    }
    
    # Server block for HTTPS
    server {
        listen 443 ssl http2;
        server_name clip.yourdomain.com; # ⚠️ 替换成你的域名
    
        client_max_body_size 1024M;
    
        # --- SSL Certificate Configuration ---
        ssl_certificate /etc/ssl/certs/clip.yourdomain.com.pem; # ⚠️ 替换成你的证书路径
        ssl_certificate_key /etc/ssl/private/clip.yourdomain.com.key; # ⚠️ 替换成你的私钥路径
    
        # --- SSL Security Enhancements ---
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
        ssl_ecdh_curve secp384r1;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        ssl_stapling on;
        ssl_stapling_verify on;
        # Add HSTS header to force HTTPS on the client side
        add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
    
        # --- Reverse Proxy Configuration ---
        location / {
            # 代理到 docker-compose 中映射的宿主机端口 1265
            proxy_pass http://127.0.0.1:5033;
    
            # --- WebSocket Support ---
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    
            # --- Standard Proxy Headers ---
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_redirect off;
        }
    }
    ```配置好后,检查 Nginx 语法并重载服务:```
    sudo nginx -t
    sudo systemctl reload nginx
    ```至此可以使用域名访问,输入设置的username以及password,看到以下提示证明成功部署:
    
    ![图片](https://cdn3.ldstatic.com/original/4X/9/1/9/919cf53e318f35bb3d2cc7a0116dd9d2179b8eb7.png)
    
    客户端使用
    
    查看GitHub官方教程即可:SyncClipboard #客户端使用
    
    这里提到「Windows」以及「ios」:
    
    Windows
    
    - 在Release页面下载名字以`SyncClipboard_win_`开头的zip文件,解压后运行`SyncClipboard.exe`
    
    - 服务器配置:
    
    ![图片](https://cdn3.ldstatic.com/optimized/4X/e/e/0/ee043b7f04577470763aedf09272f732dea98fde_2_690x406.png)
    
    - 图片粘贴配置:
    
    ![图片](https://cdn3.ldstatic.com/optimized/4X/6/b/a/6baf345c789e2e19b51a9035b398e2b4fcc8856a_2_690x407.png)
    
    - 检查服务状态:
    
    应为 ^-^ ^-^ ^-^ ^-^
    
    ![图片](https://cdn3.ldstatic.com/optimized/4X/1/8/5/185bd89dbdb7a384f47ec8c70e59992bea0b48df_2_690x407.png)
    
    iOS
    
    - 手动同步,导入这个快捷指令,手动触发上传或下载
    
    - 自动同步,导入这个快捷指令,运行后设备会自动在后台同步剪贴板内容,此快捷指令将执行无限时长,需要手动关闭,你还可以手动修改同步后是否发送系统通知、查询的间隔秒数
    
    - 自动上传短信验证码,参考这个discussion中的视频教程 #60
    
    我选择使用手动触发,配合辅助触控中的「轻点背面」,很好用。
    
    ---
    
    至此,试试吧,交互的过程是十分优雅的:拿起手机只需轻叩背面,即可同步文字到剪切板、下载图片甚至文件。
    
    经过一番折腾,终于找回那份掌控自己数据的安心感。
    
    ---
    
    博客链接:https://blog.yzyy.de/explore/syncclipboard替代微信输入法同步功能的最佳解决方案/
    主楼
  • 猫的于

    感谢分享!^-^

    #1
  • 若如初见

    这里踩了个坑,密码不建议包含特殊符号,例如 * $等,会导致验证失败。

    android端在哪下呢 [功能请求]请求开发移动端 · Issue #24 · Jeric-X/SyncClipboard · GitHub

    #2
  • 若如初见

    看到了

    图片

    #3
  • cunt

    安卓端需要一个第三方软件Android

    #4
  • ssssss1

    安卓自动同步需要root

    #5
  • 若如初见

    有root

    #6
  • cunt

    可以使用桌面小组件什么的也很方便

    #7
  • 万古一梦

    下载个kdeconnect

    #8
  • 卖女孩的小火柴

    请问,这个和RIME有什么区别么?

    #9
  • cunt

    rime不是个输入法吗,这只是个剪贴板\图片\文件同步工具

    #10
  • cunt

    KDE Connect对网络环境有没有什么要求

    #11
  • 卖女孩的小火柴

    哦哦,才看明白,因为标题是微信输入法 ^-^,感谢大佬,我研究一下

    #12
  • 万古一梦

    只能内网,这个不只是同步剪切板的,是一个非常强大的软件,功能很多

    #13
  • cunt

    谢谢分享,我去了解一下

    图片

    #14
  • 大帅哥

    感谢大佬。

    #15
  • coding

    感谢分享

    #16
  • 懒猫

    感谢分享

    #17
  • 𝓵𝓮𝔃𝓲𝓼𝓱𝓮𝓷

    刚试了下,我是用webdav设置的,但是好像文字不能上传到网盘里哦

    图片

    可能没有设置对,再研究看看

    图片

    #18
  • cunt

    有些网盘有严格的速率限制,比如坚果云,不适合用

    #19

发表回复

登录后回复