简介
Syncthing是一款开源、去中心化的跨平台文件同步工具,可以很方便的同步不同平台上的文件。
相关链接:
本文章部署主要依照Docker Hub安装指引,演示的安装平台为Unraid系统。因为使用Docker进行安装,所以在其它平台上安装过程也相似。
部署
环境信息
Unraid系统版本:Ver 7.1.2
步骤
在Unraid的WebUI上选择APPS页签,在搜索框中输
syncthing,选择Repository仓库为lscr.io/linuxserver/syncthing的版本。

在右侧弹出的子页面上点Install 按钮。

在新打开的docker设置页面配置如下几项:
Network Type:改成Custom : br0
至于为什么没用Bridge ,详情见遇到的问题Syncthing传输速度非常慢
Fixed IP address (optional):设置成规划分配的IP地址。
Path: /data1:设置成宿主机(unraid)上同步根目录1。
Path: /data2:设置成宿主机(unraid)上同步根目录2。

点击底部的APPLY 按钮,完成配置并自动拉取部署。

在Docker页签中可以看到Syncthing已经正常启动并运行。
使用
基础配置
在网页输入刚才在docker设置页面填写的Fixed IP address (optional)再加上默认端口号
8384,访问Syncthing的WebUI。
本示例中为192.168.1.211:8384
第一次访问会提示发送匿名使用报告,选择否,不发送。

设置本设备名称、登录用户名和密码。
在页面顶部可以看到红色警告框提示未设置密码,点击设置按钮,弹出的设置对话框。
选择常规选项卡,在设备名中填写设备名称。

选择GUI选项卡,在GUI身份验证用户和GUI身份验证密码中分别填写用于WebUI登录使用的用户名和密码,点击保存按钮。

点击保存按钮后,回自动返回WebUI登录界面,输入刚才设置的用户名和密码,重新登录进入主页,
配置远程设备
假如需要将设备A与设备B同步。
点击设备A的WebUI主界面此设备中标识后面的一串字符,弹出设备标识框。

记下设备A的唯一标识。

去另一台需要同步的设备B的Syncthing的WebUI主界面,点击远程设备下的添加远程设备按钮,将刚才设备A的唯一标识填入常规选项卡中的设备ID。

可以看到,在同一局域网下,Syncthing会自动搜索本局域网内的其它开启了Syncthing服务的设备,直接选择相应设备即可。
设备名:是给新添加的设备A取的别名。
添加设备框下的其它选项卡可以根据需要自行设置,点击保存完成添加。

回到设备A,可以看到设备B发送来的添加设备请求,点击添加设备,同意添加,在弹出的添加设备框根据需要配置属性,保存完成添加。
过一会,在主页可以看到设备B已连接。
配置同步目录
在主界面文件夹下点击添加文件夹。
在弹出的添加文件夹框中,根据需要配置填写内容。
常规选项卡:
文件夹标签:填写一个共享文件夹的标识,会显示
文件夹路径:填写同步文件夹所在的路径,/data1对应之前在部署时Docker配置里填写的容器内路径/data1,即对应容器外路径/mnt/tmp-sync/data1。

共享选项卡:勾选想要和哪些设备同步此文件夹。

文件版本控制选项卡:根据需要选择。
点击保存按钮后,设备会自动开始扫描刚才添加的文件夹下的文件,并准备同步。

切换到对方设备的WebUI,可以看到同步文件夹请求,点击添加,会正式开始两个设备之间的同步工作。

Q&A
如何查看日志
主界面右上角点击操作,选择日志,弹出日志框。

遇到的问题
同步目录报错
在配置同步目录时,可能一开始就会出现报错Failed to create folder marker: mkdir /data1/.stfolder: permission denied,这是因为当选择一个目录为同步目录后,Syncthing会在该目录下创建.stfolder文件夹,如果Docker没有权限,就会报错。

可以使用下面命令在宿主机(unraid)的终端查看同步文件夹的属性,将文件夹的拥有者改变
# 查看文件夹权限
ls -ld tmp-rsync
# 查看用户信息
id zhangsan
# 将文件夹拥有者改为指定用户
sudo chown -R zhangsan:users tmp-rsync/
Syncthing传输速度非常慢
两台设备在不同局域网内,两端建立连接后,syncthing传输速度只有可怜的几KB到十几KB。
CDZI0.png)
在排除网络原因后,查看Syncthing的Log日志,发现报错recvfrom: connection refused。
2025-06-18 06:27:57 Failed to acquire [::]:22000/TCP open port on NAT-PMP@172.17.0.1: getting new lease on NAT-PMP@172.17.0.1 (external port 62917 -> internal port 22000): read udp 172.17.0.4:36637->172.17.0.1:5351: recvfrom: connection refused
2025-06-18 06:58:21 Failed to acquire [::]:22000/TCP open port on NAT-PMP@172.17.0.1: getting new lease on NAT-PMP@172.17.0.1 (external port 62917 -> internal port 22000): read udp 172.17.0.4:45087->172.17.0.1:5351: recvfrom: connection refused
2025-06-18 07:28:45 Failed to acquire [::]:22000/TCP open port on NAT-PMP@172.17.0.1: getting new lease on NAT-PMP@172.17.0.1 (external port 62917 -> internal port 22000): read udp 172.17.0.4:54788->172.17.0.1:5351: recvfrom: connection refused
2025-06-18 07:59:09 Failed to acquire [::]:22000/TCP open port on NAT-PMP@172.17.0.1: getting new lease on NAT-PMP@172.17.0.1 (external port 62917 -> internal port 22000): read udp 172.17.0.4:41100->172.17.0.1:5351: recvfrom: connection refused
2025-06-18 08:29:33 Failed to acquire [::]:22000/TCP open port on NAT-PMP@172.17.0.1: getting new lease on NAT-PMP@172.17.0.1 (external port 62917 -> internal port 22000): read udp 172.17.0.4:37287->172.17.0.1:5351: recvfrom: connection refused
2025-06-18 08:59:57 Failed to acquire [::]:22000/TCP open port on NAT-PMP@172.17.0.1: getting new lease on NAT-PMP@172.17.0.1 (external port 62917 -> internal port 22000): read udp 172.17.0.4:42090->172.17.0.1:5351: recvfrom: connection refused
2025-06-18 09:30:21 Failed to acquire [::]:22000/TCP open port on NAT-PMP@172.17.0.1: getting new lease on NAT-PMP@172.17.0.1 (external port 62917 -> internal port 22000): read udp 172.17.0.4:49924->172.17.0.1:5351: recvfrom: connection refused当时Syncthing容器网络是使用Bridge,分析日志可以看出:Syncthing分配的内部IP是172.17.0.4,Syncthing每隔一段时间使用不同的(随机)端口想和网关172.17.0.1:5351建立连接都被拒绝。
因为不太清楚为什么容器内部的网关拒绝连接,所以最直接的方法就是修改容器的网络类型为Custom : br0,使得Syncthing和宿主机(unraid)在同一个子网地址下,这样即使有问题也可以通过处理网关服务器来解决。
不过幸运的是,将两台设备的Syncthing容器网络都修改为Bridge后,传输速度就正常了,日志也没有异常信息。
QM2TE0Y%60%7DC%7DYOB_TF1.png)