calibre 콘텐츠 서버

calibre :guilabel:`콘텐츠 서버`를 사용하면 calibre 라이브러리에 접근하여 좋아하는 모바일 폰이나 태블릿 장치의 브라우저에서 직접 책을 읽을 수 있습니다. 따라서 전용 책 읽기/관리 앱을 폰에 설치할 필요가 없습니다. 브라우저만 사용하면 됩니다. 서버는 읽고 있는 책을 오프라인 캐시에 다운로드하여 저장하므로 인터넷 연결이 없어도 책을 읽을 수 있습니다.

서버를 시작하려면 연결/공유 버튼을 클릭하고 콘텐츠 서버 시작`을 선택하세요. 컴퓨터의 방화벽이나 백신 프로그램에서 ``calibre.exe``에 대한 접근을 허용할지 묻는 메시지가 표시될 수 있습니다. ``허용` 또는 확인 버튼을 클릭하세요. 그런 다음 컴퓨터에서 브라우저(Chrome 또는 Firefox 권장)를 열고 다음 주소를 입력하세요:

http://127.0.0.1:8080

그러면 브라우저에 calibre 라이브러리를 보여주는 페이지가 열립니다. 라이브러리 중 하나를 클릭하여 책을 탐색하세요. 책을 클릭하면 책에 대한 모든 메타데이터와 함께 읽기다운로드 버튼이 표시됩니다. 읽기 버튼을 클릭하여 책 읽기를 시작하세요.

참고

위에서 사용한 주소 ``http://127.0.0.1:8080``은 calibre를 실행 중인 컴퓨터에서만 작동합니다. 다른 컴퓨터/폰/태블릿 등에서 서버에 접근하려면 다음 섹션에서 설명하는 것처럼 약간의 추가 작업이 필요합니다.

다른 장치에서 콘텐츠 서버에 접근하기

일반적으로 필요한 원격 장치 접근에는 두 가지 유형이 있습니다. 첫 번째, 더 간단한 유형은 홈 네트워크 내에서의 접근입니다. 홈 네트워크의 컴퓨터에서 calibre를 실행하고 있고 다른 장치도 동일한 홈 네트워크에 연결되어 있다면 해당 장치에서 서버에 쉽게 접근할 수 있어야 합니다.

홈 네트워크의 장치에서 서버에 접근하기

위에서 설명한 대로 calibre에서 서버를 시작한 후 연결/공유 버튼을 다시 클릭하세요. 콘텐츠 서버 시작 대신 :guilabel:`콘텐츠 서버 중지`가 표시되어야 합니다. 이 동작 오른쪽에 IP 주소와 포트 번호가 나열됩니다. 마침표로 구분된 숫자 형태입니다. 예:

Stop Content server [192.168.1.5, port 8080]

이 숫자들은 장치에서 서버에 연결하는 데 사용할 주소를 알려줍니다. 위 예시를 따르면 주소는 다음과 같습니다:

http://192.168.1.5:8080

주소의 첫 부분은 항상 http://``이고, 다음 부분은 쉼표 이전의 숫자인 IP 주소이며, 마지막으로 콜론(:``)을 사용하여 IP 주소에 추가해야 하는 포트 번호가 있습니다. 운이 좋다면 이것만으로 충분하며 장치에서 calibre 라이브러리를 볼 수 있을 것입니다. 그렇지 않으면 계속 읽어보세요.

홈 네트워크 연결 문제 해결

장치에서 서버에 접근할 수 없는 경우 다음 단계를 시도하세요:

  1. 서버와 동일한 컴퓨터에서 실행 중인 브라우저에서 http://127.0.0.1:8080 주소를 열어 서버가 실행 중인지 확인하세요.

  2. 방화벽/백신이 포트 ``8080``에서 컴퓨터로의 연결과 calibre 프로그램을 허용하는지 확인하세요. 방화벽/백신이 문제의 원인인지 확인하는 가장 쉬운 방법은 둘 다 일시적으로 끄고 연결을 시도하는 것입니다. 컴퓨터를 안전하게 보호하려면 방화벽을 끄기 전에 먼저 인터넷 연결을 해제하세요.

  3. 장치와 컴퓨터가 동일한 네트워크에 있는지 확인하세요. 즉, 둘 다 동일한 무선 라우터에 연결되어 있어야 합니다. 특히 셀룰러나 ISP 제공 직접 WiFi 연결을 사용하고 있으면 안 됩니다.

  4. 비표준 네트워크 설정을 사용하고 있다면 연결/공유 메뉴에 표시된 IP 주소가 잘못되었을 수 있습니다. 이러한 경우 사용해야 할 올바른 IP 주소를 직접 파악해야 합니다. 안타깝게도 가능한 네트워크 구성의 무한한 다양성을 감안할 때 이를 위한 로드맵을 제공하기는 어렵습니다.

  5. 사용자 이름과 암호를 설정했다면 먼저 그것 없이 시도하여 문제를 일으키는지 확인하세요. 일부 전자잉크 장치는 인증을 처리하지 못하는 브라우저를 가지고 있습니다. 때때로 URL에 사용자 이름과 암호를 포함하여 우회할 수 있습니다. 예: http://username:password@192.168.1.2:8080.

  6. 막혔다면 `calibre 사용자 포럼`_에서 도움을 요청할 수 있습니다.

인터넷 어디서든 서버에 접근하기

경고

이 작업을 수행하기 전에 서버에서 사용자 이름/암호 보호를 켜야 합니다. 그렇지 않으면 전 세계 누구나 책에 접근할 수 있게 됩니다. 환경설정 → 공유 → 네트워크를 통한 공유`로 이동하여 :guilabel:`콘텐츠 서버에 접근하려면 사용자 이름과 암호 필요 옵션을 활성화하세요.

인터넷 접근 설정의 구체적인 세부 사항은 사용 중인 네트워크 구성과 컴퓨터 유형에 따라 다르지만, 기본적인 구성은 다음과 같습니다.

  1. 서버를 실행할 컴퓨터의 외부 IP 주소를 확인하세요. 컴퓨터에서 실행 중인 브라우저에서 What is my IP address 사이트를 방문하여 확인할 수 있습니다.

  2. 컴퓨터가 라우터 뒤에 있는 경우, 라우터에서 포트 포워딩을 활성화하여 포트 ``8080``(또는 calibre 콘텐츠 서버를 실행하기 위해 선택한 포트)을 컴퓨터로 전달하세요.

  3. 컴퓨터의 방화벽/백신 프로그램에서 calibre 서버가 허용되는지 확인하세요.

  4. 이제 첫 번째 단계에서 찾은 IP 주소를 사용하여 인터넷에 연결된 모든 장치에서 서버에 접근할 수 있어야 합니다. 예를 들어, 찾은 IP 주소가 ``123.123.123.123``이고 calibre 서버에 사용하는 포트가 ``8080``이면, 장치에서 사용할 주소는 ``http://123.123.123.123:8080``이 됩니다.

  5. 선택적으로, `no-ip <https://www.noip.com/free>`_와 같은 서비스를 사용하여 첫 번째 단계에서 찾은 IP 주소 대신 기억하기 쉬운 주소를 설정할 수 있습니다.

참고

최대한의 보안을 위해 콘텐츠 서버에서 HTTPS도 활성화해야 합니다. 서버의 고급 구성 옵션에서 사용할 HTTPS 인증서의 경로를 직접 제공하거나, 아래 설명된 대로 역방향 프록시를 설정하여 기존 HTTPS 구성을 사용할 수 있습니다.

서버 인터페이스

서버 인터페이스는 터치 스크린 사용에 최적화된 간소화된 버전의 calibre 인터페이스입니다. 홈 화면은 현재 읽고 있는 책을 보여주고, 탐색할 calibre 라이브러리를 선택할 수 있습니다. calibre 서버는 이전과 같이 하나의 라이브러리만이 아니라 모든 라이브러리에 접근할 수 있게 해줍니다.

책 목록

서버 책 목록은 간단한 표지 그리드입니다. 표지를 탭하여 책의 상세 메타데이터를 보거나 책을 읽을 수 있습니다. 더 상세한 목록을 선호하면 오른쪽 상단의 세로 점 세 개를 클릭하여 기본 보기를 변경할 수 있습니다.

책 목록의 정렬 및 검색은 calibre 사용자에게 익숙할 것입니다. 오른쪽 상단 영역의 아이콘을 클릭하여 접근할 수 있습니다. 둘 다 기본 calibre 프로그램과 정확히 동일하게 작동합니다. 검색 페이지에서는 기본 프로그램의 태그 탐색기를 사용하는 것처럼 저자/태그 등을 클릭하여 검색 쿼리를 구성할 수도 있습니다.

기본 프로그램에서 많은 사랑을 받은 기능인 :guilabel:`가상 라이브러리`가 서버 인터페이스에도 있습니다. 오른쪽 상단의 세로 점 세 개를 클릭하여 가상 라이브러리를 선택하세요.

책 뷰어

Calibre 라이브러리에 있는 모든 책은 해당 책을 탭한 다음 ‘읽기’ 버튼을 탭하기만 하면 바로 읽을 수 있습니다. 책 뷰어는 조작이 매우 간단합니다. 탭하거나 스와이프하여 페이지를 넘길 수 있으며, 위아래로 스와이프하면 챕터 간 이동이 가능합니다. 화면 상단 1/4 부분을 탭하면 자세한 설정 및 뷰어 옵션에 접근할 수 있습니다.

콘텐츠 서버를 실행해 두면 여러 장치에서 같은 책을 열어도 마지막 읽은 위치를 기억합니다. 기억하지 못하는 경우 상단 1/4을 탭하고 :guilabel:`동기화`를 선택하여 동기화를 강제할 수 있습니다.

브라우저 지원

새 calibre 서버는 고급 HTML 5 및 CSS 3 기능을 많이 활용합니다. 따라서 최신 브라우저가 필요합니다. Android Chrome, iOS Safari, 그리고 데스크톱의 Chrome과 Firefox에서 테스트되었습니다.

서버는 이미 표준화되었거나 표준화 진행 중인 기능만 사용하도록 주의합니다. 따라서 현재 즐겨 사용하는 브라우저에서 작동하지 않더라도, 해당 브라우저가 업데이트되면 아마 작동할 것입니다.

특히 오래되거나 제한된 브라우저를 사용 중이거나 JavaScript 실행을 원하지 않는 경우, 서버 주소에 ``/mobile``을 추가하여 모바일 보기를 사용할 수 있습니다.

참고

iOS에서 Apple은 단일 브라우저 엔진만 허용하므로 Firefox, Chrome, Safari는 모두 내부적으로 동일한 브라우저입니다. 새 서버 인터페이스는 iOS 10.3.2 이상이 필요합니다. Android에서는 Chrome 버전 58 이상으로 서버가 테스트되었습니다.

오프라인 지원 활성화

서버는 오프라인 모드를 완벽하게 지원합니다. 책을 열고 로딩이 완료되면 오프라인에서 이어서 읽을 수 있습니다. 단, 일반적인 브라우저는 오프라인 모드(서비스 워커)를 활성화하기 위해 HTTPS 연결이 필요합니다. 따라서 위에서 설명한 대로 HTTPS 지원 <cs_https_mode> 설정 을 실행해야 합니다. 홈페이지 하단으로 스크롤하면 오프라인 모드 활성화 상태를 확인할 수 있습니다.

또는 책을 열고 브라우저 탭을 열어둔 상태로 유지할 수도 있습니다. 탭이 열려 있는 한, 인터넷 연결이 끊긴 상태에서도 책을 계속 읽을 수 있습니다.

명령줄에서만 사용자 계정 관리

calibre 프로그램에는 :guilabel:`환경설정`에 서버의 사용자 계정을 관리할 수 있는 좋은 섹션이 있습니다. 그러나 독립 실행형 서버를 실행하고 동일한 컴퓨터/사용자 계정에서 기본 calibre 프로그램을 실행할 수 없는 경우 명령줄만으로도 사용자를 관리할 수 있습니다.

독립 실행형 calibre-server 프로그램의 --manage-users 옵션을 사용하여 사용자 계정을 관리할 수 있습니다. 사용자 데이터베이스를 /srv/calibre 폴더에 저장하려면 다음을 실행하여 만드세요:

calibre-server --userdb /srv/calibre/users.sqlite --manage-users

프롬프트를 따라 사용자 계정을 만들고 권한을 설정하세요. 완료되면 서버를 다음과 같이 실행할 수 있습니다:

calibre-server --userdb /srv/calibre/users.sqlite --enable-auth

이전 단계에서 생성한 사용자 계정을 사용합니다.

calibre 콘텐츠 서버를 다른 서버에 통합하기

여기에서는 calibre 콘텐츠 서버를 다른 서버에 통합하는 방법을 설명합니다. 가장 일반적인 이유는 SSL을 사용하거나 calibre 라이브러리를 더 큰 사이트의 일부로 제공하기 위해서입니다. 기본적인 기법은 calibre 서버를 실행하고 기본 서버에서 역방향 프록시를 설정하는 것입니다.

역방향 프록시는 일반 서버가 들어오는 요청을 수락하고 calibre 서버에 전달하는 방식입니다. 그런 다음 calibre 서버의 응답을 읽고 클라이언트에 전달합니다. 이는 기본 서버와 밀접하게 통합하려고 시도하지 않고 calibre 서버를 그대로 실행할 수 있음을 의미합니다.

전체 가상 호스트 사용

가장 간단한 구성은 calibre 서버에 전체 가상 호스트를 전용으로 사용하는 것입니다. 이 경우 calibre 서버를 다음과 같이 실행하세요:

calibre-server

이제 기본 서버에서 가상 호스트를 설정하세요. 예를 들어 nginx의 경우:

http {
    client_max_body_size 64M;  # needed to upload large books
}

server {
    listen [::]:80;
    server_name myserver.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

또는 Apache의 경우:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<VirtualHost *:80>
    ServerName myserver.example.com
    AllowEncodedSlashes On
    ProxyPreserveHost On
    ProxyPass "/"  "http://localhost:8080/"
</VirtualHost>

URL 접두사 사용

calibre에 전체 가상 호스트를 전용으로 사용하지 않으려면 URL 접두사를 사용하도록 할 수 있습니다. calibre 서버를 다음과 같이 시작하세요:

calibre-server --url-prefix /calibre --port 8080

여기서 핵심 매개 변수는 --url-prefix /calibre``입니다. 이로 인해 콘텐츠 서버가 ``/calibre 접두사가 붙은 모든 URL을 제공합니다. 이를 확인하려면 브라우저에서 http://localhost:8080/calibre``를 방문하세요. 일반적인 콘텐츠 서버 웹사이트가 표시되지만 이제 ``/calibre 아래에서 실행됩니다.

Nginx를 사용할 때 필요한 설정은 다음과 같습니다:

http {
    client_max_body_size 64M;  # needed to upload large books
}

proxy_set_header X-Forwarded-For $remote_addr;
location /calibre/ {
    proxy_buffering off;
    proxy_pass http://127.0.0.1:8080$request_uri;
}
location /calibre {
    # we need a trailing slash for the Application Cache to work
    rewrite /calibre /calibre/ permanent;
}

Apache의 경우 먼저 :file:`httpd.conf`에 다음을 추가하여 Apache에서 프록시 모듈을 활성화하세요:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

프록시 모듈을 활성화하는 정확한 방법은 Apache 설치에 따라 다릅니다. 프록시 모듈을 활성화한 후 :file:`httpd.conf`에 다음 규칙을 추가하세요(또는 가상 호스트를 사용하는 경우 해당 가상 호스트의 conf 파일에 추가하세요):

AllowEncodedSlashes On
RewriteEngine on
RewriteRule ^/calibre/(.*) http://127.0.0.1:8080/calibre/$1 [proxy]
RedirectMatch permanent ^/calibre$ /calibre/

이것으로 충분합니다. 이제 기본 서버에서 /calibre URL 아래에서 calibre 콘텐츠 서버에 접근할 수 있습니다. 위의 규칙은 /calibre 아래의 모든 요청을 포트 8080에서 실행 중인 calibre 서버에 전달하며, 위의 --url-prefix 옵션 덕분에 calibre 서버가 투명하게 처리합니다.

참고

역방향 프록시를 사용할 때 ``–listen-on 127.0.0.1``을 사용하여 calibre 콘텐츠 서버가 localhost에서만 수신하도록 설정해야 합니다. 이렇게 하면 서버가 동일한 컴퓨터, 즉 역방향 프록시에서 오는 연결만 수신합니다.

참고

기본 서버에 SSL을 설정한 경우, calibre 서버에 다이제스트 인증 대신 더 빠른 기본 인증을 사용하도록 설정해야 합니다. 그렇게 하려면 calibre-server``에 ``--auth-mode=basic 옵션을 전달하세요.

최신 Linux 시스템에서 calibre 서버용 서비스 만들기

최신 (systemd) 기반 Linux 시스템에서 부팅 시 calibre를 실행하는 서비스를 쉽게 만들 수 있습니다. 아래 내용으로 /etc/systemd/system/calibre-server.service 파일을 만들기만 하면 됩니다:

[Unit]
Description=calibre Content server
After=network.target

[Service]
Type=simple
User=mylinuxuser
Group=mylinuxgroup
ExecStart=/opt/calibre/calibre-server "/path/to/calibre library folder"

[Install]
WantedBy=multi-user.target

mylinuxuser``와 ``mylinuxgroup``을 서버를 실행하려는 사용자와 그룹으로 변경하세요. calibre 라이브러리 폴더의 파일을 소유한 동일한 사용자와 그룹이어야 합니다. 서버를 root로 실행하는 것은 일반적으로 좋지 않습니다. 또한 시스템에 맞게 calibre 라이브러리 폴더의 경로를 변경하세요. 필요한 경우 여러 라이브러리를 추가할 있습니다. ``calibre-server 명령의 도움말을 참조하세요.

이제 다음을 실행하세요:

sudo systemctl start calibre-server

서버를 시작합니다. 다음으로 상태를 확인하세요:

sudo systemctl status calibre-server

부팅 시 시작되도록 하려면 다음을 실행하세요:

sudo systemctl enable calibre-server

참고

calibre 서버는 실행 중인 X 서버가 필요하지 않지만, 일부 구성 요소가 X 라이브러리에 연결되므로 X 라이브러리가 설치되어 있어야 합니다.

참고

calibre 서버는 systemd 소켓 활성화도 지원하므로 필요한 경우 이를 사용할 수도 있습니다.