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:
Kiểm tra trạng thái của tường lửa.
Bạn sẽ thấy nội dung tương tự như sau.
Cho phép cổng HTTP và HTTPs.
Kiểm tra lại trạng thái để xác nhận.
Bước đầu tiên là cài đặt một số phụ thuộc.
Tải xuống trình cài đặt máy chủ Calibre.
Làm cho tập lệnh cài đặt có thể thực thi được.
Chạy trình cài đặt.
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.
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.
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 đó.
Bạn có thể thêm nhiều sách cùng lúc theo cách sau.
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ự.
Đ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ở 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.
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.
Dán mã sau vào đó.
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ụ.
Bật và khởi động dịch vụ Calibre.
Kiểm tra trạng thái của dịch vụ.
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.
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.
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.
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.
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ụ.
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 đầu tiên là tạo một thư mục theo dõi.
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.
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.
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.
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Cập nhật kho lưu trữ hệ thống.
Cài đặt Nginx.
Xác minh cài đặt.
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.
Cài đặt 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.
Chạy lệnh sau để tạo Chứng chỉ SSL.
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ở tệp /etc/letsencrypt/renewal/calibre.example.com.conf để chỉnh sửa.
Dán mã sau vào cuối.
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_hook và post_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.
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.
Thêm dòng sau trước dòng include /etc/nginx/conf.d/*.conf;.
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.
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.
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.
Khởi động lại máy chủ Nginx để bật các tệp cấu hình.
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.
- 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.
Đ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
Mã:
Trạng thái: activeTo Action From-- ------ ----OpenSSH ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)
Mã:
$ sudo ufw allow http$ sudo ufw allow https
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
Mã:
$ wget https://download.calibre-ebook.com/linux-installer.sh
Mã:
$ chmod +x ./linux-installer.sh
Mã:
$ sudo ./linux-installer.sh
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
Tạo một thư mục cho thư viện Calibre.
Mã:
$ mkdir calibre-library
Mã:
$ calibredb add adventuresofsherlockholmes.mobi --with-library calibre-library/Đã thêm id sách: 1
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
Mã:
calibre server listening on 0.0.0.0:8080OPDS feeds advertisement via BonJour at: your_server_ip port: 8080
Mã:
$ sudo ufw allow 8080
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
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
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
Mã:
$ sudo systemctl enable calibre-server$ sudo systemctl start calibre-server
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
Mã:
$ sudo calibre-server --manage-users
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!
Mã:
$ sudo nano /etc/systemd/system/calibre-server.service
Mã:
...ExecStart=/opt/calibre/calibre-server "/home//calibre-library" --userdb "/home//.config/calibre/server-users.sqlite" --enable-local-write --enable-auth...
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
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
Mã:
$ wget https://www.gutenberg.org/ebooks/2600.kindle.images -O warandpeace.mobi
Mở trình soạn thảo Crontab.
Mã:
$ crontab -e
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
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
Mã:
$ sudo apt update
Mã:
$ sudo apt install nginx
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
Mã:
$ sudo snap install --classic certbot
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d calibre.example.com
Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo nano /etc/letsencrypt/renewal/calibre.example.com.conf
Mã:
pre_hook = systemctl stop nginxpost_hook = systemctl start nginx
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_hook và post_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
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
Mã:
server_names_hash_bucket_size 64;
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
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;}
Xác minh cấu hình Nginx của bạn.
Mã:
$ sudo nginx -t
Mã:
$ sudo systemctl restart nginx