리디북스 같은 전자책 서비스, NAS로도 가능할까

그다지 책 읽는 편은 아니지만, 한때 관련 ‘업’에 몸담은 탓에 PDF가 넘쳐났다. 잊을 만하면, 글 쓰다 막힐 때면 어김없이 끄집어 읽는다. 그때마다 글 찾기가 고역이었다. 한 권의 잡지가 글 단위로 조각나 있을뿐더러, 그 수가 수천 개에 달했다. 검색의 유일한 단서인 목차도 년도, 월별로 흩어져 있어 찾기가 쉽지 않았다. 그러다가 문뜩 떠오른 생각. ‘영상, 오디오, 사진처럼 전자책도 스트리밍할 수 없을까?’ 플랫폼에 관계없이 어디서든 바로 볼 수 있는 리디북스(RIDIBOOKS)처럼.

 

독일의 한 IT 아키텍트 ‘레이너 볼츠(Rainer Volz)’도 나와 같은 생각을 했다. NAS의 스트리밍 기능에 빠진 단 하나, ‘전자책’이라는 그 ‘빈틈’을 채우고자 그는 BicBucStriim를 개발했다. 코드 저장소 깃허브에 공개돼 있는 오픈소스 ‘BicBucStriim’는 웹 기반의 콘텐츠 서버로, 전자책의 스트리밍을 지원한다. 전자책의 관리와 데이터베이스화는 오픈소스 칼리브레(Calibre)가, 그에 대한 서비스는 BicBucStriim가 각각 맡는 식. OPDS(Open Publication Distribution System)라는 전자책 도서관 규격을 지원하는 전자책 뷰어라면 기기가 무엇이든 BicBucStriim를 통해 책을 받고 읽을 수 있다. BicBucStriim가 웹 기반의 언어 ‘PHP’로 개발된 만큼 웹으로도 이용할 수 있다. 책의 표지부터 저자, 출판일, 태크, 시리즈, 요약 등의 정보 일체를 통합 관리, 서비스할 수 있다. 마치 리디북스처럼 그저 도서 목록에서 원하는 책을 고르기만 하면 그 즉시 볼 수 있는 것이다.

 

160821_ebook_cloudstation

 

리디북스 같은, 그러한 디지털 도서관을 서비스하려면 운영할 ‘서버’가 필요하다. NAS나 리눅스 기반의 PC라면 족한데, 여기서는 시놀로지 NAS로 구축한다. NAS가 아닌, PC의 특정 폴더에 칼리브레로 데이터베이스를 생성하고, 해당 폴더와 NAS의 특정 폴더를 동기화할 것이다. 그러면 BicBucStriim가 동기화된 NAS상의 폴더 안 데이터베이스를 읽어, 전자책 서비스를 하는 것이다. 다소 복잡하게 보일지 모르나 이렇게 처리하는 것은 칼리브레가 네트워크 스토리지를 지원하지 않기 때문이다. 칼리브레의 데이터베이스 저장 위치를 네트워크 폴더로 지정할 경우 해당 폴더에 액세스할 수 없다는 경고에 시달리거나, 데이터베이스가 손상되는 등의 문제에 직면하는 일이 잦다. 이를 피하기 위해 칼리브레의 데이터베이스는 PC에 저장하고, 해당 데이터를 NAS로 동기화하는 것이다.

 

● ‘리디’ 같은 서비스 구축의 첫 단계 ‘동기화’
디지털 도서관 구축의 첫 단계는 다름 아닌 ‘동기화’다. 이를 위해서는 먼저 시놀로지의 클라우드 스테이션 드라이브부터 설치해야 한다. 데이터베이스를 관리할 PC에 클라우드 스테이션 드라이브를, 시놀로지 NAS ‘DSM’ 웹관리자 페이지의 패키지센터를 이용, 클라우드 스테이션 서버를 각각 설치할 것이다.

 

160821_synology_ebook_csd

 

클라우드 스테이션 드라이브의 ‘작업 동기화’에서 생성을 통해 새 동기화 규칙을 추가한다. 먼저 시놀로지 NAS의 도메인 또는 IP와 함께 계정 정보를 입력해 동기화할 대상 NAS를 지정한다.

 

다음으로는 동기화할 로컬 폴더, 즉 칼리브레의 데이터베이스를 저장할 폴더를 지정한다. 맥OS에서는 파인더, 윈도우라면 탐색기를 이용해 Calibre란 이름의 폴더를 생성하고 지정하면 된다. 여기서는 Documents/Calibre 폴더를 지정했다.

 

시놀로지 DSM에서도 Calibre란 폴더를 생성하고, 클라우드 스테이션 드라이브의 동기화할 대상 폴더로 지정한다. 참고로 DSM의 클라우드 스테이션 서버의 기본 경로는 /homes/관리자 계정/CloudStation이다. 완료를 클릭하면 PC의 Documents/Calibre 폴더와 NAS의 /homes/관리자 계정/CloudStation/Calibre 폴더가 서로 동기화될 것이다. PC의 Calibre 폴더에 변화가 있을 때마다 실시간으로 NAS에 복제된다.

 

tipSSH 접속, 어떻게 하면 될까

SSH는 secure shell의 약자로, 원격으로 시스템에 접근, 특정 명령어를 실행할 수 있는 프로그램이다. 암호화가 기본으로 적용되는 점도 특징.

 

· 맥OS라면 | 응용 프로그램 -> 유틸리티 -> 터미널을 실행한다. 터미널에서 ssh root@NAS IP를 입력하면 된다. 예컨대 NAS IP가 192.168.0.5인 경우 ssh root@192.168.0.5다.

· 윈도우라면 | putty 프리웨어를 설치할 것을 권한다. putty는 다재다능한 터미널 클라이언트로, SSH뿐 아니라 telnet, 시리얼 통신까지 지원한다. putty 웹사이트에서 putty를 다운로드하고 실행한다. Host Name으로는 NAS IP 주소를, 포트로는 22를, Connection type으로는 SSH를 선택한 후 ‘open’ 버튼을 클릭한다.

 

 

● 칼리브레 설치와 데이터베이스 생성
지금까지 칼리브레의 데이터베이스를 담을 ‘그릇’을 만들었다면, 이제 그 빈속을 채울 차례다. 그러기 위해서는 먼저 칼리브레부터 설치해야 할 것이다. 칼리브레는 오픈소스로 윈도우뿐 아니라 맥OS, 리눅스를 모두 지원한다. 설치 패키지는 칼리브레 웹사이트에서 다운로드할 수 있다. 설치 과정에서 칼리브레의 라이브러리를 저장할 경로를 묻는데, 주저할 것 없이 앞서 생성한 PC 내 Calibre 폴더를 선택하면 된다. 도서 등록은 의외로 쉽다. PDF, EPUB, txt 등의 도서 파일을 칼리브레로 드래그 앤 드롭하는 것만으로 전자책을 등록할 수 있다. Convert books로는 전자책 포맷을 상호 변환할 수 있고, Edit metadata로는 등록한 도서의 제목, 저자, ISDN, 커버 이미지 등을 변환할 수 있다. 메타데이터 편집 시 ids 항목에 ‘isbn:xxxxx’ 형식의 ISBN을 입력한 다음 ‘Download metadata’를 클릭하면 저자, 제목 등의 관련 정보가 구글, 아마존닷컴 등에서 검색해 자동으로 입력된다.

 

160821_synology_ebook_calibre

 

마지막으로 한 가지 설정이 남았다. BicBucStriim가 해당 폴더에 액세스할 수 있도록 NAS 측 Calibre 폴더의 권한을 변경하는 일이 그것이다. 이를 위해서는 시놀로지 DSM의 제어판 -> 터미널 및 SNMP에서 SSH를 활성화한다. ROOT 계정으로 NAS에 액세스한 다음, Calibre 상위 폴더로 이동해야 한다. 예컨대 NAS 측 Calibre 폴더 위치가 /homes/관리자 계정/CloudStation/Calibre인 경우 cd /volume1/homes/관리자 계정/CloudStation 명령어를 입력하면 된다. 다음 chmod –R 775 Calibre 명령어를 입력, Calibre의 액세스 권한을 변경한다. 시놀로지 DSM의 ROOT 권한 취득에 대해서는 ‘시놀로지 DSM 6.0에서 ROOT로 로그인하려면’ 포스트를 참고하자.

 

 

● ‘리디’ 같은 서비스 구축의 마지막 ‘BicBucStriim’ 설치
지금까지의 작업 모두는 BicBucStriim 설치를 위한 사전 작업에 불과하다. 칼리브레로 생성한 데이터베이스, 즉 라이브러리를 토대로 도서 서비스를 하려면 BicBucStriim와 함께 웹 스테이션(Web Station), 아파치 HTTP 서버 2.2와 PHP 5.6이 필요하다. 웹 스테이션과 PHP 5.6은 시놀로지 DSM의 패키지센터에서 손쉽게 설치할 수 있다. BicBucStriim의 경우 패키지 소스 추가가 필요한데, 먼저 DSM의 패키지 센터의 설정, 패키지 소스에 http://packages.synocommunity.com를 추가하고, 커뮤니티 탭에서 해당 패키지를 설치하면 된다. BicBucStriim의 웹관리자 페이지 주소는 http://NAS IP/bbs며, 초기 관리자 계정의 아이디와 암호 모두 admin이다. BicBucStriim가 로그인된다면 이제 끝이 얼마 남지 않았다.

 

160821_synology_ebook_bicbucst

 

BicBucStriim은 PHP 기반의 서비스인 만큼, PHP뿐 아니라 아파치 웹서버 등 몇 가지를 필요로 한다. 이에 대한 확인은 http://NAS IP/bbs/installcheck.php에 접속하면 알 수 있다. 환경 체크 옵션이 녹색이 되도록 환경을 구축해야 한다.

 

BicBucStriim의 구동을 위해서는 DSM의 웹스테이션 → PHP 설정 → PHP open_basedir 사용자 지정에서 이미 입력돼 있는 경로 끝에 :/volume1/homes/관리자 계정/CloudStation/Calibre를 추가, 저장해야 한다. PHP 캐시도 활성화하고, 확장 아래 목록의 모든 항목도 체크해 활성화하자. 이와 함께 웹 스테이션의 일반 설정에서 HTTP 백엔드 서버에는 아파치 HTTP 서버 2.2를, PHP에는 PHP5.6을 지정한다.

 

기본 관리자 계정도 잊지 말고 꼭 변경하자. BicBucStriim의 웹관리자 페이지 상단의 환경설정을 클릭, Users 메뉴를 연다. admin 계정을 클릭, 암호를 변경한다. 관리자 계정 이외의 사용자 계정이 필요하다면 여기서 추가하면 된다.

 

BicBucStriim의 웹관리자 페이지에 다시 접속, 로그인하면 칼리브레로 추가한 도서 목록이 나타날 것이다. 이제 서비스를 즐기기만 하면 된다.

 

160821_synology_ebook_marvin

 

● BicBucStriim, 어떻게 활용할까
이처럼 BicBucStriim는 웹으로도 이용할 수 있지만, 전자책 뷰어로도 연동 및 사용 가능하다. OPDS를 지원하는 뷰어라면 BicBucStriim로부터 전자책 목록을 받고, 해당 책을 다운로드 또는 스트리밍 방식으로 볼 수 있다. iOS라면 Aldiko(PDF, EPUB, CBZ), Marvin(EPUB, CBZ), Bookari(PDF, EPUB, CBZ)가, 안드로이드라면 Aldiko, Bookari 등의 전자책 리더가 대표적이다. Aldiko의 경우 Libraries에서 Add를 통해, Marvin은 Get Book -> OPDS의 Add를 통해 BicBucStriim를 추가할 수 있다. 이때 서버의 URL은 http://NAS IP/bbs/opds를 입력하면 된다. 메타데이터를 토대로 등록한 도서 목록이 나타나고, 원하는 책을 선택하면 마치 리디북스처럼 바로 읽을 수 있다.

suhyeoni

suhyeoni@gmail.com

8 Comments
  • 보라쇼

    가벼운 마음으로 읽다가 우어어어

    23. Sep 2016 at 9:41 오전 응답
    • suhyeoni

      더 쉽게 쓰도록 노력해야겠어요 @_@

      24. Sep 2016 at 12:36 오전 응답
  • nacyot

    아직 개인소장한 이북을 보기 위한 적절한 솔루션을 못 찾았는데, BicBucStriim을 이용한 접근은 흥미롭게 느껴지네요!

    좋은 글 잘 보고 갑니다 🙂

    23. Sep 2016 at 6:25 오후 응답
    • suhyeoni

      포스트를 하나 더 쓰다가 다른 걸 먼저 쓰고 있는데 BicBucStriim 대안으로 괜찮은 게 있습니다. Calibre Web인데요! 기능이 보다 단순하지만 디자인이 더 미려하고 깔끔합니다. 이에 대해서는 조만간 글을 올리겠습니다! 감사합니다.

      24. Sep 2016 at 12:38 오전 응답
  • 익명

    정말 잘 읽고 갑니다. 이런 것도 있구나 하고 신기해했습니다.

    21. Aug 2017 at 5:28 오후 응답
  • pang

    따라하고 있는데요.
    sqlite 가 빨간색으로 들어오고 500 에러가 납니다. ㅜㅜ

    16. Oct 2017 at 11:00 오후 응답
    • suhyeoni

      DSM 버전 등 케이스 바이 케이스가 많아 이걸로 해결되실지 모르겠습니다.
      구글링을 하면 비슷한 증상에 대한 해결책이 많습니다.

      Github의 트러블슈팅 등을 시도해보시기 바랍니다.
      https://github.com/rvolz/BicBucStriim/issues/240

      19. Oct 2017 at 12:57 오전 응답

Post a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.