📌 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는 지원되지 않습니다. cwebp와 pdftoppm를 설치하면 커버 이미지가 더 잘 보입니다. Docker를 사용하면 이러한 도구가 포함되어 있어 호스트에 별도로 설치할 필요가 없습니다.
git clone https://github.com/murerkinn/bookshelf.git
cd bookshelf
npm install
EPUB 또는 PDF 형식의 책을 books/ 디렉토리에 넣고 라이브러리를 어디에 둘지 선택하세요.
Docker 사용하기
Docker 이미지를 사용하면 cwebp와 pdftoppm가 포함되어 있어 호스트에 별도로 설치할 필요가 없습니다.
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/
댓글 남기기