logo NodeSeekbeta

自荐自己写的 obsidian 笔记多端实时同步的插件 obsidian-better-sync ..

基本实现了 obsidian 笔记的 macos ios win 多端端实时同步( 安卓还没测试..理论上应该是正常使用 ).
欢迎大家踊跃尝试...

地址和详细介绍:

https://github.com/haierkeys/obsidian-better-sync

Image

插件安装 以及 开发状态

目前这个插件正在申请上架 官方三方市场 ( 官方插件审核比较慢 )...

上架申请地址 https://github.com/obsidianmd/obsidian-releases/pull/5851#issuecomment-2764369003 ( 欢迎围观... )

如果你想马上使用 需要手动下载安装插件...

另外 同步使用的服务端 是 基于 go + websocket + sqlite3 ..同步效率蛮高的

后续开发功能 会增加 自动同步到 各类 云存储, 比如 s3,sso,minio,webdav 等...

因为插件在审核期间.. 所以原则上 在审核期间不增加任何新功能...只做一些优化操作..

等上架后才会把更多好玩的点子全部都招呼上..

关于服务端注意事项

目前 服务端 obsidian-better-sync-service 项目 webgui相关还有一些小问题..
因为 webgui 项目 是从 obsidian-image-api-gateway 复制过来的..
所以除了登录注册和复制配置 之外其他功能为无效界面.. 请忽视...
除了webgui 之外的服务已经没什么太大问题了..
( 个人时间有限, 又要obs前端 又要后端..还有后端webgui 所以请大家包容哈,, 后续上架之后的几个版本会吧这些问题全部解决掉 )

不过由于webgui 排版的问题..近期准备调整 webgui 的版面重构..

部署方案案例

目前我在用的部署方案是 用一个 claw JP 小鸡 挂了的docker版服务端...

整体使用基本无感知无打扰...

写这个插件的心路历程以及缘由:

我之前是使用 remotely sync + s3 ( CF R2 ) ...

每次写完笔记都会 都会在 同步笔记 那个过程 产生严重的焦虑 外加 增加 等待同步成功的时间成本

(分析原因是 remotely sync 的执行效率以及 s3 服务的访问速度 叠加产生的 )

所以索性就自己写一个同步整套方案,来解决这个obs一直让人不淡定的痛点....

和Self-hosted LiveSync区别

在回复其他平台一个童鞋提问..我用AI整理了下段落,方便大家理解区别 我COPY过来

Self-hosted LiveSync 实现原理

  • 依赖 CouchDB 的 HTTP API
  • 只是开发了客户端,而非完整的 C/S 方案
  • 实时更新基于轮询或阻塞长查询实现
  • 可能导致手机端网络和电量快速消耗
  • 强依赖 CouchDB,难以实现各类扩展和联动功能
  • 设置复杂,有超长的注意事项和多个步骤,对小白用户不友好

Obsidian-Better-Sync 特点

  • 客户端和服务端完全独立实现
  • 服务端基于 Golang + Websocket + Sqlite 构建
  • 采用 Websocket 协议实现真正的多端实时同步
    • 大多数直播平台也采用此协议
    • 基于 TCP 的心跳机制,手机端比 HTTP 协议消耗更少
  • Go 程序并发处理性能高,同步速度快,用户基本无感知

扩展性与灵活性

  • 服务端独立实现,可增加多种功能(如备份到云存储或 WebDAV)
  • 数据库可灵活替换,支持 Sqlite(默认)或 MySQL
  • 采用 Sqlite 是为简化用户部署,无需额外搭建数据库环境

易用性

  • 设置超级方便:服务端架设好后,只需在插件端粘贴配置即可完成
  • 相比 Self-hosted LiveSync 的复杂设置更加用户友好

安全性

  • 基于 SSL 的 WSS 协议加密已足够安全
  • 作者认为额外的端到端加密可能是多余的

注:作者表示会注意功能边界,避免与官方同步功能过度竞争导致插件被下架

  • 插眼

  • 收藏

  • 支持 ac08

  • 技术性问题:
    1、我走的笔记很大,依赖sqlite读取数据,再实时刷新,对于大笔记来说,这样线路会不会很底下?
    2、实时同步,指的是本地端ui和server吧?我理解是本地启动了go WS sever,那双端数据如何同步的?

  • 技术性问题:
    1、我有的笔记很大,依赖sqlite读取数据,再实时刷新,对于大笔记来说,这样线路会不会很底下?
    2、实时同步,指的是本地端ui和server吧?我理解是本地启动了go WS sever,那双端数据如何同步的?

  • 🐂🍺

  • 服务器只是用来中转还是需要保留数据,有个小盘🐔

  • 关注

  • @dajiji666 #4

    1. 目前 同步操作只同步 markdown 笔记的文本内容... 不包括图片以及各类图片 ..所以基本不会存在太大的问题.. 再说后续可以做一些读写优化...这点在 go 上很容易实现...
    2. 你可以理解为 obs插件 对接 一个同步服务端... 当然你可以 把 go 程序跑在本地.. 不过那就失去了 多端同步的价值, 变成了一个纯备份工具... 所以还是需要一个公网服务器来部署服务端... 可以是 随便一个小鸡.. 我自己是用 claw jp (我记得 几十块一年的小鸡) 部署了这个服务..
  • @horrah #7
    我现在还在想 同步备份 是 完全同步 还是 只改不删.. 或者是 每天有新内容之后 在云存储上来个 快照...

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有61579位seeker

🎉欢迎新用户🎉