저희도 같은 문제가 있습니다. 저희 소프트웨어에서 실행되는 js 파일들이 있는데, 브라우저에서 어떤 동작을 할 수 있는 파일들은 아닙니다.
모든 업로드 파일을 S3 버킷으로 이동하고 s3_use_cdn_url_for_all_uploads를 true로 설정함으로써 Discourse 다운로드 문제를 해결했습니다. 이는 js 파일의 치명적인 장애 요인으로 보이는 short-url 컨트롤러를 우회하는 효과가 있습니다.
상세 내용(AI가 안내해 준 내용을 바탕으로 정리):n
- S3 호환 스토리지 설정 (예: Cloudflare R2)
Discourse는 로컬 디스크에서 .js 파일을 안전하게 서빙할 수 없습니다. 파일을 버킷으로 이동해야 합니다.
-
버킷: 비공개 버킷(예:
my-discourse-bucket)을 생성합니다. -
API 키: 액세스 키(Access Key)와 시크릿 키(Secret Key)를 생성합니다.
2. 커스텀 CDN 도메인 구성
Cloudflare(또는 해당 프로바이더)에서 버킷에 커스텀 도메인(예: cdn.example.com)을 연결합니다. 이를 통해 파일이 직접적인 URL을 통해 정적 자산으로 서빙되어 Discourse의 '보안 가드’를 우회하게 됩니다.
3. Discourse 설정 업데이트
관리자 → 설정에서 S3 세부 정보를 구성합니다. 중요하게는, 임시 헤더로 인해 깨질 수 있는 URL에 '서명’을 시도하지 않도록 하기 위해 다음 항목을 활성화해야 합니다:
-
s3_use_cdn_url_for_all_uploads: 이 상자를 선택하세요 (가장 중요한 단계입니다). -
s3_cdn_url:https://cdn.example.com으로 설정합니다. -
s3_region: R2 호환성을 위해us-east-1을 사용합니다.
4. 기존 업로드 마이그레이션 (선택 사항)
참고: 저희는 알 수 없는 이유로 이 단계가 작동하지 않았습니다.
기존 게시물에 있는 오래된 링크를 수정하려면 컨테이너에 진입하여 다음을 실행하세요:
Bash
# /var/discourse 내부에서
./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake
이 정보가 누군가에게 도움이 되길 바랍니다.