Cách cài đặt Calibre Ebook Server trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Calibre là trình quản lý sách điện tử miễn phí và mã nguồn mở. Nó hoạt động như một ứng dụng máy tính để bàn đa nền tảng cùng với một thành phần máy chủ. Thành phần máy tính để bàn có thể quản lý thư viện sách điện tử của bạn trên một thiết bị duy nhất. Và thành phần máy chủ cho phép bạn:
  • Truy cập sách của bạn từ bất kỳ đâu trên thế giới.
  • Dễ dàng chuyển sách của bạn sang thiết bị di động.
  • Chia sẻ sách với bạn bè và gia đình.
  • Đọc sách điện tử trực tiếp trên web.
Trong hướng dẫn này, bạn sẽ học cách cài đặt máy chủ Calibre trên máy Ubuntu 22.04.

Điều kiện tiên quyết​


  • Một máy chủ chạy Ubuntu 22.04.

  • Một người dùng không phải root có quyền sudo.

  • Tường lửa đơn giản (UFW) được bật và đang chạy.

  • Một tên miền đủ điều kiện trỏ đến máy chủ. Đối với hướng dẫn này, chúng tôi sẽ sử dụng miền calibre.example.com.

  • Mọi thứ đều được cập nhật.
Mã:
$ sudo apt update && sudo apt upgrade

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên trước khi cài đặt bất kỳ gói nào là cấu hình tường lửa để cho phép kết nối HTTP và HTTPS.

Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy nội dung tương tự như sau.
Mã:
Trạng thái: activeTo Action From-- ------ ----OpenSSH ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)
Cho phép cổng HTTP và HTTPs.
Mã:
$ sudo ufw allow http$ sudo ufw allow https
Kiểm tra lại trạng thái để xác nhận.
Mã:
$ sudo ufw statusTrạng thái: activeĐến Hành động Từ-- ------ ----OpenSSH ALLOW Anywhere80/tcp ALLOW Anywhere443/tcp ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)80/tcp (v6) ALLOW Anywhere (v6)443/tcp (v6) ALLOW Anywhere (v6)

Bước 2 - Tải xuống và cài đặt máy chủ Calibre​

Ubuntu 22.04 đi kèm với Calibre nhưng tốt hơn là cài đặt trực tiếp để lấy phiên bản mới nhất.

Bước đầu tiên là cài đặt một số phụ thuộc.
Mã:
$ sudo apt install libopengl0 libxkbcommon-x11-0 libegl1 libfontconfig libgl1-mesa-glx
Tải xuống trình cài đặt máy chủ Calibre.
Mã:
$ wget https://download.calibre-ebook.com/linux-installer.sh
Làm cho tập lệnh cài đặt có thể thực thi được.
Mã:
$ chmod +x ./linux-installer.sh
Chạy trình cài đặt.
Mã:
$ sudo ./linux-installer.sh
Bạn sẽ nhận được một số cảnh báo vì trình cài đặt mong đợi một máy tính để bàn chứ không phải máy chủ. Bạn có thể bỏ qua các cảnh báo một cách an toàn.

Bước 3 - Tạo Thư viện Calibre và thêm cuốn sách đầu tiên của bạn​

Bước tiếp theo là thiết lập thư viện Calibre và thêm một số cuốn sách vào đó. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ tải xuống cuốn sách Những cuộc phiêu lưu của Sherlock Holmes của Arthur Conan Doyle từ Dự án Gutenberg.
Mã:
$ wget http://www.gutenberg.org/ebooks/1661.kindle.noimages -O adventuresofsherlockholmes.mobi
Luôn tải phiên bản Kindle của Sách từ trang web. Ở đây, chúng tôi đổi tên phiên bản Kindle thành filename.mobi vì định dạng Mobi được hỗ trợ gốc trong Kindle, đó là lý do tại sao nó được đặt tên như vậy trên trang web. Phiên bản này cũng cung cấp các tùy chọn định dạng tốt hơn so với phiên bản Epub.

Tạo một thư mục cho thư viện Calibre.
Mã:
$ mkdir calibre-library
Thêm cuốn sách bạn vừa tải xuống vào thư viện bằng lệnh calibredb. Chúng tôi đã chỉ định vị trí của thư viện trong chính lệnh đó.
Mã:
$ calibredb add adventuresofsherlockholmes.mobi --with-library calibre-library/Đã thêm id sách: 1
Bạn có thể thêm nhiều sách cùng lúc theo cách sau.
Mã:
$ calibredb add *.mobi --with-library calibre-library/

Bước 4 - Khởi động Calibre Server​

Bây giờ chúng ta đã có sách sẵn sàng, đã đến lúc khởi động máy chủ Calibre.
Mã:
$ calibre-server calibre-library
Lệnh calibre-server lấy vị trí của thư viện làm đối số của nó. Bạn sẽ thấy một kết quả tương tự.
Mã:
calibre server listening on 0.0.0.0:8080OPDS feeds advertisement via BonJour at: your_server_ip port: 8080
Điều này sẽ hiển thị máy chủ Calibre tại cổng 8080. Để xem máy chủ, trước tiên bạn cần mở cổng. Chạy lệnh sau để mở cổng 8080.
Mã:
$ sudo ufw allow 8080
Mở URL http://<yourserverIP>:8080/ trong trình duyệt của bạn và bạn sẽ thấy màn hình sau. Màn hình sẽ hiển thị tối hoặc sáng tùy thuộc vào chủ đề Hệ điều hành bạn chọn.



Nhấp vào liên kết calibre-library để xem sách bạn đã thêm ở bước trước.



Đóng máy chủ bằng cách nhấn các phím Ctrl + C trên thiết bị đầu cuối của bạn.

Bạn có thể sử dụng một cổng khác để hiển thị máy chủ Calibre. Để thực hiện việc đó, hãy sử dụng lệnh sau. Bạn sẽ cần đảm bảo rằng cổng được mở trong tường lửa.
Mã:
$ calibre-server calibre-library --port 7654

Bước 5 - Tạo tệp dịch vụ systemd​

Để quy trình máy chủ Calibre hoạt động liên tục và tồn tại sau khi khởi động lại, bạn cần tạo tệp dịch vụ systemd cho quy trình đó.

Tạo tệp có tên calibre-server.service trong thư mục /etc/sytemd/system/ và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/systemd/system/calibre-server.service
Dán mã sau vào đó.
Mã:
[Unit]Mô tả=Calibre Máy chủAfter=network.target[Service]Type=simpleUser=Group=ExecStart=/opt/calibre/calibre-server /home//calibre-library --enable-local-write[Install]WantedBy=multi-user.target
Cờ --enable-local-write cấp cho máy chủ quyền ghi để thêm sách mới vào thư viện. Điều này là do bạn không thể thêm sách bằng lệnh calibredb khi máy chủ đang chạy.

Thay thế <username> bằng tên người dùng hệ thống Linux của bạn trong mã trên. Lưu và đóng tệp bằng cách nhấn Ctrl+W và nhập Y khi được nhắc.

Tải lại daemon dịch vụ để kích hoạt tệp dịch vụ.
Mã:
$ sudo systemctl daemon-reload
Bật và khởi động dịch vụ Calibre.
Mã:
$ sudo systemctl enable calibre-server$ sudo systemctl start calibre-server
Kiểm tra trạng thái của dịch vụ.
Mã:
$ sudo systemctl status calibre-server? calibre-server.service - Calibre Server Đã tải: đã tải (/etc/systemd/system/calibre-server.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Hai 2022-07-25 07:23:42 UTC; 15 giây trước PID chính: 1877 (BonJour) Nhiệm vụ: 13 (giới hạn: 2241) Bộ nhớ: 53,3M CPU: 762ms CGroup: /system.slice/calibre-server.service ??1877 /opt/calibre/bin/calibre-server /home//calibre-library --enable-local-write25 tháng 7 07:23:42 calibre systemd[1]: Đã khởi động Calibre Server.25 tháng 7 07:23:42 calibre calibre-server[1877]: QStandardPaths: XDG_RUNTIME_DIR chưa được đặt, mặc định là '/tmp/runtime-'25/07 07:23:42 calibre calibre-server[1877]: máy chủ calibre đang lắng nghe trên 0.0.0.0:808025/07 07:23:43 calibre calibre-server[1877]: Nguồn cấp OPDS được quảng cáo qua BonJour tại: 69.28.84.201 cổng: 8080

Bước 6 - Bật xác thực người dùng​

Bạn có thể thêm xác thực người dùng vào Calibre để bảo vệ thư viện của mình không bị bất kỳ ai truy cập. Trước tiên, hãy dừng máy chủ Calibre.
Mã:
$ sudo systemctl stop calibre-server
Calibre sử dụng cơ sở dữ liệu SQLite để lưu trữ thông tin xác thực của người dùng. Khởi động tập lệnh quản lý người dùng của Calibre để thêm người dùng.
Mã:
$ sudo calibre-server --manage-users
Bạn sẽ được cung cấp bốn tùy chọn và được yêu cầu lựa chọn. Nhấn 1 để thêm người dùng mới và cung cấp tên người dùng và mật khẩu để hoàn tất việc thêm người dùng mới.
Mã:
1) Thêm người dùng mới2) Chỉnh sửa người dùng hiện có3) Xóa người dùng4) HủyBạn muốn làm gì? [1-4]: (Nhấn 1)Nhập tên người dùng: howtoforgeNhập mật khẩu mới cho howtoforge:Nhập lại mật khẩu mới cho howtoforge để xác minh:Người dùng howtoforge đã được thêm thành công!
Tiếp theo, bạn cần chỉnh sửa tệp dịch vụ để kiểm tra xác thực. Mở tệp để chỉnh sửa.
Mã:
$ sudo nano /etc/systemd/system/calibre-server.service
Thêm cờ --enable-auth vào cuối dòng bắt đầu bằng ExecStart để bật xác thực người dùng.
Mã:
...ExecStart=/opt/calibre/calibre-server "/home//calibre-library" --userdb "/home//.config/calibre/server-users.sqlite" --enable-local-write --enable-auth...
Lưu và đóng tệp bằng cách nhấn Ctrl+W và nhập Y khi được nhắc.

Tải lại daemon dịch vụ và khởi động dịch vụ.
Mã:
$ sudo systemctl daemon-reload$ sudo systemctl start calibre-server
Nếu bạn mở URL thư viện, bạn sẽ được nhắc nhập tên người dùng và mật khẩu trước khi cho phép bạn truy cập vào đó. Nhập thông tin đăng nhập của bạn và nhấn nút Đăng nhập để truy cập vào thư viện.


Bước 7 - Tự động thêm Sách vào thư viện​

Calibre cho phép bạn tự động thêm sách vào thư viện bằng cách sử dụng công việc Cron. Công cụ này thực hiện việc này bằng cách theo dõi thư mục theo các khoảng thời gian đều đặn để tìm sách mới rồi thêm chúng vào thư viện. Đây là cách nhanh nhất để thêm sách, nơi bạn có thể tải chúng lên thư mục và chúng sẽ sớm xuất hiện trong thư viện mà không cần bất kỳ sự can thiệp thủ công nào.

Bước đầu tiên là tạo một thư mục theo dõi.
Mã:
$ mkdir ~/calibre-watch$ cd ~/calibre-watch
Tải xuống cuốn sách Chiến tranh và hòa bình của Leo Tolstoy vào thư mục này từ Project Gutenberg.
Mã:
$ wget https://www.gutenberg.org/ebooks/2600.kindle.images -O warandpeace.mobi
Nếu bạn để ý, lần này chúng tôi đang tải xuống phiên bản có hình ảnh. Phiên bản này thay đổi tùy theo từng cuốn sách trên Project Gutenberg. Một số có phiên bản hình ảnh trong khi một số thì không. Calibre hoạt động tốt với cả hai định dạng.

Mở trình soạn thảo Crontab.
Mã:
$ crontab -e
Nếu đây là lần đầu tiên bạn sử dụng Crontab, bạn sẽ được yêu cầu chọn một trình soạn thảo.
Mã:
không có crontab cho  - sử dụng một trình soạn thảo trốngChọn một trình soạn thảo. Để thay đổi sau, hãy chạy 'select-editor'. 1. /bin/nano /dev/null
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Mã:
$ 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
Cập nhật kho lưu trữ hệ thống.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt.
Mã:
$ nginx -vphiên bản nginx: nginx/1.22.0

Bước 9 - Cài đặt SSL​

Hiện tại, Calibre được hiển thị trên cổng HTTP thông qua địa chỉ IP. Để bảo mật tốt hơn, chúng tôi sẽ cho phép truy cập thông qua tên miền chuyên dụng bằng chứng chỉ SSL.

Chúng tôi cần cài đặt Certbot để tạo chứng chỉ SSL cho Calibre. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Ubuntu hoặc lấy phiên bản mới nhất bằng công cụ Snapd. Chúng tôi sẽ sử dụng phiên bản Snapd.

Ubuntu 22.04 được cài đặt Snapd theo mặc định. Chạy các lệnh sau để đảm bảo phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến thư mục /usr/bin.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Chạy lệnh sau để tạo Chứng chỉ SSL.
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d calibre.example.com
Lệnh trên sẽ tải xuống chứng chỉ vào /etc/letsencrypt/live/calibre.example.com thư mục trên máy chủ của bạn.

Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Mở tệp /etc/letsencrypt/renewal/calibre.example.com.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/letsencrypt/renewal/calibre.example.com.conf
Dán mã sau vào cuối.
Mã:
pre_hook = systemctl stop nginxpost_hook = systemctl start nginx
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Chúng tôi đã tạo chứng chỉ SSL bằng tùy chọn độc lập của Certbot. Nó chạy máy chủ web của mình để tạo chứng chỉ, nghĩa là Nginx phải được tắt trong quá trình gia hạn. Các lệnh pre_hookpost_hook chạy trước và sau khi gia hạn để tự động tắt và khởi động lại máy chủ Nginx, do đó không cần can thiệp thủ công.

Để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không, hãy chạy thử quy trình.
Mã:
$ sudo certbot renew --dry-run
Nếu bạn không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 10 - Cấu hình Nginx​

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tạo và mở tệp /etc/nginx/conf.d/calibre.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/calibre.conf
Dán mã sau vào đó. Thay thế calibre.example.com bằng tên miền của bạn. Chúng tôi đã đặt giá trị của biến client_max_body_size thành 50MB. Bạn có thể thay đổi tùy theo yêu cầu của mình.
Mã:
server { listen 443 ssl http2; listen [::]:443 ssl http2; http2_push_preload on; # Bật HTTP/2 Server Push # Bật 0-RTT của TLSv1.3. Sử dụng $ssl_early_data khi tạo proxy ngược để # ngăn chặn các cuộc tấn công phát lại. # # @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 5 phút; ssl_session_cache shared:MozSSL:10 phút; ssl_session_tickets tắt; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers bật; 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 bật; ssl_stapling_verify bật; ssl_dhparam /etc/ssl/certs/dhparam.pem; vị trí / { proxy_pass http://127.0.0.1:8080; proxy_set_header Máy chủ $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; }}# thực thi HTTPSmáy chủ { lắng nghe 80; lắng nghe [::]:80; tên máy chủ calibre.example.com; trả về 301 https://$host$request_uri;}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh cấu hình Nginx của bạn.
Mã:
$ sudo nginx -t
Khởi động lại máy chủ Nginx để bật các tệp cấu hình.
Mã:
$ sudo systemctl restart nginx
Truy cập https://calibre.example.com trong trình duyệt của bạn để truy cập Calibre. Bạn có thể thấy rằng cuốn sách được thêm qua Cron cũng có sẵn trong thư viện.


Kết luận​

Như vậy là kết thúc hướng dẫn của chúng tôi về cách cài đặt Calibre Server trên máy Ubuntu 22.04 bằng Nginx. Chúng tôi cũng đã cấu hình Calibre để bật xác thực cơ bản và thêm hỗ trợ cho việc tự động thêm sách mới. Calibre Server được cung cấp kèm theo rất nhiều công cụ dòng lệnh. Để tìm hiểu thêm về chúng, bạn có thể truy cập Tài liệu Calibre. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên