오디오북을 S3 호환 저장소에 보관하기
2026년 10월 27일 업데이트
Berth는 서버 디스크 대신 모든 S3 호환 버킷에 책을 저장할 수 있어요. 서버는 라이브러리를 관리하고 누가 들을 수 있는지 정해요. 오디오 자체는 버킷이나 CDN에서 휴대폰으로 바로 전달될 수 있어요.
왜 객체 저장소인가요
- 작은 VPS나 Raspberry Pi에 큰 디스크가 필요 없어요.
- 휴대폰이 저장소에서 바로 내려받으므로 서버 대역폭이 병목이 되지 않아요.
- 데이터베이스와 백업은 작게 유지돼요. S3를 쓰면 서버가 매일 데이터베이스 사본을 버킷에도 넣어 둘 수 있어요.
지원 제공업체
S3 호환 서비스라면 무엇이든 쓸 수 있어요. 관리자에는 엔드포인트와 리전을 채워 주는 프리셋이 있어요: AWS S3, Cloudflare R2, Yandex Cloud, Backblaze B2, Bunny Storage, MinIO. Cloudflare R2에는 버킷과 키를 대신 만들어 주는 마법사도 있어요.
버킷 연결하기
- 제공업체 콘솔에서 버킷과, 그 버킷에 읽기·쓰기 권한이 있는 액세스 키를 만드세요.
- 버킷에 CORS 규칙을 추가하세요: 오리진은 Berth 주소, 메서드는 GET, HEAD, PUT, 헤더는
*. 관리자는 브라우저에서 버킷으로 파일을 바로 업로드하므로 이 규칙이 꼭 필요해요. - Berth 관리자에서 저장소 설정을 열고 저장소를 추가한 뒤 “S3 버킷”을 선택하고, 프리셋을 고르거나 항목을 직접 입력하세요.
- 이름, 버킷, 엔드포인트(AWS는 비워 둠), 리전(비우면
us-east-1), 액세스 키 ID, 비밀 액세스 키를 입력하세요. MinIO에서는 경로 방식 주소를 켜세요. IP 주소나 localhost에서는 자동으로 켜져요. - “연결 확인”을 누르세요. Berth가 작은 테스트 파일을 쓰고, 다시 읽고, 삭제한 뒤 서버 주소에서 CORS를 확인해요.
- 이 저장소를 기본 저장소로 지정하세요. 새 책은 기본 저장소에 저장돼요.
키는 서버 키 secret.key로 암호화해 저장되며 다시 표시되지 않아요.
오디오가 휴대폰에 전달되는 방식
서명 없이 CDN 뒤에 있는 파일은 만료되지 않는 링크로 열려요. 파일 이름은 SHA-256 해시라서 추측할 수 없지만, 기기 연결을 해제해도 그 기기가 이미 가진 링크는 막히지 않아요. Bunny CDN 토큰 인증을 쓰면 링크가 6시간 뒤 만료돼요.
| 모드 | 작동 방식 | 언제 쓰나요 |
|---|---|---|
| 직접 링크(기본값) | 휴대폰이 15분 동안 유효한 버킷 서명 링크를 받아요 | 서버 부하를 덜어 줘요 |
| 서버를 통해 | 서버가 파일을 스트리밍해요. 링크는 6시간 유효하고, 기기 연결을 해제하면 즉시 작동을 멈춰요 | 휴대폰이 버킷에 접근할 수 없을 때 |
| CDN을 통해 | 링크가 CDN이나 버킷의 공개 주소를 가리켜요 | 버킷에 CDN이 있을 때 가장 빨라요 |
알아 두면 좋은 점
- 저장소를 여러 개 동시에 쓸 수 있어요. 각 책마다 어느 저장소에 있는지 표시돼요.
- 기존 책을 저장소 간에 옮기는 기능은 아직 없어요. 업로드하기 전에 기본 저장소를 정하세요.
- 책이 들어 있는 저장소는 삭제할 수 없어요. 프로필을 삭제해도 버킷의 파일은 절대 삭제되지 않아요.
자주 묻는 질문
Berth에 버킷 공개 접근이 필요한가요?
아니요. 기본 모드에서는 버킷이 비공개로 유지되고, 휴대폰은 15분 뒤 만료되는 서명된 링크를 받아요.
확인 결과 버킷이 브라우저에서의 업로드를 받지 않는다고 나와요. 어떻게 하나요?
CORS 규칙을 추가하세요: 오리진은 Berth 주소, 메서드는 GET, HEAD, PUT, 헤더는 *. 그런 다음 다시 확인하세요.