利用 Remotely Save 通过 Cloudflare R2 (S3 API) 在多个设备同步 Obsidian

前言

Obsidian 提供了付费的同步服务,不过要 $8 每月。我们可以利用 Remotely Save 通过 Cloudflare R2 (S3 API) 在多个设备同步 Obsidian,而且不用花一分钱。

Cloudflare R2 是一个类似于 AWS S3 这样的服务。不过 R2 提供了相当可观的免费额度,而且也较为容易获得(只需要一张普通的借记卡,然后注册 PayPal 中国账号,然后在 Cloudflare 添加 PayPal 作为付款方式即可)。下面是 Cloudflare R2 的定价表

R2 pricing

Free Paid - Rates
Storage 10 GB / month $0.015 / GB-month
Class A Operations 1 million requests / month $4.50 / million requests
Class B Operations 10 million requests / month $0.36 / million requests

注:“Class A Operations” 可以近似理解为 “写入“,“Class B Operations” 可以近似理解为 “读取“。可以看到,流量是不计费的。而且每月存储 10GB 以内,写入次数在一百万次以内,读取次数在一千万次以内是不会产生费用的。

创建 R2 存储桶

  1. 登录到 Cloudflare dashboard.

  2. 打开 https://dash.cloudflare.com/?to=/:account/r2/new .

  3. 为这个桶设置一个名字(例如 obsidian-paper ,这个名字在后续会用到)然后点击 Create bucket.

获取 Endpoint

  1. 登录到 Cloudflare dashboard.

  2. 打开 https://dash.cloudflare.com/?to=/:account/r2/default/buckets/obsidian-paper/settings
    (注意:该链接中的 obsidian-paper 要替换成你自己的桶的名字)

  3. Bucket Details 这一栏中找到 S3 API
    (形如 https://xxx.r2.cloudflarestorage.com/obsidian-paper

  4. https://xxx.r2.cloudflarestorage.com 就是我们要的 Endpoint.

获取 AccessKeyID 和 SecretAccessKey

  1. 登录到 Cloudflare dashboard.

  2. 打开 https://dash.cloudflare.com/?to=/:account/r2/api-tokens/create .

  3. Permissions 这栏中选择 Admin Read & Write.

  4. 点击下方的 Create API Token.

  5. 在新加载的页面中就可以找到 AccessKeyIDSecretAccessKey

  6. 点击下方的 Finish.

Remotely Save 插件

安装

在 Obsidian 的插件市场中搜索 Remotely Save 然后下载并启用。

在电脑进行配置

  1. 打开 Remotely Save 插件的设置页面。

  2. Endpoint、Bucket的名字、AccessKeyID 和 SecretAccessKey 按照上文所述的方法获取。

  3. Region 填写为 us-east-1 即可。

  4. S3 URL style 设置为 Path-Style.

  5. (可选)根据需要设置密码,以及自动同步的间隔(就算每分钟进行一次同步也难以用完每月一百万次的写入操作)

  6. 在 导入导出部分设置 这一栏中,点击 生成 QR 码 ,然后点击 点击此按钮复制特殊 URL 得到形如 obsidian://remotely-save?xxxxxxx 的链接。

在手机、平板进行配置

  1. 要创建一个名称相同的库(例如电脑中 Obsidian 的库的名字是repo1,那么在其他设备上也要用这个名字),并且安装这个 Remotely Save 插件。

  2. 在手机、平板中打开上文得到的形如 obsidian://remotely-save?xxxxxxx 的链接即可,如果不行就手动将 在电脑进行配置 章节提到的信息在手机、平板的 Obsidian 中再填写一次。