업로드를 위해 S3 호환 객체 저장소 제공자 구성하기

SeaweedFS를 사용해 보신 분 계신가요? MinIO에 대한 불확실성 때문에 이 옵션을 살펴보고 있으며, Discourse와의 호환성 문제가 있는지 확인해 보기 위해 직접 테스트해 볼 예정입니다.

아래 규칙 세트를 사용하여 R2를 정상적으로 작동하게 만들었습니다:

  ## This set of lines allows R2 S3 hosted files to be uploaded and downloaded..
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: auto
  DISCOURSE_S3_ACCESS_KEY_ID: access-key-id
  DISCOURSE_S3_SECRET_ACCESS_KEY: access-key
  DISCOURSE_S3_CDN_URL: https://eufiles.technospider.com
  DISCOURSE_S3_BUCKET: exotics-unlimited
  DISCOURSE_S3_BACKUP_BUCKET: exotics-unlimited-backups
  DISCOURSE_BACKUP_LOCATION: s3
#  DISCOURSE_CDN_URL: https://eufiles.technospider.com
  DISCOURSE_S3_ENDPOINT: https://71*****5d4976.r2.cloudflarestorage.com
#  DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
  DISCOURSE_S3_INSTALL_CORS_RULE: false

CDN_URL 줄을 주석 처리한 후 문제가 해결되었습니다. R2가 자동으로 CDN을 생성하기 때문에 해당 줄이 필요 없으며, 오히려 추가하면 오류가 발생하는 것 같습니다.
백업 크기를 줄이기 위해 이미지 포함 줄도 주석 처리했습니다. R2의 무료 플랜을 사용 중이므로 한도를 초과하고 싶지 않습니다.

맞습니다. S3에서 벗어나는 경우가 아니라면 DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS를 사용해서는 안 됩니다. S3에 저장된 백업에 포함시키기 위해 S3에서 모든 이미지를 다운로드하는 것은 의미가 없습니다. 한 번은 AWS 버킷에서 이 설정을 켜두었다가 매일 모든 이미지를 다운로드해서 큰 청구서가 나왔습니다.

이것은 S3 버킷이 아니라 Discourse 서버를 가리키는 별도의 CDN이어야 합니다. 아바타 등 일부 항목(그 외에는 정확히 무엇인지 확실하지 않음)은 서버에서 제공됩니다. 작동하지 않았던 이유는 사이트 CDN이 아닌 S3 CDN을 포함시켰기 때문입니다.

버킷용과 CDN용으로 서로 다른 두 회사를 사용하는 경우를 말씀하시는 건가요? 이 분야에 대해 잘 알지 못해서 초등학교 3학년에게 설명하듯 자세히 알려주시면 감사하겠습니다…
R2 인터페이스에서 "사용자 정의 도메인"을 생성하면 CDN 역할을 하므로, 처음에 그 줄을 추가해 보았습니다.

어쨌든, 제 테스트 사이트에서는 완벽하게 작동하고 있습니다. 만약 이 방식이 수행해야 하는 다른 기능이 없다면, Cloudflare가 이제 Discourse와 함께 작동한다는 점을 보여주기 위해 원래 게시글이 업데이트되기를 권고합니다.

아니요. 그렇게 할 수 없습니다. S3 키/비밀번호는 하나뿐입니다. s3 업로드를 포함하는 이유를 억지로 만들어보려 했지만, 그럴 만한 이유가 없습니다.

그것은 S3 버킷용이지, 당신의 사이트용이 아닙니다. DISCOURSE_S3_CDN_URL과 DISCOURSE_CDN_URL이라는 두 가지 서로 다른 변수가 있습니다. 당신은 이 둘이 동일한 것처럼 취급하고 있습니다. 사이트에는 CDN을 사용할 수 없으며, 해당 변수를 설정했을 때 작동하지 않은 이유는 잘못된 CDN을 지정했기 때문입니다.

음, 처음에는 내가 하는 일을 약간이나마 파악하고 있다고 생각했는데, 이제는 완전히 길을 잃은 것 같아요.

그래서 S3 CDN과 CDN의 차이는 무엇인가요?

그 두 가지 중 주석 처리한 것을 반대로 바꿔도 여전히 작동할까요?

환영 배너의 배경 이미지에서도 이상한 문제가 발생했는데, 이 문제도 위 내용과 관련이 있나요?

14개의 게시글이 새로운 주제로 분리되었습니다: AWS CDN 및 S3 관련 문제

여러분 안녕하세요. Hetzner의 객체 스토리지가 꽤 잘 작동한다는 것을 공유드립니다. 제 app.yaml에 추가한 설정은 다음과 같습니다.

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: whatever
DISCOURSE_S3_INSTALL_CORS_RULE: false
DISCOURSE_S3_ENDPOINT: https://nbg1.your-objectstorage.com
DISCOURSE_S3_ACCESS_KEY_ID: xxxx
DISCOURSE_S3_SECRET_ACCESS_KEY: xxxx
DISCOURSE_S3_CDN_URL: xxxx
DISCOURSE_S3_BUCKET: discourseuploads
DISCOURSE_S3_BACKUP_BUCKET: discoursebackups
DISCOURSE_BACKUP_LOCATION: s3

물론 다음 항목들은 본인의 설정으로 교체해야 합니다:

DISCOURSE_S3_ENDPOINT: (Hetzner 대시보드에서 객체 스토리지 버킷을 생성한 위치에 대한 URL을 사용)
DISCOURSE_S3_ACCESS_KEY_ID: (설명 생략)
DISCOURSE_S3_SECRET_ACCESS_KEY: (설명 생략)
DISCOURSE_S3_CDN_URL: (여기에는 Hetzner 버킷 URL에서 데이터를 가져오는 CDN URL을 사용)

향후 몇 주/몇 달간 테스트 서버에서 계속 지켜볼 예정이지만, 지금까지는 문제가 없습니다.

4개의 좋아요

이것이 더 이상 해당되지 않다는 점을 참고해 주세요. Cloudflare이 이를 수정했으며, 이제 R2 버킷은 S3와 호환됩니다. 저는 Cloudflare R2에 외부 백업을 보유하고 있으며, 다른 서버로 전체 복원을 성공적으로 수행했습니다. (월 10GB까지는 무료입니다)

Cloudflare R2 객체 저장소에서 버킷 이름(s3 backup bucket용), 접근 키 ID, 비밀 접근 키, 관할권별 엔드포인트만 가져와서 Discourse의 S3 설정 또는 app.yml/web_only.yml 등에 입력하면 됩니다.

1개의 좋아요

정말 좋은 소식입니다! OP를 그에 맞게 수정해야 할 것 같아요.

새로운(ish) 문서 업데이트가 어떻게 작동하는지 전혀 모르겠어요 -Apparently 여기 어딘가에 저장되는 것 같은데? discourse/docs at main · discourse/discourse · GitHub 하지만 셀프 호스팅 문서는 보지 못했어요. :woman_shrugging: 됐어요, 위키 편집 페이지에 제안된 편집 링크를 찾았어요. 업데이트를 제안할게요.

수정: Cloudflare R2 객체 저장소에 대한 업데이트가 제출되었습니다

게시물이 새 주제로 분리되었습니다: S3 호환 R2로 이동한 후 아바타 로딩에 시간이 오래 걸립니다

업데이트를 제안했습니다 - OP 콘텐츠의 각 섹션으로 이어지는 깨진 링크를 모두 수정하고, Cloudflare R2 구성 관련 노트를 업데이트했습니다.

3개의 좋아요

감사합니다 :folded_hands:

부스트를 사용할 수 있었다면 더 많은 문자를 치지 않아도 됐을 텐데

1개의 좋아요

@chapoi @Lilly

유럽에서는 EU-DSGVO(일반 데이터 보호 규칙)에 부합하는 S3 호환 스토리지를 hetzner.de에서도 사용할 수 있습니다. EU 내에서 그들은 독일과 핀란드에 ISO/IEC 27001:2022 인증을 받은 데이터 센터를 운영합니다. 이 정보를 위 주요 목록에 추가할 수 있을 것입니다.

hetzner.de 예시 구성

구성 항목 값
S3 엔드포인트 https://[datacenter].your-objectstorage.com
S3 엔드포인트 데이터센터 [datacenter] = hel1 (헬싱키), fsn1(팔켄슈타인), nbg1 (뉘른베르크)
S3 액세스 키 ID Hetzner S3 액세스 키
S3 시크릿 액세스 키 Hetzner S3 시크릿 키 (S3 스토리지 생성 시 한 번만 표시됨)
S3 업로드 버킷 Hetzner S3 버킷 이름
S3 업로드 활성화 true

"서버는 S3로 파일을 업로드하도록 구성되었지만 S3 CDN이 구성되지 않았습니다"라는 경고는 무시해야 합니다. hetzner.de는 아직 글로벌 CDN 기능을 제공하지 않기 때문입니다. 자세한 내용은 https://docs.hetzner.com/storage/general/which-storage-is-right-for-me 를 참조하십시오.

s3:upload_assets를 사용하면 이 프로세스가 DISCOURSE_S3_BUCKET를 찾으려 하기 때문에 실패하게 됩니다.