서버 설치 · 9 min read · Oct 11, 2025

우분투 22.04에 Calibre Ebook Server 설치하는 방법

Calibre는 무료 오픈 소스 전자책 관리 프로그램입니다. 데스크톱 애플리케이션과 서버 구성 요소로 작동합니다. 데스크톱 구성 요소는 단일 장치에서 전자책 라이브러리를 관리할 수 있습니다. 서버 구성 요소는 다음을 가능하게 합니다:

  • 전 세계 어디에서나 책에 접근할 수 있습니다.
  • 모바일 장치로 책을 쉽게 전송할 수 있습니다.
  • 친구 및 가족과 책을 공유할 수 있습니다.
  • 웹에서 전자책을 직접 읽을 수 있습니다.

이 튜토리얼에서는 Ubuntu 22.04 머신에 Calibre 서버를 설치하는 방법을 배웁니다.

전제 조건

  • Ubuntu 22.04를 실행하는 서버.
  • sudo 권한이 있는 비루트 사용자.
  • Uncomplicated Firewall(UFW)가 활성화되어 실행 중입니다.
  • 서버를 가리키는 완전한 도메인 이름. 튜토리얼에서는 도메인 calibre.example.com을 사용할 것입니다.
  • 모든 것이 업데이트되었습니다. $ sudo apt update && sudo apt upgrade

1단계 - 방화벽 구성

패키지를 설치하기 전에 첫 번째 단계는 HTTP 및 HTTPS 연결을 허용하도록 방화벽을 구성하는 것입니다.

방화벽 상태를 확인합니다.

$ sudo ufw status

다음과 같은 내용이 표시되어야 합니다.

Status: active

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

HTTP 및 HTTPS 포트를 허용합니다.

$ sudo ufw allow http
$ sudo ufw allow https

확인을 위해 상태를 다시 확인합니다.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

2단계 - Calibre 서버 다운로드 및 설치

Ubuntu 22.04에는 Calibre가 기본 제공되지만 최신 버전을 직접 설치하는 것이 좋습니다.

첫 번째 단계는 몇 가지 종속성을 설치하는 것입니다.

$ sudo apt install libopengl0 libxkbcommon-x11-0 libegl1 libfontconfig libgl1-mesa-glx

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

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

설치 프로그램 스크립트를 실행 가능하게 만듭니다.

$ chmod +x ./linux-installer.sh

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

$ sudo ./linux-installer.sh

설치 프로그램은 서버가 아닌 데스크톱을 기대하기 때문에 몇 가지 경고가 표시됩니다. 경고는 무시해도 안전합니다.

3단계 - Calibre 라이브러리 생성 및 첫 번째 책 추가

다음 단계는 Calibre 라이브러리를 설정하고 몇 권의 책을 추가하는 것입니다. 튜토리얼에서는 Project Gutenberg에서 아서 코난 도일의 책 ‘셜록 홈즈의 모험’을 다운로드합니다.

$ wget http://www.gutenberg.org/ebooks/1661.kindle.noimages -O adventuresofsherlockholmes.mobi

항상 사이트에서 Kindle 버전의 책을 가져오세요. 여기서는 Mobi 형식이 Kindle에서 기본적으로 지원되기 때문에 Kindle 버전을 filename.mobi로 이름을 바꾸고 있습니다. 또한 Epub 버전보다 더 나은 형식 옵션을 제공합니다.

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

$ mkdir calibre-library

방금 다운로드한 책을 calibredb 명령을 사용하여 라이브러리에 추가합니다. 명령 자체에서 라이브러리의 위치를 지정했습니다.

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

다음과 같은 방식으로 여러 권의 책을 한 번에 추가할 수 있습니다.

$ calibredb add *.mobi --with-library calibre-library/

4단계 - Calibre 서버 시작

이제 책이 준비되었으므로 Calibre 서버를 시작할 시간입니다.

$ calibre-server calibre-library

calibre-server 명령은 라이브러리의 위치를 인수로 사용합니다. 비슷한 출력이 표시되어야 합니다.

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

이렇게 하면 Calibre 서버가 포트 8080에서 노출됩니다. 서버를 보려면 먼저 포트를 열어야 합니다. 다음 명령을 실행하여 포트 8080을 엽니다.

$ sudo ufw allow 8080

브라우저에서 URL http://:8080/를 열면 다음 화면이 표시됩니다. 화면은 운영 체제의 테마 선택에 따라 어둡거나 밝게 나타납니다.

Calibre Server Home

이전 단계에서 추가한 책을 보려면 calibre-library 링크를 클릭하세요.

Calibre Server Library View

터미널에서 Ctrl + C 키를 눌러 서버를 종료합니다.

Calibre 서버를 노출하기 위해 다른 포트를 사용할 수 있습니다. 그렇게 하려면 다음 명령을 사용하세요. 방화벽에서 포트가 열려 있는지 확인해야 합니다.

$ calibre-server calibre-library --port 7654

5단계 - systemd 서비스 파일 생성

Calibre 서버 프로세스를 지속적으로 유지하고 재부팅 후에도 살아남게 하려면 systemd 서비스 파일을 생성해야 합니다.

/etc/systemd/system/ 디렉토리에 calibre-server.service라는 파일을 생성하고 편집을 위해 엽니다.

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

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

[Unit]
Description=Calibre Server
After=network.target

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

[Install]
WantedBy=multi-user.target

--enable-local-write 플래그는 서버가 라이브러리에 새 책을 추가할 수 있는 쓰기 권한을 부여합니다. 서버가 실행 중일 때 calibredb 명령을 사용하여 책을 추가할 수 없기 때문입니다.

위 코드에서 을 Linux 시스템 사용자 이름으로 바꾸세요. Ctrl+W를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력하여 파일을 닫습니다.

서비스 파일을 활성화하기 위해 서비스 데몬을 다시 로드합니다.

$ sudo systemctl daemon-reload

Calibre 서비스를 활성화하고 시작합니다.

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

서비스 상태를 확인합니다.

$ sudo systemctl status calibre-server
? calibre-server.service - Calibre Server
     Loaded: loaded (/etc/systemd/system/calibre-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-07-25 07:23:42 UTC; 15s ago
   Main PID: 1877 (BonJour)
      Tasks: 13 (limit: 2241)
     Memory: 53.3M
        CPU: 762ms
     CGroup: /system.slice/calibre-server.service
             ??1877 /opt/calibre/bin/calibre-server /home//calibre-library --enable-local-write

Jul 25 07:23:42 calibre systemd[1]: Started Calibre Server.
Jul 25 07:23:42 calibre calibre-server[1877]: QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-'
Jul 25 07:23:42 calibre calibre-server[1877]: calibre server listening on 0.0.0.0:8080
Jul 25 07:23:43 calibre calibre-server[1877]: OPDS feeds advertised via BonJour at: 69.28.84.201 port: 8080

6단계 - 사용자 인증 활성화

Calibre에 사용자 인증을 추가하여 라이브러리를 누구나 접근할 수 없도록 보호할 수 있습니다. 먼저 Calibre 서버를 중지합니다.

$ sudo systemctl stop calibre-server

Calibre는 사용자 자격 증명을 저장하기 위해 SQLite 데이터베이스를 사용합니다. 사용자를 추가하기 위해 Calibre의 사용자 관리 스크립트를 시작합니다.

$ sudo calibre-server --manage-users

네 가지 옵션이 제공되며 선택을 요청받습니다. 1을 눌러 새 사용자를 추가하고 사용자 이름과 비밀번호를 제공하여 새 사용자를 추가합니다.

1) Add a new user
2) Edit an existing user
3) Remove a user
4) Cancel

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

다음으로 인증을 확인하기 위해 서비스 파일을 편집해야 합니다. 파일을 편집을 위해 엽니다.

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

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

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

Ctrl+W를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력하여 파일을 닫습니다.

서비스 데몬을 다시 로드하고 서비스를 시작합니다.

$ sudo systemctl daemon-reload
$ sudo systemctl start calibre-server

라이브러리 URL을 열면 접근을 허용하기 전에 사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다. 자격 증명을 입력하고 Sign in 버튼을 눌러 라이브러리에 접근합니다.

Calibre Server Authentication Prompt

7단계 - 라이브러리에 책 자동 추가

Calibre는 Cron 작업을 사용하여 라이브러리에 책을 자동으로 추가할 수 있습니다. 정기적으로 새 책을 위해 디렉토리를 감시하여 라이브러리에 추가합니다. 이는 책을 디렉토리에 업로드하면 수동 개입 없이도 곧 라이브러리에 나타나는 가장 빠른 방법입니다.

첫 번째 단계는 감시 디렉토리를 만드는 것입니다.

$ mkdir ~/calibre-watch
$ cd ~/calibre-watch

Project Gutenberg에서 이 디렉토리에 레오 톨스토이의 책 전쟁과 평화를 다운로드합니다.

$ wget https://www.gutenberg.org/ebooks/2600.kindle.images -O warandpeace.mobi

이번에는 이미지가 포함된 버전을 다운로드하고 있습니다. Project Gutenberg에서는 책마다 다릅니다. 일부는 이미지 버전이 제공되지만 일부는 제공되지 않습니다. Calibre는 두 형식 모두 잘 작동합니다.

Crontab 편집기를 엽니다.

$ crontab -e

이것이 Crontab을 처음 사용하는 경우 편집기를 선택하라는 메시지가 표시됩니다.

no crontab for  - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]:

가장 쉽게 조작할 수 있는 Nano 편집기를 선택하기 위해 1을 입력합니다.

파일 하단에 다음 명령을 추가합니다.

*/5 * * * * calibredb add /home//calibre-watch/ -r --with-library http://localhost:8080#calibre-library --username mycalibreuser --password StrongPassword! && rm -r /home//calibre-watch/*

이 스크립트는 /home//calibre-watch 디렉토리의 모든 파일을 Calibre 라이브러리에 추가하고 더 이상 필요하지 않기 때문에 원본 파일을 삭제합니다. 위 작업은 5분마다 실행됩니다. 을 Linux 시스템 사용자 이름으로 바꾸고 적절한 위치에 Calibre 자격 증명을 추가하세요.

Ctrl+W를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력하여 파일을 닫습니다. 몇 분 기다린 후 Calibre 서버 사이트를 새로 고쳐 방금 추가한 책이 라이브러리에 나타나는지 확인합니다.

8단계 - Nginx 설치

Ubuntu 22.04에는 이전 버전의 Nginx가 기본 제공됩니다. 최신 버전을 설치하려면 공식 Nginx 저장소를 다운로드해야 합니다.

Nginx의 서명 키를 가져옵니다.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Nginx의 안정적인 버전을 위한 저장소를 추가합니다.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

시스템 저장소를 업데이트합니다.

$ sudo apt update

Nginx를 설치합니다.

$ sudo apt install nginx

설치를 확인합니다.

$ nginx -v
nginx version: nginx/1.22.0

9단계 - SSL 설치

현재 Calibre는 IP 주소를 통해 HTTP 포트에서 노출되어 있습니다. 이를 더 안전하게 만들기 위해 SSL 인증서를 사용하여 전용 도메인을 통해 접근할 수 있도록 설정합니다.

Calibre의 SSL 인증서를 생성하기 위해 Certbot을 설치해야 합니다. Ubuntu의 저장소를 사용하여 Certbot을 설치하거나 Snapd 도구를 사용하여 최신 버전을 가져올 수 있습니다. 우리는 Snapd 버전을 사용할 것입니다.

Ubuntu 22.04에는 기본적으로 Snapd가 설치되어 있습니다. 다음 명령을 실행하여 Snapd 버전이 최신인지 확인합니다.

$ sudo snap install core

Certbot을 설치합니다.

$ sudo snap install --classic certbot

다음 명령을 사용하여 Certbot 명령이 /usr/bin 디렉토리에서 실행될 수 있도록 심볼릭 링크를 생성합니다.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

다음 명령을 실행하여 SSL 인증서를 생성합니다.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d calibre.example.com

위 명령은 서버의 /etc/letsencrypt/live/calibre.example.com 디렉토리에 인증서를 다운로드합니다.

Diffie-Hellman 그룹 인증서를 생성합니다.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

파일 /etc/letsencrypt/renewal/calibre.example.com.conf를 편집을 위해 엽니다.

$ sudo nano /etc/letsencrypt/renewal/calibre.example.com.conf

하단에 다음 코드를 붙여넣습니다.

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Ctrl + X를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력하여 파일을 닫습니다.

우리는 Certbot의 독립 실행형 옵션을 사용하여 SSL 인증서를 생성했습니다. 인증서를 생성하기 위해 웹 서버를 실행하므로 갱신 중에는 Nginx를 종료해야 합니다. pre_hookpost_hook 명령은 갱신 전후에 자동으로 Nginx 서버를 종료하고 다시 시작하여 수동 개입이 필요하지 않도록 합니다.

SSL 갱신이 잘 작동하는지 확인하려면 프로세스를 드라이 런으로 실행합니다.

$ sudo certbot renew --dry-run

오류가 없으면 모든 준비가 완료된 것입니다. 인증서는 자동으로 갱신됩니다.

10단계 - Nginx 구성

파일 /etc/nginx/nginx.conf를 편집을 위해 엽니다.

$ sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf; 줄 앞에 다음 줄을 추가합니다.

server_names_hash_bucket_size  64;

Ctrl + X를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력하여 파일을 닫습니다.

파일 /etc/nginx/conf.d/calibre.conf를 생성하고 편집을 위해 엽니다.

$ sudo nano /etc/nginx/conf.d/calibre.conf

다음 코드를 붙여넣습니다. calibre.example.com을 귀하의 도메인 이름으로 바꾸세요. client_max_body_size 변수의 값을 50MB로 설정했습니다. 필요에 따라 변경할 수 있습니다.

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    http2_push_preload on; # Enable HTTP/2 Server Push
    
    # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
    # prevent replay attacks.
    #
    # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
    ssl_early_data on;

    server_name calibre.example.com;

    client_max_body_size 50M;

    access_log  /var/log/nginx/calibre.access.log;
    error_log   /var/log/nginx/calibre.error.log;

    ssl_certificate      /etc/letsencrypt/live/calibre.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/calibre.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/calibre.example.com/chain.pem;
    
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    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_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;        
    }
}
# enforce HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name  calibre.example.com;
    return 301   https://$host$request_uri;
}

Ctrl + X를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력하여 파일을 닫습니다.

Nginx 구성을 확인합니다.

$ sudo nginx -t

구성 파일을 활성화하기 위해 Nginx 서버를 재시작합니다.

$ sudo systemctl restart nginx

브라우저에서 https://calibre.example.com을 방문하여 Calibre에 접근합니다. Cron을 통해 추가된 책도 라이브러리에 있는 것을 확인할 수 있습니다.

Calibre Library Refresh

결론

이로써 Nginx를 사용하여 Ubuntu 22.04 머신에 Calibre 서버를 설치하는 튜토리얼이 마무리되었습니다. 또한 Calibre를 구성하여 기본 인증을 활성화하고 새 책을 자동으로 추가하는 방법을 배웠습니다. Calibre 서버는 많은 명령줄 도구를 제공합니다. 더 많은 정보를 원하시면 Calibre 문서를 방문하세요. 질문이 있으시면 아래 댓글에 남겨주세요.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.