Ubuntu 20.04에 Calibre Ebook Server를 설치하는 방법
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 20.04(Focal Fossa)
이 페이지에서
- 전제 조건
- 방화벽 구성\n
- 캘리버 서버 다운로드 및 설치
- 라이브러리 만들기 및 첫 번째 책 추가
- 캘리버 서버 실행\n
- 캘리버 서버용 서비스 생성
- 캘리버 서버에 사용자 인증 추가
- 서재에 자동으로 책 추가
- Nginx 설치
- SSL 설치
- SSL을 사용하여 프록시를 통해 Calibre를 제공하도록 Nginx 구성\n
- 결론
Calibre는 무료 오픈 소스 전자책 관리자입니다. 서버 구성 요소와 함께 크로스 플랫폼 데스크톱 애플리케이션으로 제공되며 전자책 라이브러리를 관리하는 데 사용할 수 있습니다.
Calibre를 서버로 설정하면 전 세계 어디에서나 책에 액세스하고 친구 및 가족과 책을 공유할 수 있습니다. 나중에 읽을 수 있도록 모바일 장치로 전송할 수도 있습니다. Calibre 서버를 사용하면 웹에서 직접 전자책을 읽을 수도 있습니다.
이 튜토리얼에서는 Ubuntu 20.04 기반 서버에 Calibre eBook 서버를 설치하고 사용하는 방법에 대해 알아봅니다.
전제 조건
-
An Ubuntu 20.04 based server with a user with sudo privileges.
-
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://
을 실행하면 기본 구경 화면이 표시됩니다.
calibre-library
를 클릭하면 방금 다운로드한 The turn of the screw
책이 표시됩니다.
명령줄에서 Ctrl+C를 눌러 서버를 중지할 수 있습니다.
Calibre 서버는 기본적으로 포트 8080을 사용합니다. 실행 중에 명령을 수정하여 변경할 수 있습니다.
$ calibre-server calibre-library --port 7530
그런 다음 브라우저에서 URL http://
을 실행하여 확인할 수 있습니다.
또한 방화벽을 통해 포트를 허용해야 합니다.
$ 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://
을 열어 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/
디렉토리의 모든 파일을 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를 통해 실행하는 방법을 배웠습니다. 질문이 있으시면 아래 의견에 게시하십시오.