本文简单分享一下: 如何搭建所谓的
完全自托管的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 Server | http://1.2.3.4:9003 1.2.3.4 为公网IP | simp_read | g7y6m-objes (自动生成) | ~/simp_read 宿主机上的 /opt/data/syncthing/simp_read |
MacOS | http://127.0.0.1:8384 | simp_read | g7y6m-objes (新建时指定) | ~/Documents/syncthing/simp_read |
Windows PC | http://127.0.0.1:8384 | simp_read | g7y6m-objes (新建时指定) | D:\syncthing\simp_read |
配置步骤
1、在Linux Server
上添加远程设备 MacOS
、Windows PC
- 添加远程设备
- 复制远程设备的设备ID
- 添加远程设备,如图:
- 在远程设备上确认
添加设备
- 打开GUI,收到添加“新设备”的提示:
- 点击
添加设备
,直接保存
- 打开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
评论区