本文首发于:https://zhuanlan.zhihu.com/p/590901624

2023.08.25 更新:远程浏览器访问GUI界面

Syncthing 是一个开源免费的多平台、多设备文件同步应用,支持在局域网/广域网上同步,还带有版本控制等功能。

你可能发现了,Syncthing 支持广域网间直连/中继传输,那还要 Tailscale 做什么呢?根据我的使用体验,Syncthing 手机端和电脑端连接时,如果不在局域网下,非常容易掉线;并且 Syncthing 广域网间设备连接需要用上 Syncthing 自己的服务器寻找设备、打洞或者中继,而这要花费很长时间。如果用 Tailscale 组 VLAN,“骗” Syncthing 设备都在局域网中,有以下优点:

  • 不需要花时间在广域网上寻找设备
  • Tailscale 下 Syncthing 同步时几乎不会掉线(我还没掉过)

当然,Syncthing 也是可以自建中继服务器和发现服务器的。不过,既然我们有了 Tailscale VLAN 作为底层的网络,那么 Syncthing 就可以不用过多关心网络的东西,而是专心在同步这一职责上。

安装 Syncthing

官网下载指引:https://syncthing.net/downloads/

本次安装将以 Windows 设备和安卓设备作为示例。Windows 在官网下载 SyncTrayzor安卓在 play 商店下载。

Syncthing 监听设置

Windows

安装后会自动打开控制台。先设置语言为中文。

接下来是一些其他设置。首先设置监听 IP 为本机的 Tailscale IP,这样在广域网是会优先走 Tailscale 网络,而不是走 Syncthing 自己的发现服务器提供的链路。

本机 Tailscale IP 可以在托盘的 Tailscale 图片右键看到。把协议监听地址改为

tcp://TailscaleIP:22000, default

后面加 default 是为了局域网和 Tailscale 没开的时候也能正常工作。没加 QUIC 协议的监听地址是因为我在实际使用中,Tailscale 链路上 QUIC 建立后很容易回退为 TCP,干脆不要了。官方文档:Syncthing Configuration

安卓

和 Windows 差不多。安卓的 Tailscale IP 在 Tailscale 主界面就能看见。酌情考虑是否开启“移动数据下同步。”

添加设备

Windows 互相添加

在被添加的设备复制设备ID

另一台机的主界面拉到最底下点击添加“远程设备”

粘贴被添加设备的ID

然后在高级页面添加被添加设备的 Tailscale IP,方便快速在 Tailscale 网络上找到设备(你也可以多添加一个对方的局域网 IP),然后保存

tcp://被添加设备的TailscaleIP:22000, dynamic

再次回到被添加的设备,此时它的 Syncthing 主界面会显示有设备配对,当然是添加设备了

弹出来的界面可以添加对面的 Tailscale IP,然后确定

稍微等一会儿,出现下图就是连上了。我这里两台电脑在同一个局域网,优先局域网直连所以显示“局域网TCP”。如果通过 Tailscale VLAN 连接,会显示“广域网 TCP”。

安卓和 Windows 互相添加

在 Windows 端点出设备ID二维码,等下用到

手机端扫二维码添加设备,填上对方的计算机名,加上对方的 Tailscale IP,确定

然后就和 Windows 互相添加后面一样,在对面的界面接受连接请求,并也填上这一边的 Tailscale IP。懒得放图了。

添加同步文件夹

只以Windows->Windows作为例子,把 A 机的 G:\同步示例 同步到 B 机的 E:\备份 上。B 机的 E:\备份 文件夹未创建。

A 机的 G:\同步示例,已经有了一些文件

在A机上的 Syncthing 主界面点击“添加文件夹”,并按照提示设置(ID可以自己改的)

然后选择 B 机作为共享设备。可以共享很多个设备,以在多设备间同步。

版本控制这里没用上,很重要的数据可以开启版本控制,以在数据被覆盖后能恢复。

在“高级”页面可以设置文件夹类型。有以下情况组合:

  • 大家都是“发送与接收”:完全同步。适合需要所有设备的数据都保持一致。
  • A“仅发送”,B“仅接收”:A 在文件夹里做的修改能影响 B,但是反过来不行。适合以下场景:比如 A 是手机,B 是备份电脑。人在外面用手机 A 拍了一堆照片,然后同步给了 B 。人可以在 A 上删掉不满意的照片,B 里面的也会被删掉。然后回到家,把 B 里面的照片整理到其他文件夹离去,而不影响 A 的照片。
  • A“仅发送”,B“仅接收”,并且 B 忽略 A 的删除请求:B 就是 A 无情的备份机器。警告:设备上开启忽略删除请求后如果还能发送会导致数据不一致,因此只能在“仅接收”的设备上开启忽略删除请求。
  • 其他组合请自行根据需求使用。

在这里,我们使用“无情的备份机器”,因此 A 机设置为“仅发送”。点击保存。

文件夹类型选择“仅发送”

然后到 B 机上设置。B 机主界面会弹出通知 A 机共享文件夹,点击添加。

然后开始设置路径和“仅接收”。并保存。

稍等一会儿让首次同步完成,然后我们得在B机设置忽略删除请求。

拉到下面勾上忽略删除。

远程浏览器访问GUI界面

首先设置账户名密码,然后保存(GUI监听地址修改是没用的)

然后在窗口左下角的“设置”打开才是真正的修改地址

接下来在浏览器输入 http://<tailscale-ip>:8384/ 就可以在浏览器远程访问 GUI 了。