本文简单分享一下: 如何搭建所谓的 完全自托管的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