Obsidian 同步 Remotely Save S3 配置指南

Obsidian 是非常优秀的笔记软件,其插件非常丰富,极大地丰富了 Obsidian 的功能。本文借助 Remotely Save 实现同步。

Obsidian v0.13.19

Remotely Save v0.2.13

项目地址:

https://github.com/fyears/remotely-save

分享链接:

obsidian://show-plugin?id=remotely-save

插件支持同步方式: S3及其兼容存储,Dropbox,OneDrive for personal,webdev。

我个人算是半个工具控,尝试过许多笔记软件。如云笔记中的 OneNote,Notion,有道云笔记,印象笔记,为知笔记,蚂蚁笔记,幕布等等。在线文档也有使用,如企业微信,飞书文档,语雀等等。也尝试过 VSCode+Git,Joplin,Trilium,思源笔记等等可以自部署的方案。

其中 VSCode+Git 非常好用,但是苦于没有合适的安卓客户端。git也不能使用。很多 Markdown 编辑器也有着不能存储图片的问题,虽然可以存在 Gitee 上,使用 Gitee 网页正常浏览。但终究还是需要更稳定的解决方案。

Joplin 是非常优秀的软件,虽然客户端不太好看,但是确实足够用了。Joplin 本身也支持S3存储,我使用过 腾讯云 COS 作为存储方案,但是他会生成非常多的文件。我不到 100 个笔记有 7000+ 文件生成。

Obsidian 以前就一直在关注了,由于 Obsidian 使用本地文件夹,我曾经配置过同步文件夹软件。但是比较麻烦。可以说,插件的出现解决了一个大麻烦。Remotely Save 可以说我一直在等待这样一个插件。

可使用 AWS S3 , 腾讯云 COS ,阿里云 OSS 。截止发文,阿里云 OSS 可以正常同步但是 Check Connectivity 时会报错。我测试COS可以正常使用,同时贴出 COS ,OSS 相关配置。

购买资源包 1年约7折 都是一年计算

项目规格费用(1年)
10GB存储包10GB约10 元
外网流量每月10GB约40元
读写请求每月20万次不到2元

总计每年约 52元,就可以有 10GB 存储,每月 10GB 流量,读写请求每月 20万次的笔记了。

并且如果达不到每月的资源包消耗,可以不购买资源包。比如10G存储包,实际个人笔记很难达到10G。再如流量费用:存储 1G 笔记,预计正常同步一年可能不超过10元。每多一个同步设备每次额外花费0.5元流量费用。读写请求费用比较低,也不占大头。

我预估值可能出现错误,我会使用这个COS存储一段时间来完善我的费用数据,但是总而言之,轻量使用费用不会很高。截止 202306根据使用情况,我的笔记约千条笔记,平均每月费用不足 0.3 元。每月大约几百兆流量,几万次请求。

使用这个插件配置同步功能时,导出配置会显示一个二维码或者是一条链接。在一个需要安装了 Remotely Save 的新设备上建立名称相同的库,并且安装这个同步插件。然后使用手机二维码识别功能,就可以正常的导入配置了。

配置示例:

配置项目名OSSCOS
s3Endpointoss-cn-beijing.aliyuncs.comcos.ap-beijing.myqcloud.com
s3Regionoss-cn-beijingap-beijing
s3AccessKeyIDAccessKey 获取AccessKey 获取
s3SecretAccessKeyAccessKey 获取AccessKey 获取
s3BucketNameobsidian-123obsidian

说明:

s3Endpoint OSS COS 均选择了北京节点

s3AccessKeyID,s3SecretAccessKey 对应的子用户记得授权。

s3BucketName 为存储桶名称。

注意 注意添加授权跨域请求CORS,后面图11为CORS配置界面。高版本 Obsidian 和 Remotely Save 并不必须

app://obsidian.md
capacitor://localhost
http://localhost

COS 可以参考:

Joplin使用腾讯云对象存储(COS)进行同步 - 知乎

Joplin 和这个插件类似,除了填写的东西不同其他均相同。下面是我个人配置的。

https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-26-47.png
1 打开访问控制
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-27-26.png
2 创建用户
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-28-56.png
3 创建用户
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-30-02.png
4 创建用户
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-31-06.png
5 创建用户
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-32-12.png
6 创建存储桶
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-33-22.png
7 创建存储桶
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-34-04.png
8 创建存储桶
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-34-29.png
9 创建存储桶
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-36-40.png
10 配置子用户授权
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-37-50.png
11 配置CORS
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-39-10.png
12 获取基本信息
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-43-36.png
13 安装插件
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-45-51.png
14 填写信息
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-46-51.png
15 Check 测试连接成功

OSS 配置类似

阿里云对象存储 OSS 和腾讯云 COS 对象存储步骤一致,只不过界面有所不同。

https://cdn.ftls.xyz/images/2023/12/202312021149033.png
1 注册阿里云账户,进入控制台,右上角悬浮,选择访问控制-用户
https://cdn.ftls.xyz/images/2023/12/202312021151364.png
2 创建一个没有任何权限的账户 保存好 AccessKey ID 和 AccessKey Secret

注意:没保存也可以在访问控制-用户中找到并查看 AccessKey ID 和 AccessKey Secret

https://cdn.ftls.xyz/images/2023/12/202312021152786.png
3 打开阿里云对象存储控制台 创建存储桶
https://cdn.ftls.xyz/images/2023/12/202312021155892.png
4 填写 Bucket 名称 其余默认 可选-打开版本控制
https://cdn.ftls.xyz/images/2023/12/202312021159767.webp
5 如果打开版本控制,需要配置生命周期-创建规则
https://cdn.ftls.xyz/images/2023/12/202312021203356.png
6 生命周期-规则-整个存储桶
https://cdn.ftls.xyz/images/2023/12/202312021201774.png
7 生命周期-规则-下拉找到历史版本-选择将历史文件在一个月后删除
https://cdn.ftls.xyz/images/2023/12/202312021214574.png
8 配置授权 给刚刚的没有任何权限的账户 权限范围 整个存储桶完全控制权限
https://cdn.ftls.xyz/images/2023/12/202312021217211.png
9 存储桶概述里找到其他参数
https://cdn.ftls.xyz/images/2023/12/202312021218003.png
10 填写完成后检查 成功即可正常同步
https://cdn.ftls.xyz/images/2023/12/202312021219945.png
11 效果

还有一些可选的,比如 七牛云 Kodo ,自建对象存储 MinIO 。大同小异,就不一一赘述了。

我注意到有人提到七牛云 Kodo 没有备案域名问题,实际上仅仅为 Obsidian 笔记备份,没有备案域名不是问题。一般说需要备案域名是在搭建图床后,没有备案域名不能公开访问。而同步笔记不会用到这个功能。不过 Kodo 免费 10GB 存储是个不大不小的吸引人的地方,但是正常购买一月 10GB 也就 1 元,正常使用存储笔记的费用也不占大头。根据个人需求尝试选择吧。

使用这个插件配置同步功能,导出配置会显示一个二维码或者是一条链接。在新设备上建立名称相同的库,并且安装这个同步插件。然后使用手机二维码识别功能,就可以正常的导入配置了。

https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-52-09.png
16 快速配置二维码
https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_20-01-31.png
17 同步

每次同步前后移动文件都要注意,可能出现重复文件。同步是增量同步,不会删除本地文件。逻辑是云,手机,PC中同一文件,PC删除后,云也删除。手机同步时,不会删除。这个问题在后续版本得到了解决。但是如果忘记手动同步,还是可能出现数据混乱。

  1. ios 版本问题
    remotely save 插件作者提到 ios15 以上可以工作,而作者手头没有相关设备无法测试。低版本 ios 可能无法使用
  2. 体验不够丝滑
    如果感觉 remotely save 效果慢等问题,不追求移动端同步可选坚果云等支持文件夹同步到软件。或者加预算使 Self-hosted LiveSync (ex:Obsidian-livesync) 插件 CouchDb 数据库同步,此插件支持移动端,支持实时同步,门槛高一些体验好一些。
  3. 应该买哪种资源包?存储容量,流量,读写请求如何选择?
    建议使用一段时间后看账单决定,一般而言无需购买资源包。
  4. 插件无法加载
    尝试重新下载,或复制配置完成的库文件夹到无法加载的设备本地文件夹上
  5. 报错 AWS authentication requires a valid Date
    or x-amz-date header
    更改到正确的时区
  6. 每次打开都会大量下载笔记和附件
    我个人是双系统 , Windows 与 Linux 之间公用文件夹出现这个问题。而这两个系统在同一个设备上时间上有个坑。说回来这个问题最后我的方案是不同步 1Mb 以上的附件。如有详细原因请给我留言或发邮件,待补充
  7. 误删文件问题
    由于插件规则是新文件替换旧文件,删除的文件列表会单独在云端存一个文件,包含删除的文件名和文件修改时间。然后同步时就会特意删除文件了。
    避免误删误操作的方法
  • 删除文件,在 obsidian 中设置成移动到 .trash 目录即可。文件丢了上那里去找就行了。
  • 多端同步时,别的设备先不同步稍微修改下文件,使修改日期最新,然后同步应该就可以了。
  • 对象存储服务,如 阿里云 oss,腾讯云 cos 都有版本控制功能。创建存储-高级可选配置,打开版本控制。误删除文件后,并同步后,可在对象存储-文件列表-历史版本中看到。也就可以恢复了。(注意设置生命周期及时清理历史文件,避免大量为不必要的历史文件存储付费)
  1. 报错 request failde,status403
    权限配置错误。也可能没配置跨域,还有可能是设备时间差了 15 分钟以上。其余错误原因可能较小暂时不提。参考 https://cloud.tencent.com/document/product/436/54303
  2. 总是忘记手动同步,是否可以自动同步?
    仅可以配置启动后一定时间内执行一次同步,以及几分钟执行一次。
  3. 扫码报错
    注意库文件夹名需要一致
  1. Alist 挂载,Web 端读写对象存储内的笔记
  2. Alist 挂载,安卓 Mix 挂载 Alist 提供的 WebDAV 读写笔记
  3. 使用对象存储 API 操作文件,按这个思路可以达到一部分云笔记提供的 API 功能。

如果有服务器或 NAS ,可使用 Docker 部署并配置 Obcsapi-Go ,本文标题下面的系列文章有介绍。开源项目 https://gitee.com/kkbt/obcsapi-go
即使没有,可使用阿里云云函数,熟悉的话几分钟就能搭建好了。此外 Obcsapi 的 Python 早期版本就是使用了云函数,供参考。

Obcsapi Go 效果:类似 flomo ,有 PWA 应用与一些 API 。用户可编写 Lua 和 Bash 自定义或拓展功能。更多功能见文档

高级玩法最好有些编程基础,或者至少熟练使用 Docker 等工具。代码开源,可根据需要自行修改。

此外,因为 markdown 纯文本特性,本身方便程序操作。具体拓展功能,或程序语言问题可以问现在的 AI 即可。如问题 “使用 python 找到一个文件夹下所有 .md 文件,并将打印所有包含 #tag 的行。”操作文件前注意备份。