文件同步
使用 Syncthing 在 NAS 和 VPS 上构建终极私有、安全的文件同步网络
在数字时代,我们的数据散落在各种设备上:电脑、手机、服务器。商业云同步服务(如 Dropbox、Google Drive)虽然方便,但它们也意味着将我们最私密的数据托管在第三方服务器上,隐私和数据所有权成为一个挥之不去的担忧。
有没有一种方法可以让我们在享受便捷同步的同时,完全掌控自己的数据?答案是肯定的。Syncthing 就是为此而生的开源工具。
本文将详细介绍如何结合 NAS(网络附属存储) 和 VPS(虚拟专用服务器),利用 Syncthing 搭建一个去中心化、端到端加密、完全由你掌控的私有文件同步网络。
一、Syncthing 的核心工作原理
要理解为什么这个方案如此强大,首先需要了解 Syncthing 的几个核心概念:
去中心化 (Decentralized):Syncthing 没有中央服务器。你的数据在你自己的设备之间直接传输(Peer-to-Peer, P2P)。这意味着没有第三方可以访问你的文件,除非你明确授权。
端到端加密 (End-to-End Encryption):所有在设备之间传输的数据都使用 TLS 协议进行加密。即使数据在传输过程中被截获,攻击者也无法解密其内容。你的数据只在你的设备上以未加密的形式存在。
设备ID (Device ID):每个运行 Syncthing 的设备都会生成一个独一无二的、加密安全的ID。设备之间通过交换ID来建立连接,而不是通过用户名和密码。
全局发现 (Global Discovery):Syncthing 提供一个可选的全局发现服务器网络。你的设备会向发现服务器宣告自己的存在(“嗨,我是这个ID,可以通过这个IP地址找到我”)。当你的另一台设备想连接它时,就会去查询发现服务器来找到对方的地址。这个过程是匿名的,发现服务器只知道ID和IP的映射关系,不知道你是谁,也不知道你同步的是什么文件。
块交换协议 (Block Exchange Protocol):当你修改一个大文件时,Syncthing 非常智能,它只会同步文件中被修改过的“块”,而不是整个文件。这极大地节省了带宽和同步时间。
二、为什么选择 “NAS + VPS” 架构?
将 Syncthing 部署在 NAS 和 VPS 上,可以创建一个既健壮又灵活的同步网络:
- NAS:作为你家庭网络的 数据中心。它通常24小时在线,存储容量大,是你所有数据的“权威来源”。在局域网内,设备可以与NAS进行极速同步。
- VPS:作为你在云端的 “永远在线”节点。它解决了当你的所有设备都不在同一个局域网时的同步问题。比如,你在外面用笔记本修改了文件,它会先同步到VPS;当你回到家,家里的NAS会自动从VPS拉取最新的更改。VPS起到了一个可靠的中继和“介绍人”的作用。
这个架构的优势:
- 数据主权:你的数据100%存储在你自己的硬件(NAS)和租用的服务器(VPS)上。
- 高可用性:只要NAS或VPS中有一个在线,你的设备就能保持同步。
- 无处不在的访问:无论你身在何处,只要有互联网,就能连接到你的同步网络。
- 安全性:即使你的VPS被攻破(虽然概率很低),如果设置了加密密码,攻击者也无法读取你的文件内容,因为它们在VPS上是加密存储的。
三、详细部署操作指南
我们将以 Debian/Ubuntu 系统的VPS和 使用Docker 的NAS(如群晖、威联通等)为例进行说明。
第1步:在 VPS 上安装和配置 Syncthing
登录你的VPS
1
ssh your_user@your_vps_ip
添加 Syncthing 的官方软件源并安装
1
2
3
4
5
6
7
8
9
10
11
12# 更新系统
sudo apt update && sudo apt upgrade -y
# 添加GPG密钥
sudo curl -s -L https://syncthing.net/release-key.pub | sudo gpg --dearmor -o /usr/share/keyrings/syncthing-archive-keyring.gpg
# 添加软件源
echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
# 安装Syncthing
sudo apt update
sudo apt install syncthing -y设置 Syncthing 为系统服务
让 Syncthing 在后台运行并开机自启。将<your_user>替换为你的VPS用户名。1
2sudo systemctl enable syncthing@<your_user>.service
sudo systemctl start syncthing@<your_user>.service配置防火墙
Syncthing 需要两个端口:22000/TCP(用于设备间同步) 和8384/TCP(用于Web管理界面)。1
2
3
4sudo ufw allow 22000/tcp
# 为了安全,我们不直接暴露Web管理端口,而是通过SSH隧道访问
# sudo ufw allow 8384/tcp # (不推荐)
sudo ufw enable安全访问 Web 管理界面
在 你自己的电脑 上打开一个新的终端,运行以下命令建立SSH隧道:1
ssh -L 8888:localhost:8384 your_user@your_vps_ip
现在,在你本地电脑的浏览器中访问
http://localhost:8888,你就能看到VPS上Syncthing的管理界面了。初始化VPS上的Syncthing
- 首次访问会提示设置GUI的用户名和密码,务必设置一个强密码。
- 进入 操作 -> 设置 -> 连接,可以取消勾选 “全局发现” 和 “启用中继”,因为我们的VPS有公网IP,理论上不需要这些。
第2步:在 NAS 上使用 Docker 安装 Syncthing
使用 Docker 是在 NAS 上部署服务的最佳实践,它干净、隔离且易于管理。
在NAS上安装Docker
大部分现代NAS(如Synology, QNAP)的应用商店都提供Docker(或Container Station)。请先安装它。创建用于Syncthing的目录
在NAS上创建两个文件夹:一个用于存放Syncthing的配置文件,另一个用于存放你要同步的数据。- 例如:
/volume1/docker/syncthing/config - 例如:
/volume1/data/syncthing_files
- 例如:
运行Syncthing容器
你可以通过SSH登录NAS后台,或者使用NAS提供的Docker图形界面来运行。这里提供SSH命令示例:1
2
3
4
5
6
7
8
9docker run -d \
--name=syncthing \
-p 8384:8384 \
-p 22000:22000/tcp \
-p 21027:21027/udp \
-v /volume1/docker/syncthing/config:/config \
-v /volume1/data/syncthing_files:/data \
--restart unless-stopped \
syncthing/syncthing:latest-p 8384:8384: 映射Web管理界面端口。-p 22000:22000: 映射同步数据端口。-v ...:/config: 将NAS上的配置文件夹挂载到容器内。-v ...:/data: 将NAS上的数据文件夹挂载到容器内。
访问并配置NAS上的Syncthing
在浏览器中访问http://<你的NAS的IP地址>:8384。同样地,设置一个强密码。
第3步:连接设备并共享文件夹
交换设备ID
- 在VPS的Syncthing界面,点击右上角 操作 -> 显示ID,复制这串长长的设备ID。
- 在NAS的Syncthing界面,点击右下角 添加远程设备,粘贴VPS的ID,并给它起个名字(如 “My-VPS”)。
- 重要:勾选 “介绍人” (Introducer) 选项。这意味着,任何连接到VPS的设备,都会被自动介绍给NAS。
- 此时,在VPS的界面上会弹出一个提示,请求添加NAS。点击同意。
创建并共享第一个文件夹
- 在NAS的界面,点击 添加文件夹。
- 文件夹标签:给这个同步任务起个名字,如 “Documents”。
- 文件夹路径:填写容器内的数据路径,例如
/data/Documents(这对应于你NAS上的/volume1/data/syncthing_files/Documents)。 - 切换到 共享 标签页,勾选你的VPS设备。
- 保存后,VPS的界面会弹出通知,询问是否接受来自NAS的 “Documents” 文件夹。点击接受,并为它在VPS上指定一个存储路径。
添加你的个人电脑/手机
- 在你的个人设备上安装Syncthing。
- 同样地,添加VPS的设备ID。
- 由于VPS是“介绍人”,你的个人设备会自动发现NAS,反之亦然。你只需要在各设备上同意连接即可。
- 之后,NAS或VPS就可以向你的新设备共享 “Documents” 文件夹了。
至此,你的私有同步网络已经搭建完成!
四、优缺点分析
优点
- 极致的隐私和安全:数据不经任何第三方,全程加密。
- 无存储限制和费用:你的存储空间只受限于你的NAS硬盘大小,没有月费。
- 高性能:局域网内同步速度飞快,公网同步只传增量,效率高。
- 高度灵活:可以设置单向同步(备份)、选择性同步、文件版本控制等高级功能。
- 开源透明:代码公开,经过全球开发者和安全专家的审视。
缺点
- 初始设置复杂:相比商业软件“注册即用”的体验,Syncthing需要一些手动的技术配置。
- 需要自己维护:你需要负责NAS和VPS的正常运行、安全更新和备份。
- 依赖“永远在线”的节点:为了实现无缝同步,至少需要NAS或VPS中的一个保持在线。
- 公网IP问题:如果你的家庭网络没有公网IP,VPS的角色就至关重要,它充当了可靠的穿透和中继服务器。
五、总结
对于珍视数据隐私、希望建立自己的数字“主权领土”的技术爱好者和专业人士来说,Syncthing + NAS + VPS 方案无疑是当前最强大、最灵活的选择之一。它将商业级同步软件的便利性与开源社区的透明和安全性完美结合。
虽然前期需要投入一些时间和精力进行配置,但一旦建成,你将获得一个一劳永逸、完全由你掌控的私有云。在这个数据日益成为资产的时代,为自己的数字生活建立一个安全的“避风港”,这笔投资绝对物有所值。
