[!warning] 敏感信息说明 本文涉及的 Tailscale IP 已脱敏 (
<pve-tailscale-ip>/<ct111-tailscale-ip>)。实际部署时用tailscale ip -4查自己的节点 IP。
01. 概述与时间线
为什么折腾?
家里 PVE 主机已经跑了一年多,服务越来越多,但没有系统化体检过。飞牛 NAS (VM105) 也用了很久,感觉是时候考虑替换方案(更稳、更可控、更省电)。
起点
2026-08-31 晚
发现 Syncthing 之前用的 VM105 (飞牛 NAS) 在公开网络上,挂了 GUI(127.0.0.1:8384),外网和手机端访问不到同步 web UI → 想搞个独立的 Syncthing 节点,跑在 Tailscale 上,任何地方都能访问。
时间线
| |
整体架构 (前后对比)
Before
| |
After
| |
关键决策
决策 1: 用 CT 而不是 VM 跑 Syncthing
为什么不用 VM?
- VM 太重(16GB+40GB 同步要 stable file system,不想要 OS 抖动)
- VM105 已经是 VM 跑了很久,GUI 老挂、CPU/RAM 占用高
为什么 CT (LXC)?
- 启动快(<2s)
- 资源占用极低(空闲 50MB RAM)
- ZFS bind mount 直接用
/HHD_3TB/syncthing,文件路径天然映射 - systemd 跑 syncthing 干净
决策 2: Tailscale 而不是公网 DDNS / WireGuard
为什么不用公网?
- 家里宽带没固定 IP
- DDNS + 端口转发需要路由器配置,脆弱
为什么 Tailscale?
- 零配置自动 NAT 穿透
- 设备间自动 mesh
- 不暴露任何端口到公网
- 几行命令加进 tailnet
决策 3: VM105 不是直接删,而是 7 天观察期
为什么不直接删?
- VM105 是主数据源,如果直接删,新 CT111 万一有 bug,数据丢完
- 7 天 = 跨一个完整工作周期,确保所有用户的写都通过新节点 round trip 过
7 天观察期做什么?
- 每天看一次 Syncthing 状态
- 检查 inSyncBytes 增长趋势
- 检查文件是否双向流动(公司电脑写 → 公司电脑拉回来)
决策 4: 不迁移 sdc 退化盘,只监控
为什么不直接换?
- sdc 是 1TB SSD,装的是不重要的数据(临时存储)
- 还有别的备用盘可以顶上
- 现在不忙,先观察,周末有空再换
最终状态
服务清单
| ID | 角色 | 状态 | 备注 |
|---|---|---|---|
| PVE host | 主机 | 健康 | sdc 退化需关注 |
| VM100 | hermes | 健康 | |
| VM105 | myNas (fnOS) | 观察期 | 9-09 后删 |
| CT104 | opencode | 健康 | |
| CT110 | rustfs | 健康 | |
| CT111 | syncthing | 新增 | 本轮核心交付 |
| PBS | 备份 | 健康 | datastore 已迁移 |
文件夹状态
| |
网络拓扑
| |
关键数字
| 项 | 数字 |
|---|---|
| 同步数据总量 | ~57 GB |
| Syncthing 设备数 | 6 (含 PVE host 自己) |
| Tailscale 节点数 | 4 (PVE + CT111 + 用户的机器们) |
| 服务可用 SLA 目标 | 99.9% |
| 7 天观察期 | 2026-09-02 → 2026-09-09 |