使用Syncthing+Tailscale+云服务器实现Obsidian低延迟云同步
写在前面这套方案推荐给本身已经有云服务器的朋友。如果你手头没有服务器额外买一台专门做笔记同步性价比不高不如直接用Obsidian Sync或坚果云。但如果你本来就有一台云服务器闲置那花一点时间配置一下就能获得一套免费、低延迟、数据完全自控的Obsidian同步方案。为什么不直接手机电脑P2P直接使用syncthing同步手机电脑体验并不好。举一个使用场景外出时在手机上编辑笔记如果电脑关机则需要保证手机上syncthing服务开启才能在电脑开机时同步文件有时手机syncthing后台被清除或手机没电关机则电脑端不能同步而服务器实时开机就能很好的解决这个问题。我想解决的问题我用Obsidian记笔记设备是一台电脑、一部Android手机、一台云服务器。需求很简单电脑上改的笔记手机上能稳定地及时同步手机上临时补充的内容回到电脑也能同步过来。试过几个方案都不太满意Obsidian Sync要订阅费网盘同步延迟高、偶尔丢文件Git对手机不友好。最后选了Syncthing做文件同步Tailscale做内网组网云服务器做中转。低延迟方案这套方案最核心的点是用Tailscale打通三端的内网连接。Syncthing本身支持通过官方中继服务器同步但走中继速度慢、延迟高。直接用公网IP连又受网络环境波动影响不稳定。Tailscale是一个零配置的组网工具。三台设备各装一个登录同一个账号就会被分配到一个虚拟内网里互相之间用内网IP直连通信。效果就是电脑端保存笔记后手机端通常几秒内就能同步完成。实际用下来延迟体感接近Obsidian Sync但完全不用交订阅费。在Syncthing的远程设备设置里地址这样填tcp://你的Tailscale内网IP:22000, dynamic22000是Syncthing传输端口dynamic表示内网连不上时自动走中继兜底。优先走Tailscale内网保证低延迟兜底走中继保证不掉线。整体架构三端采用星型拓扑电脑和手机不直连全部通过服务器中转电脑 ---- 云服务器 ---- 手机角色分工电脑和手机是编辑端Send Receive服务器是中转和备份层Receive Only。一端离线时服务器暂存变更等那端上线后自动补齐。一开始我试过三端两两互联的P2P模式但连接关系多、排障复杂一端网络波动时容易出看着在线但不同步的问题。改成星型以后稳定了很多。配置过程三台设备都要装Syncthing和Tailscale。装好Tailscale、登录同一个账号后每台设备会分配到一个100.x.x.x的内网IP这个后面会反复用到。在Tailscale客户端界面或网页控制台都能看到每台设备的内网地址先记下来。服务器端Linux服务器按Syncthing官方文档安装即可。装好后设置为开机自启sudo systemctl enable syncthing你的用户名.service sudo systemctl start syncthing你的用户名.service同时确保Tailscale也设为开机自启。Syncthing启动后通过浏览器打开Web管理界面默认地址是http://localhost:8384。如果你是远程连接服务器可以用Tailscale内网IP访问http://服务器Tailscale内网IP:8384。建议在设置里给Web界面配一个用户名和密码防止被扫到。接下来做三件事第一获取服务器的设备ID。点右上角操作 显示ID会看到一串类似XXXXXXX-XXXXXXX-XXXXXXX-...格式的字符串。这就是这台设备的唯一标识后面添加设备的时候要用。建议复制保存下来。第二添加电脑和手机为远程设备。点添加远程设备在设备ID栏粘贴电脑或手机的设备ID在对应设备上同样通过操作 显示ID获取设备名随便填一个方便辨认的名字就行。关键的一步是在高级选项卡里把地址从默认的dynamic改成tcp://那台设备的Tailscale内网IP:22000, dynamic比如电脑的Tailscale IP是100.100.1.10就填tcp://100.100.1.10:22000, dynamic。这样Syncthing会优先走Tailscale内网直连连不上再走中继兜底。服务器这边需要分别添加电脑和手机两个设备。第三创建共享文件夹。点添加文件夹路径填服务器上你想用来存放笔记的目录比如/home/你的用户名/ObsidianVault文件夹类型选Receive Only然后在共享选项卡里勾选刚才添加的电脑和手机。这样服务器只负责接收和缓存变更不会主动编辑笔记。最后在文件夹设置的文件版本控制里建议选简单文件版本控制或交错文件版本控制开启后服务器上会保留笔记的历史版本误删误改可以回退。电脑端电脑上安装SyncthingWindows用SyncTrayzor这个客户端体验更好装好后打开管理界面。获取本机的设备ID同样通过操作 显示ID查看复制备用。添加服务器为远程设备。点添加远程设备粘贴服务器的设备ID填个好认的名字。地址栏同样改成Tailscale内网地址tcp://服务器的Tailscale内网IP:22000, dynamic保存后服务器那边应该会弹出一个确认请求如果服务器端还没添加这台电脑的话在服务器的Syncthing界面点确认即可。两端互相添加完之后状态会显示已连接。添加同步文件夹。点添加文件夹路径指向你电脑上的Obsidian笔记库目录就是你平时用Obsidian打开的那个vault文件夹文件夹类型选Send Receive在共享选项卡里勾选服务器。保存后Syncthing会开始首次同步把笔记文件推送到服务器。手机端Android上推荐装Syncthing-ForkF-Droid上可以下载比原版维护更积极。装好后操作和电脑端类似获取手机设备ID在Syncthing-Fork的界面里找到显示设备ID复制备用。添加服务器为远程设备。填入服务器的设备ID地址同样设置为tcp://服务器的Tailscale内网IP:22000, dynamic添加同步文件夹。路径指向手机上的Obsidian笔记目录。如果你用的是Obsidian手机App笔记目录一般在手机内部存储的Documents/Obsidian或者你自己指定的位置。文件夹类型选Send Receive勾选服务器。服务器端确认后手机就会开始同步。首次同步完成后在手机Obsidian里打开这个目录作为vault就能看到电脑上的所有笔记了。手机端最关键的设置关电池优化这是整个配置里最容易踩坑的地方。Android系统默认会杀后台进程如果不做处理Syncthing锁屏几分钟就会被系统干掉同步直接断掉。需要做的事去手机设置 应用管理 找到Syncthing-Fork 电池或耗电管理设为不限制不同品牌手机叫法不一样但意思相同。允许Syncthing-Fork自启动和后台运行。如果手机有省电模式或智能省电策略把Syncthing-Fork加进白名单。部分品牌比如小米、华为还需要在最近任务里把Syncthing-Fork锁定防止被一键清理。这一步直接决定手机端的同步能不能正常工作。配置完之后可以用电脑改一篇笔记等待几秒钟再看看手机Obsidian看看有没有同步过来验证一下。使用注意别同时编辑同一篇笔记。两端同时改同一个文件可能产生冲突副本。服务器上不要手动改笔记文件。它的角色是中转站不是编辑端。保持服务器和笔记本Syncthing和Tailscale常驻运行。手机端只要在使用的时候开启即可。小结这套方案的前提是你已经有一台云服务器。在此基础上Syncthing和Tailscale都是免费的没有额外花费。最终效果数据完全在自己手里电脑和手机都能编辑电脑改完笔记手机端几秒内同步到位服务器自动中转并留存历史版本。不是零维护但在自建方案里这套已经是延迟、成本和掌控感之间比较平衡的一种了。如果你完全不想折腾Obsidian Sync当然更省心。但如果你愿意花一点时间配置一下这套方案的实际体验不会让你失望。