• 多端同步工具 Syncthing 完全自托管及使用介绍
  • 2025-09-05 11:47:35
  • 本文简单分享一下: 如何搭建所谓的 完全自托管的Syncthing服务(Complete Selfhosted Syncthing Service) 以及 如何配置文件夹同步。

    完全自托管的Syncthing服务:部署发现服务器(Discovery Server )以及 私有的中继服务(Relay Server),在客户端GUI的连接配置中指向私有的服务地址。

    软件介绍

    最近在玩树莓派的Self-Host应用,在 awesome-selfhosted 上看到文件同步的工具中最多star的就是 Syncthing了。

    截取一段 官网介绍 来说明 Syncthing 的主要应用场景:

    使用场景

    1、远程同步(广域网)

    在 办公用的MacBook 和 家里的Windows电脑 之间同步 Chrome浏览器中 简悦插件 的标注数据。

    简悦的自动同步需要安装客户端并且依赖外部网盘,配置使用起来比较麻烦,不太适合我。

    因此选用Syncthing作为同步工具,这样除了简悦的配置文件之外,还可以在两台机器之间同步其它的数据。

    2、备份文件自动同步(局域网)

    在多台Linux服务器中同步文件夹,例如:将 树莓派(Linux Server) 的数据库备份文件自动同步到OpenWrt软路由中挂载的备份硬盘中。

    3、Android手机重要资料自动备份(广域网 或 局域网)

    在 Android手机中 使用 Syncthing APP(仅允许WiFi联网义节省流量) 将手机中的 图片、重要资料等 自动备份到Linux Server。

    完全自托管的Syncthing同步方案

    因为 Macbook 和 Windows PC 并不一定会同时开机联网,所以增加了一个 Linux客户端作为文件同步的中转,同时在Linux Server上部署了 发现服务: stdiscosrv 和 中继服务: strelaysrv,具体方案如下图:

    Syncthing 服务部署

    选择使用docker部署 stdiscosrv、strelaysrv、syncthing 是为了方便管理,当然也可以通过二进制包的方式安装 以及配置 systemd的服务自启动。

    部署的基本步骤:

    1、在Linux Server上,使用 Docker Compose 部署 stdiscosrv、strelaysrv、syncthing。

    2、在需要同步服务的机器上,下载二进制安装包,解压到目标目录,配置开机启动

    3、GUI配置 监听地址、发现服务器

    详细的部署过程及 docker-compose.yml 放在wiki里,查看地址: https://ln-s.ink/self-host/syncthing

    配置文件同步

    在完成Syncthing的部署和客户端连接配置后,就可以开始进行文件同步了

    参考 官方文档 进行同步文件夹配置。

    配置目标

    在广域网中,将 MacOS 和 Windows PC 上的 simp_read文件夹进行双向同步

    配置说明

    GUI基本功能示例

    基本配置

    设备GUI地址文件夹标签文件夹ID文件夹路径Linux Serverhttp://1.2.3.4:9003 1.2.3.4为公网IPsimp_readg7y6m-objes(自动生成)~/simp_read 宿主机上的 /opt/data/syncthing/simp_readMacOShttp://127.0.0.1:8384simp_readg7y6m-objes(新建时指定)~/Documents/syncthing/simp_readWindows PChttp://127.0.0.1:8384simp_readg7y6m-objes(新建时指定)D:\syncthing\simp_read

    配置步骤

    1、在Linux Server上添加远程设备 MacOS、Windows PC

    添加远程设备

    复制远程设备的设备ID

    添加远程设备,如图:

    在远程设备上确认添加设备

    打开GUI,收到添加“新设备”的提示:

    点击添加设备,直接保存

    观察到远程设备已连接,则可以继续配置 同步文件夹

    2、创建同步文件夹

    Linux Server

    常规

    文件夹标签:simp_read

    文件夹ID: 自动生成 g7y6m-objes

    文件夹路径:~/simp_read

    版本控制

    简易版本控制

    其它参数默认即可

    高级

    勾选监视更改

    文件夹类型要选择: 发送与接收

    MacOS

    创建本地文件夹 ~/Documents/syncthing/simp_read

    创建 同步文件夹

    常规

    文件夹标签:simp_read

    文件夹ID: 指定为 g7y6m-objes

    文件夹路径:~/Documents/syncthing/simp_read

    版本控制

    简易版本控制

    其它参数默认即可

    高级

    勾选监视更改

    文件夹类型要选择: 发送与接收

    Windows PC

    创建本地文件夹 D:\syncthing\simp_read

    创建 同步文件夹

    常规

    文件夹标签:simp_read

    文件夹ID: 指定为 g7y6m-objes

    文件夹路径:D:\syncthing\simp_read

    版本控制

    简易版本控制

    其它参数默认即可

    高级

    勾选监视更改

    文件夹类型要选择: 发送与接收

    3、共享 同步文件夹(以 MacOS为例)

    在Linux Server上点击 simp_read 文件夹的选项 - 共享,将文件夹分享给 rMBP-14设备,如图:

    在 MacOS上打开GUI

    收到共享文件夹的提示:

    点击共享,完成文件夹共享配置

    收到错误提示:

    修改 MacOS上的simp_read文件夹的共享密码,和 Linux Server中的密码保持一致

    重启 Syncthing:

    在Linux Server上打开GUI,重启Syncthing

    验证功能

    在MacOS上创建文件 ~/Documents/syncthing/simp_read/1.txt

    $ tee -a ~/Documents/syncthing/simp_read/1.txt <<-'EOF'

    a

    b

    EOF

    进入Linux Server 的 Syncthing容器中

    # docker exec -it syncthing sh

    在Linux Server 的 Syncthing容器中查看 1.txt

    / $ cd /var/syncthing/simp_read

    ~/simp_read $ pwd

    /var/syncthing/simp_read

    ~/simp_read $ cat 1.txt

    a

    b

    在Linux Server 的 Syncthing容器中修改 1.txt, 增加一行文本

    ~/simp_read $ tee -a 1.txt <<-'EOF'

    > hello world

    > EOF

    hello world

    ~/simp_read $ cat 1.txt

    a

    b

    hello world

    在MacOS上查看文件更新

    $ cat ~/Documents/syncthing/simp_read/1.txt

    a

    b

    hello world