가이드

MinIO와 자체 호스팅 S3용 파일 관리자: Nubbo에 연결하기

MinIO, Ceph, SeaweedFS 같은 자체 S3 호환 스토리지를 Nubbo에 연결하는 방법: 엔드포인트, 키, 리전, CORS, 실패했을 때 해결하는 방법을 알아보세요.

Nubbo는 MinIO, Ceph, SeaweedFS처럼 Signature V4로 서명하는 모든 S3 호환 스토리지에 연결해요. 직접 운영하는 서버든 다른 프로바이더든 상관없어요. 필요한 것은 엔드포인트 URL, 키, 리전뿐이에요. 이 가이드는 Nubbo 마법사를 단계별로 따라가며 두 가지 방법을 모두 다뤄요: 자동 연결 또는 버킷 하나로 제한된 키를 사용한 연결.

제공되는 기능

  • 버킷을 드라이브처럼 탐색하세요: 폴더, 보기 방식, 검색, 휴지통, 라벨, 즐겨찾기.
  • 브라우저와 서버 사이에서 파일을 직접 업로드하고 다운로드하세요. 파일은 Nubbo 서버를 거치지 않아요.
  • 비밀번호, 만료일, 다운로드 횟수 제한을 걸어 파일과 폴더를 공유하고, 버킷으로 파일을 받고, 갤러리를 만들 수 있어요.
  • 키는 AES-256-GCM으로 암호화되어 저장되며, 언제든지 버킷 연결을 해제할 수 있어요.

시작하기 전에

S3 호환 스토리지와 Nubbo 계정이 필요해요. 연결하는 버킷은 각각 요금제 한도에 포함돼요: 무료 요금제는 2개, Personal은 5개까지 연결할 수 있고 Pro는 제한이 없어요. 엔드포인트는 Nubbo 서버와 브라우저 모두 접근할 수 있는 공개 URL이어야 하며, 브라우저가 https://nubbo.app에서 HTTP 콘텐츠를 불러오지 않으므로 HTTPS가 필요해요. Nubbo는 사설 주소나 로컬 주소를 가리키는 엔드포인트를 거부해요. 서버에 리전이 없다면 us-east-1을 그대로 두세요.

연결 방법 선택하기

Nubbo 마법사에는 두 가지 방법이 있어요. 어느 쪽이든 결과는 같아요: 버킷이 연결되고 브라우저에서 업로드할 준비가 돼요.

자동제한된 키 사용
키계정 전체에 액세스버킷 하나로 제한
버킷Nubbo가 기존 버킷을 사용하거나 새로 만들어요먼저 직접 만들어요
CORSNubbo가 규칙을 추가해 줘요규칙을 직접 추가해요
선택할 때가장 빠른 방법계정 전체 액세스를 주고 싶지 않을 때

자동 연결

1단계: 서버에서 키 만들기

  1. 서버가 공개 HTTPS URL(예: https://s3.your-domain.com)에서 V4 서명을 사용하는 S3 API를 제공하는지 확인하세요.
  2. 버킷을 만들고 CORS를 변경할 수 있는 키를 만드세요.
  3. 엔드포인트 URL과 리전을 메모하세요. 서버에 리전이 없다면 us-east-1을 사용하세요.

2단계: Nubbo에서 버킷 연결하기

  1. Nubbo에서 버킷을 열고 버킷 연결을 누르세요. 커스텀 S3 / 자체 호스팅을 선택하고 계속을 누르세요.

    커스텀 S3 / 자체 호스팅이 선택된 Nubbo 마법사의 프로바이더 단계 커스텀 S3 / 자체 호스팅이 선택된 Nubbo 마법사의 프로바이더 단계
  2. 자동을 선택하고 계속을 누르세요.

    자동과 제한된 키 사용 옵션이 있는 연결 방법 단계 자동과 제한된 키 사용 옵션이 있는 연결 방법 단계
  3. 키 단계에서 액세스 키, 시크릿 키, 엔드포인트 URL, 리전을 붙여넣으세요. 키 확인을 누르세요. Nubbo가 키가 작동하는지, 계정 전체에 액세스할 수 있는지 확인해요.

    빠른 설정 가이드와 키 입력란이 있는 커스텀 S3 / 자체 호스팅의 키 단계 빠른 설정 가이드와 키 입력란이 있는 커스텀 S3 / 자체 호스팅의 키 단계
  4. 버킷 중 하나를 고르고 이 버킷 사용을 누르거나, 새로 만들기를 선택해 이름을 입력하고(요청하면 리전도 선택하고) 만들고 준비하기를 누르세요. Nubbo가 앱에서의 업로드와 다운로드만 허용하는 CORS 규칙을 버킷에 추가하며, 기존 규칙은 그대로 유지해요.

    버킷 목록과 새로 만들기 옵션이 있는 버킷 단계 버킷 목록과 새로 만들기 옵션이 있는 버킷 단계
  5. 세 가지 확인 항목을 검토하고, 원하면 Nubbo에서 표시할 이름을 바꾼 뒤 완료를 누르세요. 버킷이 버킷 페이지에 표시되고 탐색기에서 열 수 있어요.

    연결, 버킷, CORS 확인 항목이 있는 완료 단계 연결, 버킷, CORS 확인 항목이 있는 완료 단계

Nubbo가 사용 중인 키로 CORS 규칙을 추가할 수 없으면 마법사가 CORS 단계로 안내해요. 그다음 CORS 규칙 추가하기를 따라 하세요.

제한된 키로 연결하기

1단계: 서버에서 버킷과 키 준비하기

  1. 서버에서 버킷을 만드세요(예: MinIO에서는 mc mb로 만들어요).
  2. 그 버킷에 대한 읽기 및 쓰기 권한이 있는 키를 만드세요.
  3. 엔드포인트 URL과 리전을 메모하세요.

2단계: Nubbo에서 버킷 연결하기

  1. 버킷 페이지에서 버킷 연결을 누르고 커스텀 S3 / 자체 호스팅을 선택한 뒤 제한된 키 사용을 선택하세요.
  2. 액세스 키, 시크릿 키, 엔드포인트, 리전을 붙여넣으세요. 키 확인을 누르세요.
  3. 정확한 버킷 이름을 입력하고 액세스 확인을 누르세요.
  4. 마법사가 추가해야 할 규칙과 함께 CORS 단계로 넘어가요.

CORS 규칙 추가하기

CORS 규칙은 브라우저가 https://nubbo.app에서 버킷으로 파일을 업로드하고 다운로드할 수 있게 해 줘요. 마법사의 CORS 단계에 표시되는 규칙과 같아요.

CORS 설정 방법은 소프트웨어에 따라 달라요:

  • MinIO (community edition) 는 버킷별 CORS를 지원하지 않아요: 기본적으로 모든 오리진을 허용하는 전역 설정(MINIO_API_CORS_ALLOW_ORIGIN)을 사용해요. 이 설정을 바꾸지 않았다면 할 일이 없어요: 추가했어요, 확인을 누르면 확인을 통과해요. 바꿨다면 https://nubbo.app을 포함하세요.
  • Ceph와 SeaweedFS는 S3 API로 버킷별 CORS를 지원해요. 평소 사용하는 도구(예: 엔드포인트를 지정한 aws s3api put-bucket-cors)로 이 규칙을 적용하거나, 자동 방식에서 Nubbo가 적용하게 하세요.
[
  {
    "AllowedHeaders": ["*"],
    "AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
    "AllowedOrigins": ["https://nubbo.app"],
    "ExposeHeaders": ["ETag"],
    "MaxAgeSeconds": 3600
  }
]
버킷에 추가할 규칙이 표시된 CORS 단계 버킷에 추가할 규칙이 표시된 CORS 단계

규칙이 준비되면 Nubbo로 돌아가 추가했어요, 확인을 누르세요. Ceph와 SeaweedFS에서는 키에 CORS 변경 권한이 있다면 자동 설정 시도로 Nubbo가 대신 설정해 줘요.

문제가 생겼을 때

Nubbo 메시지해결 방법
“인증 정보가 유효하지 않아요. 액세스 키와 시크릿 액세스 키를 확인해 주세요.”두 키를 앞뒤 공백 없이 다시 복사하세요.
“이 키는 버킷 하나로 제한된 것 같아요. 제한된 방식으로 계속하거나 전체 액세스 권한이 있는 키를 만들 수 있어요.”제한된 키로 계속을 누르거나, 계정 전체에 액세스할 수 있는 키를 만든 뒤 다른 키 사용해 보기를 누르세요.
“bucket을 찾을 수 없어요. 이름과 리전을 확인해 주세요.”정확한 버킷 이름과 선택한 리전이 버킷의 리전인지 확인하세요.
“키에 버킷 생성 권한이 없어요.”전체 액세스 권한이 있는 키를 사용하거나, 관리 화면에서 버킷을 만든 뒤 관리 화면에서 만들었어요를 누르세요.
“이 이름은 이 프로바이더에서 이미 사용 중이에요. 다른 이름을 시도하세요.”버킷 이름은 프로바이더 전체에서 고유해야 해요: 다른 이름을 고르세요.
“키에 설정 권한이 없어요.”위에서 설명한 대로 CORS 규칙을 직접 추가하세요.
“아직 작동하지 않아요. 규칙을 검토하고 다시 확인하세요. 일부 프로바이더는 적용하는 데 1분 정도 걸려요.”오리진이 끝에 슬래시 없이 정확히 https://nubbo.app인지 확인하고, 1분 정도 기다린 뒤 다시 확인하세요.
“이 bucket은 이미 사용 중이에요.”이 버킷은 내 계정이나 다른 계정에서 이미 Nubbo에 연결되어 있어요.
“S3 엔드포인트에 연결할 수 없어요. 엔드포인트 URL을 확인해 주세요.”URL이 공개되어 있고, HTTPS를 사용하며, 내 네트워크뿐 아니라 인터넷에서도 응답하는지 확인하세요.
“엔드포인트 URL이 유효하지 않아요. 형식을 확인해 주세요.”https://를 포함하고 버킷 이름은 빼고 전체 URL을 입력하세요. URL이 사설 주소나 로컬 주소를 가리키거나 이름을 확인할 수 없을 때도 표시돼요.
“연결 시간이 초과됐어요. 다시 시도해 주세요.”서버 방화벽을 점검하고 외부에서 포트에 접근할 수 있는지 확인하세요.

비용

자체 스토리지와 프로바이더를 비교하고 있다면 S3 vs R2 vs Spaces vs Wasabi vs Backblaze B2에서 요금과 제한을 비교해 보세요.

자주 묻는 질문

어떤 자체 호스팅 스토리지가 Nubbo와 함께 작동하나요?

MinIO, Ceph, SeaweedFS처럼 V4 서명을 사용하는 S3 API와 호환되는 모든 스토리지예요. 목록에 없는 S3 호환 프로바이더도 사용할 수 있어요.

로컬 네트워크에 있는 MinIO를 연결할 수 있나요?

아니요. 엔드포인트는 공개 URL이어야 해요: Nubbo는 사설 주소와 로컬 주소를 거부하며, 브라우저도 엔드포인트에 접근할 수 있어야 해요.

서버에 리전이 없으면 어떤 리전을 사용하나요?

us-east-1을 사용하세요. 대부분의 S3 호환 서버에서 기본 리전이에요.

Nubbo가 MinIO에서 CORS를 설정할 수 없는 이유는 무엇인가요?

MinIO 커뮤니티 에디션은 버킷별 CORS를 지원하지 않기 때문이에요. 기본적으로 모든 오리진을 허용하는 전역 설정을 사용하며, Nubbo가 이를 확인해요.

출처

요금과 제한은 아래 공식 페이지를 기준으로 해요. 프로바이더가 변경할 수 있으니 결정하기 전에 확인하세요.