Я могу скачивать резервные копии, у меня никогда не возникало с этим проблем.
Включая загрузки S3?
Вы посмотрели на URL изображения? Как он выглядит?
Так что мы всё ещё не можем настроить r2 через app.yml? Только через настройки сайта, то есть DB_S3_CONFIG?
Используя этот метод, можно ли загрузить старые локальные файлы в R2 через rake uploads : migrate_to_s3?
Да, вы должны добавить то же имя домена в файл discourse container.yml. Вот пример использования:
## HTTP или HTTPS CDN-адрес для этого экземпляра Discourse (настроен на извлечение)
## Подробнее см. 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:
Я добавил ‘DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true’ в свой app.yml и пересобрал приложение, но при переходе к резервным копиям и нажатии кнопки создания резервной копии всё равно появляется всплывающее окно с сообщением, что загрузки не будут включены. Это просто потому, что у всплывающего окна нет никакой логики, или что-то настроено неправильно?
Вопрос 2:
Если я хочу переместить текущие загрузки в R2, какие краткие команды для этого нужны?
Я поискал и попробовал:
./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake_uncooked_posts
Но кажется, что первая команда rake работает только если я установлю параметры S3 в файле app.yml. Это верно?
Если я это сделаю, будет ли 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
Верно, что означает, что всё работает не до конца, так как некоторые статические файлы не передаются/не размещаются корректно.
Я просто хочу, чтобы всё работало, а не только часть.
Я не могу заставить Discourse думать, что это AWS, хотя на самом деле это Cloudflare R2, и резервные копии просто не загружаются. Я хочу использовать его только для резервных ZIP-архивов вместо AWS. Я считаю, что правильно заполнил все настройки, и мой токен доступа имеет scope «object read & write», привязанный к этому конкретному бакету. Также добавил политику CORS из темы.
[2025-09-06 13:56:44] Сжатие архива, это может занять некоторое время...
[2025-09-06 13:56:49] Загрузка архива...
[2025-09-06 13:56:49] ИСКЛЮЧЕНИЕ: 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] Готово!
У меня тоже всё работает отлично! (не забудьте указать URL CDN, иначе загрузки будут работать, а получение — нет)

