저장소
- 로컬 디스크
- 모든 S3: AWS, Cloudflare R2, Backblaze B2, MinIO, Yandex Object Storage 등
- Cloudflare R2와 Google Drive는 마법사로 연결 — 키를 직접 다룰 필요 없음
- R2 앞에 Cloudflare CDN 선택 사용
- Google Drive 폴더를 책으로 가져오기
서버 1.0 출시 · 앱 스토어 출시 예정
Berth는 내 VPS, NAS 또는 Docker에서 직접 운영하는 오픈 소스 오디오북 서버예요. 웹 관리자로 책을 업로드하고, 로컬 디스크나 S3 호환 저장소, Google Drive에 보관하고, Android·iOS용 Berth 앱으로 들으세요. 진행 상황은 절대 잃지 않아요.
저장소에 Star나 Watch를 눌러 두면 앱이 스토어에 나올 때 알 수 있어요.
문제
대부분의 셀프 호스팅 서버는 폴더를 스캔해 라이브러리를 다시 만들어요. 엉뚱한 파일 하나 때문에 시리즈가 합쳐질 수 있고, 파일을 NAS로 옮기면 청취 진행 상황이 지워질 수 있어요.
잠금 화면이나 Bluetooth로 일시정지하거나, 동기화가 끝나기 전에 앱을 열면 재생 위치가 초기화될 수 있어요. 오디오북 앱에 대한 가장 흔한 불만이에요.
다운로드가 멈추거나, 재생할 수 있는 책이 되지 않거나, 트랙이 엉뚱한 순서로 재생돼요.
Berth는 이런 문제가 생길 틈이 없도록 설계됐어요. 데이터베이스가 기준이 되고, 휴대폰은 자체적으로 재생 위치를 기억해요.
작동 방식
Berth는 세 부분으로 이뤄져요. 서버는 라이브러리를 데이터베이스에 보관하고, 오디오는 내가 고른 저장소에 있으며, 앱은 오디오를 재생하고 멈춘 위치를 기억해요.
웹 관리자가 내장된 서버 하나예요. VPS, NAS 또는 Docker에 설치하고 짧은 웹 마법사로 설정을 마치세요.
파일이나 폴더 전체를 웹 관리자로 끌어다 놓으세요. 챕터가 있는 m4b나 mp3 폴더 모두 돼요. 저장하기 전에 메타데이터를 편집할 수 있어요. 폴더 구조는 상관없어요.
관리자에서 청취자를 만들고 QR 코드를 보여 주세요. 휴대폰이 코드를 스캔하거나 입력하면 라이브러리가 나타나요. 청취자에게는 비밀번호가 없어요.
Berth 서버
웹 관리자 · 데이터베이스
Berth 앱
Android · iOS
내 저장소
로컬 · S3 · R2 · Google Drive
CDN
선택 사항
S3 호환 저장소를 쓰면 오디오가 짧은 시간만 유효한 서명 링크를 통해 저장소나 CDN에서 바로 스트리밍되므로, 서버가 병목이 되지 않아요. 로컬 디스크와 Google Drive는 서버를 통해 스트리밍돼요.
기능
비교
네 가지 모두 내 서버에서 오디오북을 제공할 수 있어요. 차이는 라이브러리를 만드는 방식, 파일을 둘 수 있는 곳, 휴대폰을 연결하는 방식에 있어요.
| 항목 | Berth | Audiobookshelf | Plex | Jellyfin |
|---|---|---|---|---|
| 초점 | 오디오북 | 오디오북과 팟캐스트 | 범용 미디어 서버 | 범용 미디어 서버 |
| 라이브러리 출처 | 데이터베이스, 웹 관리자로 책 업로드 | 미디어 폴더 스캔 | 미디어 폴더 스캔 | 미디어 폴더 스캔 |
| 파일 위치 | 로컬 디스크, 모든 S3, Google Drive | 로컬 또는 마운트된 파일 시스템 | 로컬 또는 마운트된 파일 시스템 | 로컬 또는 마운트된 파일 시스템 |
| 오디오 전송 | 서명 링크로 저장소나 CDN에서, 또는 서버를 통해 | 서버를 통해 | 서버를 통해 | 서버를 통해 |
| 청취자 로그인 | QR 코드, 비밀번호 없음 | 사용자 이름과 비밀번호 | Plex 계정 | 사용자 이름과 비밀번호 또는 Quick Connect |
| 모바일 앱 | 자체 Android·iOS 앱(아직 스토어 미출시) | 공식 Android 앱, iOS 앱은 TestFlight 베타 | Plex 앱과 서드파티 오디오북 플레이어 | 서드파티 오디오북 플레이어 |
| 서버 라이선스 | Apache-2.0 | GPL-3.0 | 독점 | GPL-2.0 |
| 성숙도 | 서버 1.0(2026년 10월), 앱 개발 중 | 성숙함, 대규모 커뮤니티 | 성숙함, 상용 | 성숙함, 대규모 커뮤니티 |
2026년 10월 기준 공개 문서와 이슈 트래커를 바탕으로 했어요. Audiobookshelf, Plex, Jellyfin은 성숙하고 널리 쓰이는 프로젝트예요. Berth는 2026년 10월에 첫 서버 릴리스를 냈고, 앱은 아직 스토어에 없어요.
FAQ
Berth는 전용 모바일 앱이 있는 셀프 호스팅 오디오북 서버예요. 내 하드웨어에서 서버를 실행하고, 웹 관리자로 책을 업로드하고, 파일을 저장할 곳을 고르면 가족이 Android나 iOS에서 들을 수 있어요.
서버는 가능해요. 버전 1.0은 Linux 서버, NAS, Raspberry Pi(amd64, arm64)의 Docker에서 실행돼요. 모바일 앱은 아직 스토어에 없어요. GitHub 저장소에 Star나 Watch를 눌러 두면 출시 소식을 받을 수 있어요.
Berth 서버는 Apache-2.0 라이선스의 오픈 소스이며 GitHub에 공개 저장소가 있어요. API는 OpenAPI로 기술돼 있어 서드파티 클라이언트를 만들 수 있어요. 공식 모바일 앱은 별도의 비공개 소스 프로젝트예요.
Berth는 폴더 스캔으로 라이브러리를 다시 만들지 않고 데이터베이스에 보관하므로, 파일 구조나 엉뚱한 파일, 저장소 이동 때문에 책이나 진행 상황이 망가지지 않아요. 또한 로컬 디스크뿐 아니라 S3 호환 저장소나 Google Drive에도 오디오를 보관할 수 있어요. Audiobookshelf는 성숙하고 팟캐스트를 지원하며 커뮤니티가 커요. Berth는 새 프로젝트이고 오디오북에 집중해요.
로컬 디스크, 모든 S3 호환 저장소(AWS S3, Cloudflare R2, Backblaze B2, MinIO, Yandex Object Storage, Wasabi, Hetzner 등), Google Drive를 지원해요. Cloudflare R2와 Google Drive는 안내 마법사로 연결해요.
네. Berth는 최소 권한인 drive.file로 Google Drive에 연결하므로 자신이 만든 파일만 볼 수 있어요. Drive의 오디오는 내 Berth 서버를 통해 스트리밍되고 다운로드돼요.
네. 앱은 몇 초마다 모든 책의 위치를 휴대폰에 저장하고 서버와 동기화해요. 서버의 위치는 더 최신일 때만 로컬 위치를 대체해요. 다운로드한 책은 오프라인에서 재생돼요.
네, 둘 다 첫 버전에 포함돼요. 차에서 이어 듣기, 라이브러리, 다운로드를 둘러보고 재생을 제어할 수 있어요.
관리자가 웹 패널에서 QR 코드를 보여 주면, 휴대폰이 코드를 스캔하거나 짧은 코드(예: BRTH-7K2Q)를 입력해 연결돼요. 청취자에게는 비밀번호가 필요 없고, 관리자는 언제든 기기의 연결을 해제할 수 있어요.
첫 버전은 챕터가 내장된 m4b 오디오북과 mp3 파일 폴더를 처리해요. 챕터와 트랙 순서는 파일 이름에서 추측하지 않고 데이터베이스에 저장돼요.
첫 버전에서는 안 돼요. 책은 웹 관리자로 업로드하거나 Google Drive 폴더를 가져와 추가해요. Audiobookshelf 가져오기 기능은 첫 릴리스 이후에 검토할 예정이에요.
현황
서버 1.0이 출시됐고, 앱은 마무리 중이에요. 아직 스토어 출시일은 정해지지 않았어요. 소식은 저장소를 팔로우해 확인하세요.
설치
Berth는 Linux 서버, NAS, Raspberry Pi의 Docker에서 실행돼요. 아래 명령은 8080 포트로 서버를 시작해요. 업데이트, 백업, HTTPS는 GitHub의 README에서 다뤄요.
$ mkdir berth && cd berth
$ curl -fsSLO https://raw.githubusercontent.com/joveptesg/berth/main/docker-compose.yml
$ docker compose up -d
$ docker compose logs berth
# 그다음 서버 주소를 열고 로그에 있는 설정 코드를 입력하세요