我可以下载备份,我从来没有遇到过任何问题。
包含 S3 上传吗?
你看了图片网址,它看起来怎么样?
所以我们仍然无法通过 app.yml 配置 r2?只能通过网站设置,也就是 DB_S3_CONFIG?
使用此方法,您可以通过 rake uploads : migrate to s3 将旧的本地上传迁移到 R2 吗?
嘿,感谢大家提供的这些信息。
如果我理解正确的话,“DISCOURSE_CDN_URL” 可以与 “DISCOURSE_S3_CDN_URL” 相同,后者是 Cloudflare 上存储桶链接的自定义公共域名?还是需要其他配置?
是的,您必须在 discourse container.yml 中添加相同的域名。以下是使用示例:
## 此 Discourse 实例的 HTTP 或 HTTPS CDN 地址(配置为拉取)
## 参阅 https://meta.discourse.org/t/14857 获取详情
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
#DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: 'auto'
DISCOURSE_S3_ENDPOINT: 'https://45dv544v56x****************************564564.eu.r2.cloudflarestorage.com'
DISCOURSE_S3_ACCESS_KEY_ID: '564dfds4f54sdfs********65564545'
DISCOURSE_S3_SECRET_ACCESS_KEY: 'sddfsdf564564**********6545sd4f54sd56f4s6d5'
DISCOURSE_S3_CDN_URL: 'https://cdn.discourse.com.br'
##DISCOURSE_CDN_URL: 'https://cdn.discourse.com.br'
#DISCOURSE_S3_BUCKET: 'cloudflarebucketname'
#DISCOURSE_S3_BACKUP_BUCKET: 'cloudflarebackupbucketname/backups'
#DISCOURSE_BACKUP_LOCATION: 's3'
DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
DISCOURSE_S3_INSTALL_CORS_RULE: false
使用此字符禁用的设置应通过管理员面板进行配置;代码中提供了示例。如果您愿意,也可以在配置部分启用这些设置,这取决于您。
此选项在 app.yml 中设置时会导致网站崩溃,因为出于某种原因,并非所有静态文件(如 JavaScript)都托管在 R2 上。
太棒了。我刚按照第 39 帖中的指南操作,一切都奏效了。我只有一项建议和两个问题。
建议:
根据我所读到的内容,您应该将 CDN 文件存储桶设为公开可用,并将备份存储桶设为私有。因此,我创建了两个存储桶,并将备份存储桶设为私有,同时将文件存储桶设为带有自定义域的公开存储桶。这仅仅意味着我必须在管理员下的两个框中输入两个不同的路径。
我看到很多人将他们的备份作为顶级存储桶路径的一部分,是我对这个问题的看法不正确吗?或者这只是 CF R2 的一个怪癖?
问题 1:
我在 app.yml 中添加了“DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true”并重新构建,但当我转到备份并单击备份按钮时,仍然会弹出提示,告知上传内容不包含在内。这仅仅是因为弹出窗口没有任何逻辑,还是有什么不对?
问题 2:
如果我想将当前上传内容迁移到 R2,有哪些简洁的命令?
我查找并尝试了:
./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake_uncooked_posts
但看起来第一个 rake 命令只有在我设置 app.yml 文件中的 S3 选项时才有效。是这样吗?
如果我这样做,R2 会继续工作吗?
好的,测试了一下,发现有问题。
看起来第一个 rake 命令只适用于 AWS。
rake aborted!
Seahorse::Client::NetworkingError: Failed to open TCP connection to exotics-unlimited.s3.auto.amazonaws.com:443 (getaddrinfo: Name or service not known) (Seahorse::Client::NetworkingError)
有没有其他命令可以用于其他 S3 供应商,但功能相同?
您是否进行了任何后续跟进,以查看我们是否可以将 R2 作为完全可行的解决方案?
R2 可以正常工作;只需不使用或设置此选项:DISCOURSE_CDN_URL
R2 运行正常;只需不使用或不设置此选项:
DISCOURSE_CDN_URL
对了,这意味着它并没有完全正常工作,因为一些静态文件没有被正确推送/托管。
我只是想让所有东西都能正常工作,而不是只让一部分东西正常工作。
我无法阻止 DC 认为它是 AWS,尽管它是 CF R2,但备份就是无法上传。我只想用它来备份 zip 文件,而不是 AWS。我相信我已经正确填写了所有设置,并且我的访问令牌具有“对象读取和写入”权限,并且作用域限定于此特定存储桶。我还添加了来自线程的 CORS 策略。
[2025-09-06 13:56:44] 正在压缩存档,这可能需要一段时间……
[2025-09-06 13:56:49] 正在上传存档……
[2025-09-06 13:56:49] EXCEPTION: Aws::S3::Errors::Forbidden
[2025-09-06 13:56:49] /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/object.rb:559:in `rescue in exists?'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/object.rb:554:in `exists?'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:46:in `upload_file'
/var/www/discourse/lib/backup_restore/backuper.rb:351:in `upload_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:41:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup'
/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2025-09-06 13:56:49] 正在删除旧备份……
[2025-09-06 13:56:49] 正在清理……
[2025-09-06 13:56:49] 正在从本地存储中删除存档……
[2025-09-06 13:56:49] 正在删除 '.tar' 剩余文件……
[2025-09-06 13:56:49] 正在将备份标记为完成……
[2025-09-06 13:56:49] 正在通知 'Firsh' 备份结束……
[2025-09-06 13:56:54] 完成!
对我来说,这似乎也运行得很好!(请记住设置 CDN URL,否则上传可以正常工作,但获取不行)

