banner
约 2,100 字
7 分钟

Obsidian完美同步插件,多端实时同步、笔记历史版本、页面管理面板,一次解决全部同步痛点

-
-
无标签

摘要

本文推荐 Fast Note Sync For Obsidian 插件,作为解决 Obsidian 同步痛点的方案。该插件支持实时同步插件、设置及附件,具备历史版本和离线合并功能,但需自建服务端。文章详细介绍了基于 Docker 的部署方法及 BRAT 安装流程,并强调了关闭注册、配置 WebSocket 反代及大附件分流等关键注意事项。

前言

使用 Obsidian 的朋友,一定都为它的同步备份纠结过。官方自带的 Sync 收费、且对国内网络不算友好;一直以来的主力方案 Remotely Save 插件很强大,但有些设置不太顺手,我在手机端同步时偶尔会出错。

最近发现了一款插件 Fast Note Sync For Obsidian,功能相当强,解决了我的一些痛点:电脑端和手机端不只是文章,连插件、设置、主题、附件都能实时同步。它还提供笔记历史版本、Web 端文章管理、对离线设备的笔记修改自动合并——总之非常强大且免费。唯一的门槛是:需要自己部署一个服务端。

blog image

先说清楚:Obsidian 同步的三条路线怎么选

很多人上来就问"哪个插件最好",但真正该问的是"我能接受什么代价"。Obsidian 同步大致三条路,各有一个绕不开的取舍:

方案

数据落在哪

代价

缺什么

官方 Sync

Obsidian 官方服务器

按年订阅,最贵

不开放自建

Remotely Save

你自己的对象存储(S3/WebDAV/OneDrive)

配置简单、几乎免费

没有版本历史,冲突靠"后写覆盖"

Fast Note Sync

你自己部署的服务端

要有一台能跑 Docker 的机器

需自己维护

看出关键差别了吗?"同步"和"备份"是两回事。

备份是单向的:本地是唯一真相,把副本推上去就行。同步是双向的:A 设备和 B 设备都可能改同一个文件,那么"两边都改了"的那一刻该听谁的?这就是冲突。

  • Remotely Save 的策略是"最后写入的赢"——省事,但你在手机上改的一段话,可能被电脑上更晚的一次保存直接盖掉,而且你事后才知道(甚至不知道)。

  • 官方 Sync 和 Fast Note Sync 这类方案,走的是"保留两份 + 合并 / 留历史版本"的路子。冲突时不会直接丢内容,最坏情况是生成一个冲突副本,或让你从历史上翻回来。

这就是我愿意为它单独部署一个服务端的原因——省下的不是钱,是内容不丢的确定性。

插件功能

  • 🚀 极简配置:

    • 无需繁琐设置,只需粘贴远端服务配置即可开箱即用。

    • 也可以在桌面端使用一键导入,自动完成授权。

  • 📗 笔记实时同步:

    • 自动监听并同步 Vault(仓库)内所有笔记的创建、更新与删除操作。

  • 🖼️ 附件全面支持:

    • 实时同步图片、视频、音频等各类非设置文件。

⚠️ 注意:需要插件 v1.0+,服务端 v0.9+。请控制附件文件大小,大文件可能会导致同步延迟。

  • ⚙️ 配置同步:

    • 提供配置同步功能,支持多台设备的配置同步,告别手动给多端设备拷贝配置文件的痛苦。

⚠️ 注意:需要插件 v1.4+,服务端 v1.0+。目前还在测试阶段,请谨慎使用。

  • 🛂 同步排除与白名单:

    • 提供同步排除与白名单功能,你可以针对自己的需求设定同步策略。

  • 🔄 多端同步:

    • 支持 Mac、Windows、Android、iOS 等平台。

  • 📝 笔记历史:

    • 提供笔记历史功能,您可以查看笔记的所有历史修改详情,并恢复到任意历史版本。

  • 🛡️ 离线笔记编辑自动合并:

    • 对离线设备的笔记修改,在重新连接服务端时自动合并,避免因只保留最新更新导致笔记内容丢失。

  • 🚫 离线删除同步与补全:

    • 离线期间的笔记、附件、配置的删除操作,下次连接时将自动同步到服务端或自动从服务端补全。

  • 🔍 版本检测:

    • 提供版本检测功能,可以快速获取插件端 / 服务端的最新版本信息,方便升级。

  • ☁️ 附件云预览:

    • 提供附件在线预览功能,附件无需同步到本地设备,从而节省本地存储空间。

配合插件的排除设置,可对某类附件直接使用第三方资源库(例如 WebDAV)而不通过服务端上传。

  • 🗒️ 同步日志:

    • 提供同步日志功能,便于查看每次同步的详细信息。

服务端部署

  1. 项目地址:https://github.com/haierkeys/fast-note-sync-service 作者提供了多种部署方式,包括一键脚本、Docker 及手动安装,我习惯使用 Docker Compose 部署。

  2. 创建 docker-compose.yaml 文件:

YAML
version: '3'
services:
  fast-note-sync-service:
    image: haierkeys/fast-note-sync-service:latest
    container_name: fast-note-sync-service
    restart: always
    ports:
      - "9000:9000"  # RESTful API & WebSocket 端口,其中 /api/user/sync 为 WebSocket 接口地址
    volumes:
      - ./storage:/fast-note-sync/storage  # 数据存储
      - ./config:/fast-note-sync/config    # 配置文件

blog image
  1. 访问管理面板:在浏览器打开 http://{服务器IP}:9000

blog image
  1. 首次访问需注册账号。(如需关闭注册功能,请在配置文件中设置 user.register-is-enable: false)

blog image
  1. 添加反代域名(可选)。

  2. 登录管理面板,点击 "复制 API 配置"。

blog image

部署前必须知道的三件事

一、那个 9000 端口为什么能让同步"实时"

看 compose 里的注释:/api/user/sync 是 WebSocket 接口地址。这是它和 Remotely Save 一类方案最本质的技术差异。

  • 传统方案靠轮询:每隔 N 分钟去问一次"有没有新东西",间隔太短费电费流量,间隔太长你就得手动点同步。

  • WebSocket 是长连接:握手一次后连接一直挂着,服务端有变更可以立刻推给客户端。

这就是"你在电脑上敲完一句话,手机端一秒内就看到"背后的机制。代价也有——长连接更怕网络抖动(手机切 Wi-Fi / 4G 时会断开重连),所以同步日志里偶尔出现重连记录是正常的,不代表配置错了。

二、公网暴露前,先把注册关掉

管理面板第一次打开就允许任何人注册账号(这是为了方便你首次开通)。如果你打算把它放到公网并通过域名访问,务必在做反代之前就在配置文件里把 user.register-is-enable 改成 false,否则等于把一个"谁都能注册"的服务挂在互联网上。

顺手也建议:反代层加上 IP 白名单或基础认证,再加一条 fail2ban 之类的登录失败封禁。

三、反代要透传 WebSocket,这是最常见的坑

因为它依赖 WebSocket,反代配置必须转发 Upgrade 和 Connection 头,否则表现会很迷惑:网页能打开、能登录、能看历史版本,但所有设备就是同步不了。

  • Nginx Proxy Manager:在高级设置里加上:

    Nginx
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
  • 雷池 WAF / 其他 WAF 前置:同样要确认 WebSocket 不被拦(部分 WAF 默认会把它当成异常长连接)。

  • 记得配 HTTPS。手机端在非 HTTPS 环境下的后台同步行为,各家系统限制不一样,走 https:// 最省心。

数据存在哪、怎么备份

看 compose 的两个挂载点就很清楚了:

  • ./storage —— 笔记正文、附件等实际数据

  • ./config —— 服务端配置

这两个目录就是你全部的数据。因为是自建,备份的主动权在你手里:直接对整个 ./storage 做定时打包(或交给 NAS 的快照 / rsync)即可,也不用担心哪天厂商停服。这一点是自建方案相对官方服务的最大收益——数据主权。

换服务器迁移也简单:把这两个目录拷到新机器,起同一个 compose,配置都不用重填。

附件太大怎么办:拆成"两套通道"

原文提到"请控制附件文件大小,大文件可能会导致同步延迟",这句话背后的原因是:附件走的是服务端中转,大文件相当于每次都要过一遍你的服务器,速度受你服务器上行带宽限制。

更聪明的做法是拆分策略——正文走 Fast Note Sync(要的是实时和版本),大附件走第三方对象存储:

  • 在插件的排除设置里,把 attachments/ 目录(或按扩展名,比如 *.mp4、*.zip)排除出同步范围;

  • 这些附件改用 WebDAV / S3 等其他资源库托管;

  • 插件层面仍可用"附件云预览"看到它们,本地不必下载。

这样既保住了笔记的实时性和历史版本,又不会被几个视频把服务器带宽打满。

插件安装

纯文本
> 手机端同样操作
  1. 在 Obsidian 插件社区市场搜索并安装 BRAT 插件。

blog image

为什么要用 BRAT?因为 Fast Note Sync 还没上架 Obsidian 官方插件市场,BRAT 的作用就是从 GitHub 仓库直接安装"未上架"插件,并支持后续自动更新。这是当前安装它的标准路径。

  1. 进入插件设置界面,点击 Add plugin 并粘贴 https://github.com/haierkeys/obsidian-fast-note-sync

blog image
  1. 打开插件配置项,点击 粘贴远端配置 按钮,将远端服务配置粘贴到输入框中。

blog image
  1. 回到 Web 端,可以使用远程管理笔记、计划备份等功能。

blog image

和另外两个方案的关系

如果你的核心需求是"笔记多端同步",这三个方案其实可以横向比较:

  • Fast Note Sync(本篇)——实时 + 历史版本 + 可自建,追的是"像本地一样快,且不怕丢"。适合笔记量大、改动频繁的写作者。

  • 自建 Joplin 服务器——如果你更偏向"开源笔记客户端的完整替代品",Joplin 也支持自建同步服务端,端到端加密是它的卖点。区别在于 Joplin 是自己的客户端,而 Obsidian 插件方案让你继续留在 Obsidian 生态里。

  • 可道云 + Syncthing——如果同步对象不止笔记,还有大量文档、表格、素材要一起管理,那其实该往上走一层,用网盘 + 文件同步的组合来兜底。

我的建议是:笔记交给 Fast Note Sync,文件交给网盘。两者职责不同,别指望一个工具全包。

小结

Fast Note Sync 把 Obsidian 最让人头疼的同步问题,用"自建服务端"换来了实时性、历史版本和离线合并三样东西。它的门槛只有一次——把那个 Docker 容器跑起来;跑起来之后,日常几乎感受不到它的存在,这正是同步工具最好的状态。

部署时记住三句话:公网前先关注册、反代要透传 WebSocket、大附件走另一条通道。避开这三个坑,剩下的就很顺了。

END

相关文章

暂无相关文章