Tropic Host

Syncthing:它是什么,以及如何在 VPS 上配置文件同步

阅读约需 10 分钟
Tropic
Syncthing:它是什么,以及如何在 VPS 上配置文件同步

Syncthing:无需第三方云服务即可在设备之间同步文件

早上,您在笔记本电脑上修改了一份文档,然后关机。晚上打开家里的电脑时,最新版本已经在那里了。文件没有经过 Google Drive 或 Dropbox,而是由您自己的 Syncthing 节点接收。

Syncthing 会在受信任的设备之间直接同步指定文件夹,数据存储位置由用户自己控制。它并不强制要求使用中央服务器。

但是,如果两台电脑很少同时在线,它们就很难交换更新。持续在线的 VPS 可以解决这个问题:先接收一台设备的文件,再在另一台设备上线后将文件传给它。

需要明确 Syncthing 的用途。它不是网络硬盘,也不是浏览器中的文件管理器,而是用于自动复制指定文件夹的工具。

五步使用 Syncthing

最简启动方案如下:

  1. 在需要同步的电脑上安装 Syncthing。
  2. 在 VPS 上再运行一个 Syncthing 实例。
  3. 通过 SSH 隧道打开服务器管理面板。
  4. 交换设备标识符并确认连接。
  5. 添加共享文件夹,选择同步模式并启用文件版本历史。

Syncthing 是什么,它如何工作

Syncthing 是一款免费、开源的持续文件同步软件。它支持 Windows、macOS、Linux,以及其他桌面和服务器操作系统。

每次安装都会获得唯一的 Device ID,也就是一个加密设备标识符。两个节点要开始交换数据,必须先互相添加,并明确允许对方访问指定文件夹。Syncthing 不存在一个统一账户来集中保存设备和文件。

文件发生变化时,Syncthing 会将其分成多个数据块,比较校验和,并只传输缺失的部分。因此,在大文件中进行少量修改时,并不一定需要重新发送整个文件。

发现服务可以帮助设备找到彼此,但不会存储文件。如果无法建立直连,加密流量可以通过速度较慢的中继服务器传输。

VPS 会带来什么变化

没有服务器时,笔记本电脑可以直接与家里的电脑同步,但两台设备必须至少短暂地同时在线。VPS 可以把整个方案变成一个始终可用的交换节点。

例如,早上笔记本电脑把项目传到服务器后关机。晚上,家里的电脑再从 VPS 获取新版本。

Syncthing 适合同步文档、Obsidian 笔记、源代码、照片和家庭共享文件夹。缓存、node_modules 和构建结果最好通过 .stignore 排除。正在运行的数据库和虚拟机镜像不适合直接同步。

VPS 还会在家外保存一份数据副本。不过,只有配合版本控制和独立备份归档时,它才算真正的备份:误删除也可能同步到所有设备。

Syncthing 还是 Nextcloud:应该选择哪个

这两个工具经常被比较,但它们解决的是不同问题。

对比项SyncthingNextcloud
工作模式文件夹在设备之间互相复制文件保存在中央服务器上
是否需要服务器不需要,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 docker

2. 创建目录和 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 ps

3. 放行同步连接

先放行 SSH,避免失去服务器访问权限:

sudo ufw allow OpenSSH
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw enable

22000/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,然后执行以下步骤:

  1. 在电脑和 VPS 上分别选择 Actions → Show ID
  2. 在另一台设备中添加每个节点的 Device ID。
  3. 在电脑上点击 Add Folder,选择目录并授权服务器访问。
  4. 在 VPS 上接受该文件夹,并设置路径,例如 /var/syncthing/Files

电脑端进行双向同步时,保留 Send & Receive。VPS 上通常可以选择 Receive Only:服务器仍会接收更新并在节点之间转发,但直接在 VPS 上意外进行的本地修改不会扩散到整个网络。

为什么 Syncthing 不能替代备份

如果某个设备上的文件被删除或加密,这项变化也可能传播到其他设备。因此,应在 VPS 上打开文件夹设置并启用 File Versioning

一个实用方案是使用 Staggered File Versioning,并保留 30–90 天的历史。当远程节点替换或删除文件时,旧版本会被移动到 .stversions。历史副本会占用磁盘空间,因此需要限制保留期限。

可靠的方案应包含三个层级:

  1. Syncthing 保持工作副本为最新状态。
  2. 版本控制可以帮助撤销部分误操作。
  3. 按计划生成的独立备份应存放在 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/TCP22000/UDP

VPS 所有者能读取文件吗?

在普通配置下,理论上可以。Receive Encrypted 会以加密形式保存文件,但该功能仍被视为实验性功能,并且必须妥善保存密码和 Folder ID。

Syncthing:它是什么,以及如何在 VPS 上配置文件同步