Bookshelf: 객체 스토리지 기반의 셀프 호스팅 eBook 라이브러리 구축하기

📌 3줄 핵심 요약 (TL;DR)

  • Bookshelf는 EPUB 및 PDF 형식의 eBook을 브라우저에서 직접 읽을 수 있는 셀프 호스팅 라이브러리입니다.
  • Docker를 사용하여 간편하게 설치할 수 있으며, Cloudflare Worker 또는 로컬 디렉토리에서 실행할 수 있습니다.
  • Node.js 24 이상과 Unix 계열 시스템에서 지원되며, Windows는 지원하지 않습니다.

Bookshelf 소개

Bookshelf는 사용자가 소유한 eBook을 셀프 호스팅할 수 있는 라이브러리입니다. 서버에서 렌더링된 페이지는 eBook을 목록으로 보여주고, 검색 상자를 통해 필터링하며, 다운로드를 제공하고, 브라우저에서 직접 읽을 수 있도록 지원합니다. EPUB 및 PDF 형식의 eBook을 각각의 리더로 읽을 수 있으며, Cloudflare Worker를 통해 R2에서 실행하거나 Node 서버를 통해 로컬 디렉토리에서 실행할 수 있습니다.

시작하기

Bookshelf를 사용하려면 Node 24 이상과 Unix 계열 시스템이 필요합니다. Windows는 지원되지 않습니다. cwebppdftoppm를 설치하면 커버 이미지가 더 잘 보입니다. Docker를 사용하면 이러한 도구가 포함되어 있어 호스트에 별도로 설치할 필요가 없습니다.

git clone https://github.com/murerkinn/bookshelf.git
cd bookshelf
npm install

EPUB 또는 PDF 형식의 책을 books/ 디렉토리에 넣고 라이브러리를 어디에 둘지 선택하세요.

Docker 사용하기

Docker 이미지를 사용하면 cwebppdftoppm가 포함되어 있어 호스트에 별도로 설치할 필요가 없습니다.

mkdir books && cp ~/Downloads/*.epub books/
docker compose run --rm sync --create
docker compose up -d

이후 http://localhost:3000에서 라이브러리를 확인할 수 있습니다. docker compose run --rm sync --force--dry-run 명령어는 로컬에서와 동일하게 작동합니다.

Docker 없이 로컬 머신에서 실행하기

어디에도 계정이 필요하지 않습니다. bookshelf.config.json 파일을 디렉토리에 지정하고, 해당 디렉토리에 게시한 후 앱을 실행하세요.

// bookshelf.config.json
{ "storage": { "provider": "fs", "directory": "shelf-data" } }
npm run sync -- --create   # builds library/, then publishes it to shelf-data/
npm run build
npm start -w @bookshelf/app

Cloudflare에서 실행하기

Cloudflare 계정과 npx wrangler login이 필요합니다. 프로젝트의 버킷과 Worker 이름을 포함한 두 개의 파일이 체크인되어 있으며, 이를 수정해야 합니다. R2 제공자를 참조하세요.

npm run sync -- --create   # creates the bucket, then uploads to it
npm run deploy

데모 라이브러리

스크린샷을 찍을 만한 책이 없거나, 간단한 데모를 원하신다면, 9개의 공공 도메인 타이틀이 제공됩니다. 8개의 EPUB과 1개의 PDF로 구성되어 있으며, 다운로드 없이 바로 사용할 수 있습니다.

npm run demo                 # writes them into books/

ℹ️ 본 포스팅은 Hacker News의 공식 릴리즈/아티클을 기반으로 한국 개발자를 위해 번역·가공된 콘텐츠입니다.
🔗 원문 출처: Bookshelf – Self-hosted eBook library that runs on object storage


댓글

댓글 남기기