约 5 分钟

如何在 Aktar 中使用 Cloudflare R2

Cloudflare R2 与 Aktar 非常搭配:没有出站流量费,免费额度足以覆盖大多数截图用途,还能通过 Cloudflare 网络为自定义域名提供服务。Aktar 内置了专门的 R2 预设,你只需要 Account ID、一个 API 令牌和一个存储桶。

准备工作

  • 已启用 R2 的 Cloudflare 账号
  • 如果希望链接使用自己的域名,需要一个托管在 Cloudflare 上的域名(可选)
  • 已在 Mac 上安装 Aktar

操作步骤

  1. 1

    创建存储桶

    在 Cloudflare 控制台中打开 R2 Object Storage,点击 Create bucket。取一个简短的名称,例如 screenshots,位置保持自动即可。

  2. 2

    为存储桶设置公开地址

    打开存储桶的 Settings。在 Custom Domains 下,绑定一个你在 Cloudflare 上管理的域名或子域名,例如 files.example.com。这是正式使用的最佳选择。

    如果只是快速测试,也可以启用 Public Development URL(pub-….r2.dev)。Cloudflare 会对该 URL 限速,不建议在生产环境中使用。

  3. 3

    创建 API 令牌

    回到 R2 概览页面,打开 Manage API tokens,创建一个具有 Object Read & Write 权限且仅限于你的存储桶的令牌。复制 Access Key ID 和 Secret Access Key:密钥只会显示一次。

    你的 Account ID 也显示在同一页面,它同时也是 S3 端点 https://<ACCOUNT_ID>.r2.cloudflarestorage.com 的第一部分。

  4. 4

    在 Aktar 中添加上传目标

    打开 Aktar 的 Settings → Destinations → Add Destination,选择 Cloudflare R2,按下表填写各字段。Aktar 会根据你的 Account ID 自动生成端点。

  5. 5

    测试并保存

    点击 Test Connection。Aktar 会上传一个很小的测试文件,检查能否通过你的公开地址访问,然后将其删除。全部通过后,点击 Save,把第一个文件拖到菜单栏图标上试试吧。

Aktar 中的设置

在 Settings → Destinations → Add Destination 中填写以下值。字段名称与应用内保持一致。

字段示例值
ProviderCloudflare R2
Profile NamePersonal任意名称均可。
Account ID3f9a71c0e2b8…在 R2 概览页面中查看。
Regionauto保持默认值。
Access Key IDa1b2c3d4…来自 R2 API 令牌。
Secret Access Key••••••••保存在 macOS 钥匙串中。
Bucketscreenshots
Public Base URLfiles.example.com你的自定义域名或 r2.dev URL。
Object Path{year}/{month}/{uuid}.{ext}可选,参见文件名和目录。

小技巧

  • 将 API 令牌限制在 Aktar 使用的那一个存储桶上。即使令牌泄露,也不会暴露其他资源。
  • 自定义域名会经过 Cloudflare 缓存,热门链接在全球都能快速加载,且不产生额外费用。
  • 想让目录更整齐?修改对象路径即可,例如改为 shots/{date}/{filename}-{random}.{ext}。参见文件名和目录。

故障排查

链接返回 Access Denied 或 403

确认 Public Base URL 是你的自定义域名或 r2.dev URL。…r2.cloudflarestorage.com 端点仅用于 API,永远不会公开提供文件。详见 Access Denied 错误。

Test Connection 提示凭证无效

请使用 R2 API 令牌中的 Access Key ID 和 Secret Access Key,而不是普通的 Cloudflare API 令牌或 Global API Key。同时检查 Account ID 中是否有多余的空格。

上传正常,但链接加载慢或被限速

你很可能在使用 r2.dev 开发 URL。正式使用请绑定自定义域名。

仍然遇到问题?浏览常见问题,或在 GitHub 上提问。