大家好,
我想分享一下我如何成功为我的 Discourse 论坛配置 Cloudflare R2 以进行上传和备份的经验和步骤。希望这能帮助到其他正在寻找将 Cloudflare R2 与 Discourse 一起使用的人。
设置概述:
- 平台: Discourse (Bitnami 安装)
- 存储桶: Cloudflare R2
- 自定义域名: 设置用于公开提供文件
- 配置: 完全通过 Discourse 站点设置完成(未触及任何环境变量)
分步指南:
- 创建 Cloudflare R2 存储桶:
- 登录您的 Cloudflare 账户并导航到 R2 存储。
- 为您的 Discourse 上传创建一个新的存储桶(例如,
forum-uploads)。 - 记下存储桶 S3 API URL、访问密钥 ID 和秘密访问密钥。
- 设置自定义域名用于 CDN:
- 要公开提供您的 R2 存储桶内容,请在 Cloudflare 中创建自定义域名。
- 例如,我使用了
forumfiles.example.in。 - 确保将 DNS 设置指向 Cloudflare 提供的 CNAME。由于我的域名在 Cloudflare 上,它已为我完成。
- 配置 Discourse 站点设置:
- s3_bucket: 您的 R2 存储桶名称(例如,
forum-uploads)。 - s3_region: 设置为美国东部(弗吉尼亚州)。没有自动选项。
- s3_endpoint: 使用 Cloudflare 提供的存储桶 S3 API URL(例如,
https://<your-bucket-unique-id>.r2.cloudflarestorage.com)。 - s3_access_key_id: 您的 R2 访问密钥 ID。
- s3_secret_access_key: 您的 R2 秘密访问密钥。
- s3_cdn_url: 用于 CDN 的自定义域名(例如,
https://forumfiles.example.in)。 - 确保选中启用 S3 备份和启用 S3 上传。
- s3_bucket: 您的 R2 存储桶名称(例如,
- 调整权限和 CORS:
- 将您的 R2 存储桶设置为私有并配置 CORS 策略:
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "POST", "PUT", "HEAD"],
"AllowedOrigins": ["*"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3000
}
]
* 这确保了上传能够正确工作而不会出现 CORS 问题。
- 测试设置:
- 通过您的 Discourse 论坛上传测试文件或图片,以验证上传是否正常工作。
- 检查文件是否可以通过您的自定义域名访问(例如,
https://forumfiles.example.in/original/1X/...)。 - 检查备份,我已成功执行备份。在 R2 存储桶中进行了交叉检查,并且它也列在站点设置中。
结论:
通过遵循这些步骤,我能够无缝地将 Cloudflare R2 与 Discourse 集成,高效地处理上传和备份。如果您有任何问题或遇到问题,请随时提问!