# Obsidian 同步 Remotely Save S3 配置指南 Obsidian 是非常优秀的笔记软件,其插件非常丰富,极大地丰富了 Obsidian 的功能。本文借助 Remotely Save 实现同步。 ## 相关信息 Obsidian v0.13.19 Remotely Save v0.2.13 项目地址: [https://github.com/fyears/remotely-save](https://github.com/fyears/remotely-save) 分享链接: [obsidian://show-plugin?id=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 可以说我一直在等待这样一个插件。 ## S3存储 可使用 AWS S3 , 腾讯云 COS ,阿里云 OSS 。截止发文,阿里云 OSS 可以正常同步但是 Check Connectivity 时会报错。我测试COS可以正常使用,同时贴出 COS ,OSS 相关配置。 ### Obsidian COS 费用计算 购买资源包 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 的新设备上建立名称相同的库,并且安装这个同步插件。然后使用手机二维码识别功能,就可以正常的导入配置了。 配置示例: | 配置项目名 | OSS | COS| | -------- | -------- | -------- | | s3Endpoint | oss-cn-beijing.aliyuncs.com | cos.ap-beijing.myqcloud.com | |s3Region|oss-cn-beijing| ap-beijing | |s3AccessKeyID| AccessKey 获取 | AccessKey 获取| |s3SecretAccessKey| AccessKey 获取|AccessKey 获取| |s3BucketName| obsidian-123 | obsidian | 说明: s3Endpoint OSS COS 均选择了北京节点 s3AccessKeyID,s3SecretAccessKey 对应的子用户记得授权。 s3BucketName 为存储桶名称。 **注意** 注意添加授权跨域请求CORS,后面图11为CORS配置界面。高版本 Obsidian 和 Remotely Save 并不必须 >app://obsidian.md >capacitor://localhost >http://localhost COS 可以参考: [Joplin使用腾讯云对象存储(COS)进行同步 - 知乎](https://zhuanlan.zhihu.com/p/346460176) Joplin 和这个插件类似,除了填写的东西不同其他均相同。下面是我个人配置的。 ### COS 配置流程 {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-26-47.png" caption="1 打开访问控制" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-27-26.png" caption="2 创建用户" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-28-56.png" caption="3 创建用户" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-30-02.png" caption="4 创建用户" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-31-06.png" caption="5 创建用户" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-32-12.png" caption="6 创建存储桶" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-33-22.png" caption="7 创建存储桶" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-34-04.png" caption="8 创建存储桶" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-34-29.png" caption="9 创建存储桶" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-36-40.png" caption="10 配置子用户授权" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-37-50.png" caption="11 配置CORS" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-39-10.png" caption="12 获取基本信息" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-43-36.png" caption="13 安装插件" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-45-51.png" caption="14 填写信息" >}} {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-46-51.png" caption="15 Check 测试连接成功" >}} OSS 配置类似 ### OSS 配置流程 阿里云对象存储 OSS 和腾讯云 COS 对象存储步骤一致,只不过界面有所不同。 {{< image src="https://cdn.ftls.xyz/images/2023/12/202312021149033.png" caption="1 注册阿里云账户,进入控制台,右上角悬浮,选择访问控制-用户" >}} {{< image src="https://cdn.ftls.xyz/images/2023/12/202312021151364.png" caption="2 创建一个没有任何权限的账户 保存好 AccessKey ID 和 AccessKey Secret" >}} 注意:没保存也可以在访问控制-用户中找到并查看 AccessKey ID 和 AccessKey Secret {{< image src="https://cdn.ftls.xyz/images/2023/12/202312021152786.png" caption="3 打开阿里云对象存储控制台 创建存储桶" >}} {{< image src="https://cdn.ftls.xyz/images/2023/12/202312021155892.png" caption="4 填写 Bucket 名称 其余默认 可选-打开版本控制" >}} {{< image src="https://cdn.ftls.xyz/images/2023/12/202312021159767.webp" caption="5 如果打开版本控制,需要配置生命周期-创建规则" >}} {{< image src="https://cdn.ftls.xyz/images/2023/12/202312021203356.png" caption="6 生命周期-规则-整个存储桶" >}} {{< image src="https://cdn.ftls.xyz/images/2023/12/202312021201774.png" caption="7 生命周期-规则-下拉找到历史版本-选择将历史文件在一个月后删除" >}} {{< image src="https://cdn.ftls.xyz/images/2023/12/202312021214574.png" caption="8 配置授权 给刚刚的没有任何权限的账户 权限范围 整个存储桶完全控制权限" >}} {{< image src="https://cdn.ftls.xyz/images/2023/12/202312021217211.png" caption="9 存储桶概述里找到其他参数" >}} {{< image src="https://cdn.ftls.xyz/images/2023/12/202312021218003.png" caption="10 填写完成后检查 成功即可正常同步" >}} {{< image src="https://cdn.ftls.xyz/images/2023/12/202312021219945.png" caption="11 效果" >}} ### 其他对象存储说明 还有一些可选的,比如 七牛云 Kodo ,自建对象存储 MinIO 。大同小异,就不一一赘述了。 我注意到有人提到七牛云 Kodo 没有备案域名问题,实际上仅仅为 Obsidian 笔记备份,没有备案域名不是问题。一般说需要备案域名是在搭建图床后,没有备案域名不能公开访问。而同步笔记不会用到这个功能。不过 Kodo 免费 10GB 存储是个不大不小的吸引人的地方,但是正常购买一月 10GB 也就 1 元,正常使用存储笔记的费用也不占大头。根据个人需求尝试选择吧。 ## 其他端配置流程 使用这个插件配置同步功能,导出配置会显示一个二维码或者是一条链接。在新设备上建立**名称相同**的库,并且安装这个同步插件。然后使用手机二维码识别功能,就可以正常的导入配置了。 {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_19-52-09.png" caption="16 快速配置二维码" >}} ## 同步 {{< image src="https://cdn.ftls.xyz/images/2022/01/Snipaste_2022-01-27_20-01-31.png" caption="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 都有版本控制功能。创建存储-高级可选配置,打开版本控制。误删除文件后,并同步后,可在对象存储-文件列表-历史版本中看到。也就可以恢复了。(注意设置生命周期及时清理历史文件,避免大量为不必要的历史文件存储付费) 8. 报错 request failde,status403 权限配置错误。也可能没配置跨域,还有可能是设备时间差了 15 分钟以上。其余错误原因可能较小暂时不提。参考 https://cloud.tencent.com/document/product/436/54303 9. 总是忘记手动同步,是否可以自动同步? 仅可以配置启动后一定时间内执行一次同步,以及几分钟执行一次。 10. 扫码报错 注意库文件夹名需要一致 ## 高级玩法 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 的行。”操作文件前注意备份。