Mastodon ↗ 是一款流行的联邦宇宙 ↗软件。本指南将说明如何配置 R2 作为自托管 Mastodon 实例的对象存储,无论是新实例还是现有实例。
您可以通过多种方式设置自托管 Mastodon 实例。有关更多详情,请参阅官方文档 ↗。在安装后到达 Mastodon 文档中的配置环境 ↗步骤时,请参阅以下步骤进行后续操作。
与 Mastodon 实例的默认主机名不同,文件的对象存储需要唯一的主机名。例如,如果您将 Mastodon 的主机名设置为 mastodon.example.com,可以使用 mastodon-files.example.com 或 files.example.com 来访问文件。这意味着当访问 mastodon.example.com 上的实例时,如果帖子附有图片或视频等媒体,文件将从本步骤确定的主机名(如 mastodon-files.example.com)提供。
-
在 Cloudflare 仪表板中,前往 R2 object storage(R2 对象存储) 页面。
Go to Overview ↗ -
选择 Create bucket(创建存储桶)。
-
输入存储桶名称,然后选择 Create bucket(创建存储桶)。此名称在设置 Mastodon 实例时是内部的,不公开访问。
-
创建存储桶后,导航到此存储桶的 Settings(设置) 选项卡并复制 S3 API 的值。
-
从 Settings(设置) 选项卡中,选择 Connect Domain(连接域名) 并输入步骤 1 中的主机名。
-
返回 R2 概览页面并选择 Manage R2 API Tokens(管理 R2 API 令牌)。
-
选择 Create API token(创建 API 令牌)。
-
通过选择 API 名称旁边的铅笔图标将令牌命名为
Mastodon,并授予 Edit(编辑) 权限。选择 Create API Token(创建 API 令牌) 完成令牌创建。 -
复制 Access Key ID(访问密钥 ID) 和 Secret Access Key(秘密访问密钥) 的值。
根据官方配置文件 ↗配置 Mastodon 实例时,用以下详细信息替换 File storage(文件存储) 部分。
S3_ENABLED=true
S3_ALIAS_HOST={{mastodon-files.example.com}} # Change to the hostname determined in step 1
S3_BUCKET={{your-bucket-name}} # Change to the bucket name set in step 2
S3_ENDPOINT=https://{{unique-id}}.r2.cloudflarestorage.com/ # Change the {{unique-id}} to the part of S3 API retrieved in step 2
AWS_ACCESS_KEY_ID={{your-access-key-id}} # Change to the Access Key ID retrieved in step 2
AWS_SECRET_ACCESS_KEY={{your-secret-access-key}} # Change to the Secret Access Key retrieved in step 2
S3_PROTOCOL=https
S3_PERMISSION=private配置完成后,您可以运行实例。实例运行后,上传媒体附件并验证附件是否从上述设置的主机名检索。返回 R2 中的存储桶页面时,您应看到以下结构。
如果您已有正在运行的实例,可以将媒体文件迁移到 R2 并受益于零出口费用。
- (可选)为最小化迁移文件数量,您可以使用 Mastodon admin CLI ↗ 清理未使用的文件。
- 按照上述设置新实例部分的步骤 1 和 2 设置 R2 存储桶以准备文件迁移。
- 将所有媒体文件迁移到 R2。请参阅提供的示例以连接各种提供商。如果您当前在本地托管这些媒体文件,可以使用
rclone将这些本地文件上传到 R2。
在文件迁移进行中(可能需要一段时间)时,您可以准备文件路径重定向设置。
如果您在本地托管媒体文件,可能需要设置重定向。默认情况下,本地托管的媒体文件路径类似 https://mastodon.example.com/cache/...,在 R2 存储桶与 Mastodon 实例一起运行后,需要重定向到类似 https://mastodon-files.example.com/cache/... 的路径。如果您已使用另一个 S3 兼容对象存储服务并希望保持相同的主机名,则无需设置重定向。
批量重定向 适用于所有套餐。有关更多信息,请参阅在仪表板中创建批量重定向。
根据迁移计划,您可以验证存储桶是否公开可访问以及重定向是否正常工作。要验证,请打开类似 https://mastodon.example.com/cache/... 的已上传媒体文件路径,将主机名从 mastodon.example.com 替换为 mastocon-files.example.com 并访问新路径。如果文件正确打开,请继续最后一步。
迁移期间您的实例可能仍在运行,迁移期间可能有新创建的媒体文件,通过直接上传或从其他联邦实例获取。要仅上传新创建的文件,可以使用 rclone 等程序。请注意,重新运行同步程序时,所有现有文件都将被检查,至少使用 Class B 操作。
所有文件同步完成后,可以使用设置新实例步骤 3 中提到的新的对象存储配置重启 Mastodon 实例。