Syncthing 有个恼人的习惯:两台设备只有在都在线时才会同步。笔记本在休眠,手机揣在兜里用着移动数据,家里的电脑关着机——文件只能等到其中两台恰好同时醒着的那一刻。一个全天候在线的对等端能解决这个问题。无论每台设备何时上线,一切都通过服务器同步。
常见的顾虑是“那我的文件就放在 VPS 上了”。Syncthing 对此也有办法:把文件夹以不受信任设备的身份共享给服务器,它只会保存自己读不了的加密数据。
选哪个套餐
Syncthing 本身很小——我们测试时大约占 25–30 MB 内存。你真正买的是磁盘,因为服务器会保存每个共享文件夹的完整副本。
| 你同步的内容 | 套餐 |
|---|---|
| 文档、笔记、配置文件、密码数据库文件 | Nano-IP:2 vCPU、1 GB、15 GB(每月 $8) |
| 多年的文档加上一些照片 | Micro-IP:2 vCPU、2 GB、25 GB(每月 $10) |
| 工作文件夹和更大的归档 | Small-IP:4 vCPU、4 GB、35 GB(每月 $16) |
| 照片库 | Pro-32:400 GB(每月 $40),按需申请 |
请选择带独立 IPv4 的套餐。你的设备需要通过 22000 端口访问服务器;NAT 套餐只放行 SSH,Syncthing 会退回到公共中继——更慢,而且走的是你无法掌控的基础设施。德国或芬兰,选离你更近、下单时有货的那个。服务器可以用加密货币付款,无需 KYC。
安装
在 Ubuntu 24.04 或 Debian 12 上以 root 身份,从 Syncthing 官方软件源(稳定 v2 通道)安装:
mkdir -p /etc/apt/keyrings
curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" > /etc/apt/sources.list.d/syncthing.list
apt update && apt install -y syncthing
用专门的用户在 systemd 下运行:
useradd -m -s /bin/bash syncthing
systemctl enable --now syncthing@syncthing
ufw allow 22/tcp && ufw allow 22000/tcp && ufw allow 22000/udp && ufw enable
不要把用户命名为 sync。这个名字已经属于一个家目录为 /bin 的系统账户,syncthing@sync 会因只读文件系统报错而启动失败——我们自己就踩过这个坑。
获取服务器的设备 ID——稍后要粘贴到其他设备上:
runuser -u syncthing -- syncthing device-id
Web 界面只监听 127.0.0.1:8384,这正是你想要的。从你的电脑通过 SSH 隧道访问:
ssh -L 8384:127.0.0.1:8384 root@YOUR_SERVER_IP
打开 http://127.0.0.1:8384,第一件事是在 Settings → GUI 里设置界面密码。
以服务器读不了的方式共享文件夹
在你的笔记本(或任何受信任的设备)上:
- 用服务器的设备 ID 把它添加为远程设备。
- 打开要同步的文件夹 → Sharing,勾选服务器,并在旁边填入加密密码。把这个密码存进你的密码管理器:没有它,服务器上的数据只是噪声。
- 在服务器的 Web 界面里接受这个文件夹,文件夹类型选 Receive Encrypted。
就这样。看看服务器上实际收到了什么:
find /home/syncthing -path '*syncthing-enc*' -type f | head
你会看到类似 …/I.syncthing-enc/C8/PICA7BFKFPSGQ06C4D4SQ50GB6E151QUNF1EOBK 的路径,而不是你的文件名。在我们的测试中,我们在服务器上搜索了同步文件里的一句话——什么也没找到。
你的其他设备之间照常共享同一个文件夹,与服务器之间则使用同一个加密密码。任何知道密码的受信任设备都能从服务器同步,包括旧笔记本坏掉之后换的新笔记本。
说实话
- 同步不是备份。 删除和误覆盖同样会被同步。请在受信任的设备上开启版本控制,或在别处另做一份备份。
- 加密隐藏的是内容和文件名,不是全部。 文件大小和什么时候发生了变化,在服务器上依然能推算出来。对大多数人来说这是合理的取舍;如果对你不是,这套方案就不适合你。
- 密码就是钥匙。 丢了它,服务器上的加密副本就毫无用处。这正是设计的用意,也是风险所在。
- 手机。 已经没有官方移动应用了:Android 有一个社区维护的版本,iOS 只有第三方客户端。在依赖它之前,先确认你的设备能用。
如果你想要带日历、通讯录和分享链接的完整 Web 界面,而不是安静的后台同步,可以看看 Nextcloud。如果你只是想让文件无处不在、却只能在你自己的设备上读取,这是更轻量的工具。
相关内容
- 在 VPS 上自托管 Nextcloud:带 Web 界面的完整私有云
- Vaultwarden VPS:密码放在自己的服务器上
- 加密存储 VPS:LUKS,以及服务器上的加密能做什么、不能做什么
- 如何设置 SSH 密钥认证
- 如何配置 ufw 防火墙
评论
暂无评论。来做第一个吧。