웹사이트 검색

Ubuntu 20.04에 Calibre Ebook Server를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 20.04(Focal Fossa)

이 페이지에서

  1. 전제 조건
  2. 방화벽 구성\n
  3. 캘리버 서버 다운로드 및 설치
  4. 라이브러리 만들기 및 첫 번째 책 추가
  5. 캘리버 서버 실행\n
  6. 캘리버 서버용 서비스 생성
  7. 캘리버 서버에 사용자 인증 추가
  8. 서재에 자동으로 책 추가
  9. Nginx 설치
  10. SSL 설치
  11. SSL을 사용하여 프록시를 통해 Calibre를 제공하도록 Nginx 구성\n
  12. 결론

Calibre는 무료 오픈 소스 전자책 관리자입니다. 서버 구성 요소와 함께 크로스 플랫폼 데스크톱 애플리케이션으로 제공되며 전자책 라이브러리를 관리하는 데 사용할 수 있습니다.

Calibre를 서버로 설정하면 전 세계 어디에서나 책에 액세스하고 친구 및 가족과 책을 공유할 수 있습니다. 나중에 읽을 수 있도록 모바일 장치로 전송할 수도 있습니다. Calibre 서버를 사용하면 웹에서 직접 전자책을 읽을 수도 있습니다.

이 튜토리얼에서는 Ubuntu 20.04 기반 서버에 Calibre eBook 서버를 설치하고 사용하는 방법에 대해 알아봅니다.

전제 조건

  1. An Ubuntu 20.04 based server with a user with sudo privileges.

  2. Keep the server updated.

    $ sudo apt update && sudo apt upgrade
    

방화벽 구성

Ubuntu 20.04에는 기본적으로 Uncomplicated Firewall(UFW)이 함께 제공됩니다. 그렇지 않은 경우 먼저 설치하십시오.

$ sudo apt install ufw

SSH 포트를 활성화합니다.

$ sudo ufw allow "OpenSSH"

방화벽을 활성화하십시오.

$ sudo ufw enable

캘리버 서버에서 사용하는 포트 8080을 활성화합니다.

$ sudo ufw allow 8080

방화벽 상태를 확인하십시오.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
8080                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
8080 (v6)                  ALLOW       Anywhere (v6)

캘리버 서버 다운로드 및 설치

Ubuntu 20.04는 calibre와 함께 제공되지만 최신 버전을 다운로드하는 대신 해당 사이트에서 직접 설치하는 것이 좋습니다.

먼저 몇 가지 종속 항목을 설치해야 합니다.

$ sudo apt install libfontconfig libgl1-mesa-glx

캘리버 서버 설치 프로그램을 다운로드합니다.

$ wget https://download.calibre-ebook.com/linux-installer.sh

설치 프로그램 스크립트를 실행 가능으로 설정하십시오.

$ chmod +x ./linux-installer.sh

설치 프로그램을 실행합니다.

$ sudo ./linux-installer.sh

설치 프로그램은 헤드리스 서버가 아닌 데스크탑 시스템을 예상하기 때문에 몇 가지 경고가 표시됩니다. 무시해도 안전합니다.

라이브러리 생성 및 첫 번째 책 추가

튜토리얼을 위해 Project Gutenberg에서 예제로 책을 다운로드합니다. Project Gutenberg는 무료 공개 도서의 대규모 저장소입니다.

다음 명령을 실행하여 첫 번째 책을 다운로드하십시오. 최근 할로윈 축제의 정신으로 Henry James의 "The turn of the screw"라는 공포 이야기를 다운로드합시다.

$ wget http://www.gutenberg.org/ebooks/209.kindle.noimages -O turnofthescrew.mobi

구경 라이브러리를 위한 디렉토리를 생성합니다.

$ mkdir calibre-library

calibredb 명령을 사용하여 방금 다운로드한 책을 calibre 라이브러리에 추가하십시오.

$ calibredb add *.mobi --with-library calibre-library/
Added book ids: 1

이제 칼리버를 시작할 때입니다.

구경 서버 실행

다음 명령을 실행하여 Calibre 콘텐츠 서버를 시작합니다.

$ calibre-server calibre-library

calibre-server는 서버를 시작하는 데 사용되는 명령이고 calibre-library는 방금 생성한 디렉토리의 이름이며 서버에서 인터페이스를 로드하는 데 사용됩니다.

비슷한 출력이 표시되어야 합니다.

calibre server listening on 0.0.0.0:8080
OPDS feeds advertised via BonJour at: your_server_ip port: 8080

브라우저에서 URL http://:8080을 실행하면 기본 구경 화면이 표시됩니다.

calibre-library를 클릭하면 방금 다운로드한 The turn of the screw 책이 표시됩니다.

명령줄에서 Ctrl+C를 눌러 서버를 중지할 수 있습니다.

Calibre 서버는 기본적으로 포트 8080을 사용합니다. 실행 중에 명령을 수정하여 변경할 수 있습니다.

$ calibre-server calibre-library --port 7530

그런 다음 브라우저에서 URL http://:7530을 실행하여 확인할 수 있습니다.

또한 방화벽을 통해 포트를 허용해야 합니다.

$ sudo ufw allow 7530

Calibre 서버용 서비스 생성

서버가 다시 시작된 후에도 Calibre가 영원히 실행되기를 원할 것입니다. 이렇게 하려면 부팅 시 자동으로 시작하는 calibre용 서비스를 만들어야 합니다.

/etc/systemd/system/calibre-server.service 파일을 만들고 Nano 편집기를 사용하여 편집하기 위해 엽니다.

$ sudo nano /etc/systemd/system/calibre-server.service

다음 코드를 붙여넣습니다.

## startup service
[Unit]
Description=calibre content server
After=network.target

[Service]
Type=simple
User=<username>
Group=<username>
ExecStart=/opt/calibre/calibre-server /home/<username>/calibre-library --enable-local-write

[Install]
WantedBy=multi-user.target

<username>를 Ubuntu 서버의 실제 시스템 사용자로 바꾸십시오.

Ctrl+W를 누르고 프롬프트가 표시되면 Y를 입력하여 파일을 저장하고 닫습니다.

구경 서비스를 활성화하고 시작하십시오.

$ sudo systemctl enable calibre-server
$ sudo systemctl start calibre-server

서비스를 재부팅하여 확인할 수 있습니다.

$ sudo reboot

몇 분 정도 기다렸다가 브라우저에서 http://:8080을 열어 caliber가 작동하는지 확인합니다.

Calibre 서버에 사용자 인증 추가

지금은 서버 IP를 아는 모든 사람이 캘리버 서버에 액세스할 수 있습니다. 서버에 사용자 인증을 추가하여 이를 변경할 수 있습니다.

먼저 구경 서버를 중지하십시오.

$ sudo systemctl stop calibre-server

calibres 사용자 관리 스크립트를 시작합니다. 사용자 데이터베이스가 저장될 경로를 지정할 수 있습니다. SQLite 데이터베이스 형태로 저장됩니다.

$ sudo calibre-server --userdb /home/<username>/.config/calibre/server-users.sqlite --manage-users
1) Add a new user
2) Edit an existing user
3) Remove a user
4) Cancel

What do you want to do? [1-4]: 1
Enter the username: howtoforge
Enter the new password for howtoforge:
Re-enter the new password for howtoforge, to verify:
User howtoforge added successfully!

새 사용자를 생성하고 강력한 암호를 선택하려면 1을 입력합니다.

다음으로 이전에 설정한 구경 서비스를 편집해야 합니다.

서비스 파일을 엽니다.

$ sudo nano /etc/systemd/system/calibre-server.service

ExecStart로 시작하는 줄 끝에 --enable-auth 플래그를 추가하여 사용자 인증을 활성화합니다.

. . .
ExecStart=/opt/calibre/calibre-server "/home/<username>/calibre-library" --userdb "/home/<username>/.config/calibre/server-users.sqlite" --enable-local-write --enable-auth
. . .

Ctrl+W를 누르고 프롬프트가 표시되면 Y를 입력하여 파일을 저장하고 닫습니다.

수정된 서비스 파일을 다시 로드하고 서비스를 다시 시작하려면 서비스 데몬을 새로 고칩니다.

sudo systemctl daemon-reload
sudo systemctl start calibre-server

다음에 사이트를 시작하면 라이브러리에 액세스하기 전에 사용자 이름과 암호를 묻는 메시지가 표시됩니다.

라이브러리에 자동으로 책 추가

Calibre 서버에서 추적할 수 있는 감시 폴더를 설정할 수 있으므로 폴더에 새 책을 추가할 때마다 자동으로 Calibre 라이브러리에 추가됩니다.

감시 폴더를 만들고 전환합니다.

$ mkdir ~/watchbooks
$ cd ~/watchbooks

다음 명령을 사용하여 폴더에 새 책을 다운로드합니다.

$ wget http://www.gutenberg.org/ebooks/514.epub.noimages -o littlewomen.epub

다음으로 Crontab 편집기를 엽니다.

$ crontab -e

끝에 다음 줄을 추가합니다.

*/5 * * * * calibredb add /home/<username>/watchbooks/ -r --with-library http://localhost:8080#calibre-library --username calibreuser --password YourPassword && rm -r /home/<username>/watchbooks/*

이 스크립트는 /home//watchbooks 디렉토리의 모든 파일을 caliber 라이브러리에 추가하고 더 이상 필요하지 않은 모든 원본 파일을 삭제합니다.

cron 작업은 5분마다 실행됩니다. 몇 분 정도 기다렸다가 Calibre 서버 사이트를 다시 로드하여 방금 추가한 책이 라이브러리에 나타나는지 확인하십시오.

Nginx 설치

이 단계에서는 프록시를 통해 구경 서버를 제공하기 위해 Nginx 웹 서버를 설치합니다. 이렇게 하면 예를 들어 calibre.yourdomain.com과 같은 도메인 이름을 통해 액세스할 수 있습니다. 또한 포트 번호 지정에 대해 걱정할 필요가 없습니다. Nginx를 프록시로 사용하면 SSL을 통해 사이트를 제공할 수 있습니다.

다음 명령을 실행하여 Nginx를 설치합니다.

$ sudo apt install nginx

더 이상 필요하지 않으므로 포트 80 및 443을 열고 포트 8080을 닫습니다.

$ sudo ufw allow "Nginx Full"
$ sudo ufw delete allow 8080

Nginx Full은 포트 80 및 443을 자동으로 여는 ufw 방화벽용 애플리케이션 프로필입니다.

$ sudo ufw status
Status: active

To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere
Nginx Full  		   ALLOW       Anywhere	
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full		   ALLOW       Anywhere (v6)

SSL 설치

Let’s Encrypt 서비스를 사용하여 SSL을 설치합니다.

이를 위해 Certbot을 설치합니다.

$ sudo apt install certbot

Certbot 프로세스를 방해하므로 Nginx를 중지하십시오.

$ sudo systemctl stop nginx

인증서를 생성합니다. 또한 DHParams 인증서를 생성해야 합니다.

$ export LDOMAIN="calibre.yourdomain.com"
$ export LEMAIL=""
$ sudo certbot certonly --standalone -d $LDOMAIN --preferred-challenges http --agree-tos -n -m $LEMAIL --keep-until-expiring 
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

또한 SSL을 자동으로 갱신하기 위해 cron 작업을 설정해야 합니다. crontab 편집기를 열려면 다음 명령을 실행합니다.

$ sudo crontab -e

위의 명령은 Crontab 편집기를 엽니다.

하단에 다음 줄을 붙여넣습니다.

25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”

위의 크론 작업은 매일 오전 2시 25분에 certbot을 실행합니다. 원하는 것으로 변경할 수 있습니다.

Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

SSL을 사용하여 프록시를 통해 Calibre를 제공하도록 Nginx 구성

SSL 구성을 추가하려면 Nginx 구성 파일을 편집해야 합니다.

다음 명령을 실행하여 Calibre 서버에 대한 구성 파일을 추가하십시오.

$ sudo nano /etc/nginx/sites-available/calibre.conf

편집기에 다음 코드를 붙여넣습니다.

server {
    listen 80;
    listen [::]:80;
    server_name calibre.yourdomain.com;
    # enforce https
    return 301 https://$server_name:443$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name calibre.yourdomain.com;

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

    # Use Mozilla's guidelines for SSL/TLS settings
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    ssl_certificate /etc/letsencrypt/live/calibre.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/calibre.yourdomain.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
}

Ctrl + X를 눌러 편집기를 닫고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.

sites-enabled 디렉터리에 연결하여 이 구성 파일을 활성화합니다.

$ sudo ln -s /etc/nginx/sites-available/calibre.conf /etc/nginx/sites-enabled/

Nginx 구성을 테스트합니다.

$ sudo nginx -t

구성이 올바르다는 것을 나타내는 다음 출력이 표시되어야 합니다.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginx 서비스를 다시 로드합니다.

$ sudo systemctl reload nginx

이제 URL https://calibre.yourdomain.com을 통해 사이트를 시작할 수 있습니다.

결론

이 튜토리얼에서는 Calibre ebook 서버를 설치 및 실행하는 방법과 사용자 인증 및 책을 자동으로 추가하는 기능과 함께 Nginx를 통해 실행하는 방법을 배웠습니다. 질문이 있으시면 아래 의견에 게시하십시오.