Cloudflare R2: 설정 안내 및 구성 오류 처리

백업을 다운로드할 수 있고, 지금까지 이 부분에 대해 문제가 없었습니다.

S3 업로드가 포함된 상태인가요?

매우 유용한 정보 감사합니다. 다만, 클립보드에서 이미지를 복사하여 업로드할 때 작동하지 않는 문제가 있습니다. 이 문제를 경험해 보셨나요? 결국 R2에는 업로드가 되었지만, 게시물에서는 이미지가 표시되지 않았습니다:

이미지 URL을 확인해 보셨나요? 어떻게 생겼나요?

그래서 여전히 앱에서 r2를 구성할 수 없나요? 웹사이트 설정, 즉 DB_S3_CONFIG를 통해서만 가능한 건가요?

이 메서드를 사용하면 rake uploads : migrate to s3를 통해 기존 로컬 업로드 파일을 R2로 업로드할 수 있나요?

안녕하세요, 이 덕분에 정말 감사합니다.

제가 이해한 대로 **“DISCOURSE_CDN_URL”**은 Cloudflare에서 버킷에 연결된 사용자 지정 공개 도메인인 **“DISCOURSE_S3_CDN_URL”**과 동일하게 설정할 수 있는 건가요? 아니면 이를 위해 다른 설정이 필요한가요?

예, discourse 컨테이너의 container.yml 파일에도 동일한 도메인 이름을 추가해야 합니다. 사용 예시는 다음과 같습니다:

  ## 이 Discourse 인스턴스의 HTTP 또는 HTTPS CDN 주소 (pull하도록 구성됨)
  ## 자세한 내용은 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

네, 즉 일부 정적 파일이 올바르게 푸시/호스팅되지 않기 때문에 완전히 작동하지 않는다는 뜻입니다.
일부만 작동하는 것이 아니라 모든 것이 정상적으로 작동하도록 만들고 싶습니다.

Cloudflare R2를 사용 중인데, Discourse가 AWS인 것처럼 인식하는 것을 막을 수가 없습니다. 백업이 업로드되지 않습니다. AWS 대신 백업 zip 파일용으로만 사용하려고 합니다. 모든 설정과 특정 버킷에 “object read & write” 권한이 부여된 액세스 토큰을 올바르게 입력했다고 생각합니다. 해당 스레드에서 언급된 CORS 정책도 추가했습니다.

[2025-09-06 13:56:44] Gzipping archive, this may take a while...
[2025-09-06 13:56:49] Uploading archive...
[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] Deleting old backups...
[2025-09-06 13:56:49] Cleaning stuff up...
[2025-09-06 13:56:49] Removing archive from local storage...
[2025-09-06 13:56:49] Removing '.tar' leftovers...
[2025-09-06 13:56:49] Marking backup as finished...
[2025-09-06 13:56:49] Notifying 'Firsh' of the end of the backup...
[2025-09-06 13:56:54] Finished!

나도 이거 잘 작동하는 것 같네요! (CDN URL을 설정해야 합니다. 그렇지 않으면 업로드는 되지만, GET 요청은 실패합니다.)