Mastodon 使用 Cloudflare R2 对象储存

提醒大家在选择对象储存服务商时要慎重考虑，不要因为追求免费而放松对资源安全性和可靠性的要求。

为了追求免费，我的 Mastodon 实例一直在使用 Scaleway S3 作为静态资源仓库。然而，之前遭遇了一次严重的可用性问题，导致写入的图片无法访问。为了避免类似情况再次发生，我不得不连夜将资源从 Scaleway S3 迁移到 Cloudflare R2。

R2 价格算是比较低廉的，无固定月费：

项目 | 免费额度 | 费用
存储 | 10 GB / 月 | 0.015 美元 / GB
A 类操作：改变状态 | 100 万次 / 月 | 4.50 美元 / 百万次
B 类操作：读取现有状态 | 1000 万次 / 月 | 0.36 美元 / 百万次

Mastodon 配置 Cloudflare R2 有个小坑，必须要设置权限才能上传成功，需要在 .env.production 设置：

Copy
S3_PERMISSION=private

完整的配置如下：

Copy
S3_ENABLED=true
S3_PROTOCOL=https
S3_REGION=auto
S3_ENDPOINT=https://[HIDDEN].r2.cloudflarestorage.com
S3_HOSTNAME=pub-[HIDDEN].r2.dev
S3_BUCKET=[HIDDEN]
S3_PERMISSION=private
AWS_ACCESS_KEY_ID=[HIDDEN]
AWS_SECRET_ACCESS_KEY=[HIDDEN]
S3_ALIAS_HOST=s3assets.mastodon.instance