Syncthing:无需第三方云服务即可在设备之间同步文件
早上,您在笔记本电脑上修改了一份文档,然后关机。晚上打开家里的电脑时,最新版本已经在那里了。文件没有经过 Google Drive 或 Dropbox,而是由您自己的 Syncthing 节点接收。
Syncthing 会在受信任的设备之间直接同步指定文件夹,数据存储位置由用户自己控制。它并不强制要求使用中央服务器。
但是,如果两台电脑很少同时在线,它们就很难交换更新。持续在线的 VPS 可以解决这个问题:先接收一台设备的文件,再在另一台设备上线后将文件传给它。
需要明确 Syncthing 的用途。它不是网络硬盘,也不是浏览器中的文件管理器,而是用于自动复制指定文件夹的工具。
五步使用 Syncthing
最简启动方案如下:
- 在需要同步的电脑上安装 Syncthing。
- 在 VPS 上再运行一个 Syncthing 实例。
- 通过 SSH 隧道打开服务器管理面板。
- 交换设备标识符并确认连接。
- 添加共享文件夹,选择同步模式并启用文件版本历史。
Syncthing 是什么,它如何工作
Syncthing 是一款免费、开源的持续文件同步软件。它支持 Windows、macOS、Linux,以及其他桌面和服务器操作系统。
每次安装都会获得唯一的 Device ID,也就是一个加密设备标识符。两个节点要开始交换数据,必须先互相添加,并明确允许对方访问指定文件夹。Syncthing 不存在一个统一账户来集中保存设备和文件。
文件发生变化时,Syncthing 会将其分成多个数据块,比较校验和,并只传输缺失的部分。因此,在大文件中进行少量修改时,并不一定需要重新发送整个文件。
发现服务可以帮助设备找到彼此,但不会存储文件。如果无法建立直连,加密流量可以通过速度较慢的中继服务器传输。
VPS 会带来什么变化
没有服务器时,笔记本电脑可以直接与家里的电脑同步,但两台设备必须至少短暂地同时在线。VPS 可以把整个方案变成一个始终可用的交换节点。
例如,早上笔记本电脑把项目传到服务器后关机。晚上,家里的电脑再从 VPS 获取新版本。
Syncthing 适合同步文档、Obsidian 笔记、源代码、照片和家庭共享文件夹。缓存、node_modules 和构建结果最好通过 .stignore 排除。正在运行的数据库和虚拟机镜像不适合直接同步。
VPS 还会在家外保存一份数据副本。不过,只有配合版本控制和独立备份归档时,它才算真正的备份:误删除也可能同步到所有设备。
Syncthing 还是 Nextcloud:应该选择哪个
这两个工具经常被比较,但它们解决的是不同问题。
| 对比项 | Syncthing | Nextcloud |
|---|---|---|
| 工作模式 | 文件夹在设备之间互相复制 | 文件保存在中央服务器上 |
| 是否需要服务器 | 不需要,VPS 可选 | 需要 |
| 在浏览器中访问文件 | 没有完整的网页云盘 | 支持 |
| 公共分享链接 | 不支持 | 支持 |
| 协同编辑 | 不提供 | 可以扩展 |
| 最适合的场景 | 让自己的多台设备保持相同文件夹 | 搭建个人或团队云盘 |
如果需要安静地在后台自动同步,选择 Syncthing。如果需要网页访问、分享链接、用户账户、日历和协作功能,则更适合使用 Nextcloud。
如何通过 Docker Compose 在 VPS 上安装 Syncthing
下面的步骤适用于运行 Ubuntu 24.04 的 VPS。管理面板将只监听服务器本地地址,您需要通过 SSH 隧道访问。
1. 安装 Docker
sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker2. 创建目录和 Compose 文件
sudo mkdir -p /opt/syncthing/data
sudo chown -R 1000:1000 /opt/syncthing/data
cd /opt/syncthing
sudo nano compose.yaml粘贴以下内容:
services:
syncthing:
image: syncthing/syncthing:latest
container_name: syncthing
hostname: syncthing-vps
environment:
- PUID=1000
- PGID=1000
- STGUIADDRESS=
volumes:
- ./data:/var/syncthing
network_mode: host
restart: unless-stopped这里使用 Syncthing 官方镜像。host 网络模式有助于建立直接连接,而空的 STGUIADDRESS 值会让管理面板继续监听 127.0.0.1:8384。
启动容器:
sudo docker compose up -d
sudo docker compose ps3. 放行同步连接
先放行 SSH,避免失去服务器访问权限:
sudo ufw allow OpenSSH
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw enable22000/TCP 用于主要同步协议,22000/UDP 用于 QUIC。无需向公网开放管理面板端口 8384。本地发现端口 21027/UDP 在公网 VPS 上通常也不需要开放。
4. 通过 SSH 打开管理面板
在自己的电脑上运行:
ssh -L 9999:127.0.0.1:8384 root@SERVER_IP保持终端窗口开启,然后访问:
http://127.0.0.1:9999进入后,打开 Actions → Settings → GUI,设置用户名和密码。如果以后需要通过域名访问面板,应将其放在 HTTPS 反向代理之后,并保留身份验证。
5. 添加设备和文件夹
在电脑上安装 Syncthing,然后执行以下步骤:
- 在电脑和 VPS 上分别选择 Actions → Show ID。
- 在另一台设备中添加每个节点的 Device ID。
- 在电脑上点击 Add Folder,选择目录并授权服务器访问。
- 在 VPS 上接受该文件夹,并设置路径,例如
/var/syncthing/Files。
电脑端进行双向同步时,保留 Send & Receive。VPS 上通常可以选择 Receive Only:服务器仍会接收更新并在节点之间转发,但直接在 VPS 上意外进行的本地修改不会扩散到整个网络。
为什么 Syncthing 不能替代备份
如果某个设备上的文件被删除或加密,这项变化也可能传播到其他设备。因此,应在 VPS 上打开文件夹设置并启用 File Versioning。
一个实用方案是使用 Staggered File Versioning,并保留 30–90 天的历史。当远程节点替换或删除文件时,旧版本会被移动到 .stversions。历史副本会占用磁盘空间,因此需要限制保留期限。
可靠的方案应包含三个层级:
- Syncthing 保持工作副本为最新状态。
- 版本控制可以帮助撤销部分误操作。
- 按计划生成的独立备份应存放在 Syncthing 之外。
VPS 能否保存文件却看不到内容
Syncthing 提供不受信任设备模式。您可以在主电脑上为文件夹设置密码,并在 VPS 上选择 Receive Encrypted。服务器会保存加密数据,并可将其转发给使用相同密码的另一台受信任设备。
文件内容、文件名、时间戳和目录结构都会被隐藏。共享文件夹的信息和文件的大致大小仍然可见。
开发者目前仍将此功能视为实验性功能。密码和 Folder ID 应单独保存:缺少它们时,加密文件夹可能无法恢复。
Syncthing 需要什么配置的 VPS
资源占用不仅取决于数据总量,还与文件数量、修改频率和首次索引有关。对于存放文档和几十 GB 数据的个人节点,入门配置通常已经足够:
- 1 个 vCPU;
- 1 GB RAM;
- SSD 或 NVMe;
- 为文件和
.stversions预留足够磁盘空间; - 稳定的网络连接。
大型照片库或数十万个文件会需要更多资源。最高负载通常出现在首次扫描和计算哈希值时。
这类任务可以使用 tropic.host 的基础 Ubuntu VPS。您可以先选择较小配置,再随着数据规模增长扩容。估算磁盘容量时,不仅要考虑当前文件夹,还要预留未来文件、临时数据和版本历史的空间。
应避免的五个错误
- 将 8384 端口直接暴露给整个互联网。 初始设置使用 SSH 隧道;如需长期网页访问,请使用 HTTPS、密码和反向代理。
- 把服务器副本当成完整备份。 启用版本历史,并创建独立的备份归档。
- 同步缓存和依赖目录。 使用
.stignore排除不必要的目录。 - 不监控磁盘空间。
.stversions目录可能会随着时间推移占用大量空间。 - 继续信任已经丢失的设备。 在其他节点上删除它,并保护包含设备密钥的 Syncthing 配置。
关于智能手机需要了解什么
官方 Android 应用已于 2024 年底停止维护,但仍有社区客户端可用。iOS 同样没有官方客户端:后台运行限制会妨碍持续同步。在连接主要照片库之前,建议先用一个小型测试文件夹验证所选移动客户端。
总结
Syncthing 适合希望在多台设备上保持相同文件夹、又不想依赖强制云服务中介的用户。VPS 会让系统更方便:电脑无需同时在线,并且家外始终有一份可访问的数据副本。
为了安全使用,不要直接公开管理面板,应启用版本控制,并用独立备份补充同步方案。
FAQ
使用 Syncthing 必须有 VPS 吗?
不需要。设备可以直接同步。VPS 的作用是作为持续在线的节点,让设备能够在不同时间交换更新。
可以通过浏览器打开 Syncthing 中的文件吗?
网页面板用于配置,而不是像 Google Drive 那样浏览文档。如果需要网页云盘,Nextcloud 更合适。
Syncthing 算备份工具吗?
不算。删除和文件损坏可能传播到其他设备。版本控制可以提供帮助,但不能替代独立备份。
需要开放 8384 端口吗?
不需要。让面板继续监听 127.0.0.1:8384,并通过 SSH 隧道连接。同步需要开放 22000/TCP 和 22000/UDP。
VPS 所有者能读取文件吗?
在普通配置下,理论上可以。Receive Encrypted 会以加密形式保存文件,但该功能仍被视为实验性功能,并且必须妥善保存密码和 Folder ID。
