Поиск по сайту:

Как установить сервер электронных книг Calibre на Ubuntu 22.04


Это руководство существует для этих версий ОС

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

На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Загрузите и установите сервер Caliber.
  4. Шаг 3. Создайте библиотеку Calibre и добавьте свою первую книгу
  5. Шаг 4. Запустите сервер Caliber
  6. Шаг 5. Создайте файл службы systemd
  7. Шаг 6. Включите аутентификацию пользователя
  8. Шаг 7. Автоматическое добавление книг в библиотеку
  9. Шаг 8. Установите Nginx
  10. Шаг 9. Установите SSL
  11. Шаг 10. Настройка Nginx
  12. Заключение

Calibre — бесплатный менеджер электронных книг с открытым исходным кодом. Он работает как кроссплатформенное настольное приложение вместе с серверным компонентом. Настольный компонент может управлять вашей библиотекой электронных книг на одном устройстве. А серверная составляющая позволяет:

  • Доступ к своим книгам из любой точки мира.
  • Легко переносите свои книги на мобильные устройства.
  • Поделитесь книгами с друзьями и семьей.
  • Читайте электронные книги прямо в Интернете.

В этом руководстве вы научитесь устанавливать сервер Calibre на компьютер с Ubuntu 22.04.

Предпосылки

  • A server running Ubuntu 22.04.

  • A non-root user with sudo privileges.

  • The Uncomplicated Firewall(UFW) is enabled and running.

  • A Fully Qualified domain name pointed to the server. For our tutorial, we will be using the domain calibre.example.com.

  • Everything is updated.

    $ 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 - Загрузите и установите сервер Caliber

Ubuntu 22.04 поставляется с Calibre, но лучше установить его напрямую, чтобы получить последнюю версию.

Первым шагом является установка некоторых зависимостей.

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

Загрузите установщик сервера Caliber.

$ 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 с сайта. Здесь мы переименовываем версию Kindle в filename.mobi, потому что формат Mobi изначально поддерживается в Kindle, поэтому он так назван на сайте. Он также предлагает лучшие параметры форматирования, чем версия 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 — Запустите сервер Caliber

Теперь, когда у нас есть готовые книги, пришло время запустить сервер Caliber.

$ calibre-server calibre-library

Команда cale-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/ в своем браузере, и вы увидите следующий экран. Экран будет отображаться как темный или светлый в зависимости от выбора темы вашей операционной системы.

Нажмите на ссылку cauli-library, чтобы просмотреть книгу, которую вы добавили на предыдущем шаге.

Закройте сервер, нажав клавиши Ctrl + C на вашем терминале.

Вы можете использовать другой порт для доступа к серверу Caliber. Для этого используйте следующую команду. Вам нужно будет убедиться, что порт открыт в брандмауэре.

$ calibre-server calibre-library --port 7654

Шаг 5 — Создайте служебный файл systemd

Чтобы процесс сервера Calibre оставался постоянным и выдерживал перезагрузки, вам необходимо создать для него служебный файл systemd.

Создайте файл с именем cale-server.service в каталоге /etc/sytemd/system/ и откройте его для редактирования.

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

Вставьте в него следующий код.

[Unit]
Description=Calibre 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

Флаг --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/<username>/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-<username>'
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, чтобы защитить свою библиотеку от посторонних. Во-первых, остановите сервер Caliber.

$ sudo systemctl stop calibre-server

Calibre использует базу данных SQLite для хранения учетных данных пользователя. Запустите сценарий управления пользователями Calibers, чтобы добавить пользователя.

$ 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

Добавьте флаг --enable-auth в конец строки, начинающейся с ExecStart, чтобы включить аутентификацию пользователя.

...
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

Если вы откроете URL-адрес библиотеки, вам будет предложено ввести имя пользователя и пароль, прежде чем разрешить доступ к ней. Введите свои учетные данные и нажмите кнопку «Войти», чтобы получить доступ к библиотеке.

Шаг 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. У некоторых есть доступные версии изображений, а у некоторых нет. Калибр прекрасно работает с любым форматом.

Откройте редактор Crontab.

$ crontab -e

Если вы впервые используете Crontab, вам будет предложено выбрать редактор.

no crontab for <username> - 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]:

Введите 1, чтобы выбрать редактор Nano, так как с ним проще всего работать.

Добавьте следующую команду в конец файла.

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

Этот сценарий добавит все файлы из каталога /home//calibe-watch в библиотеку caliber и удалит все исходные файлы, так как они больше не нужны. Вышеупомянутое задание будет выполняться каждые 5 минут. Замените именем пользователя вашей системы Linux и добавьте свои учетные данные Caliber в соответствующих местах.

Сохраните и закройте файл, нажав Ctrl+W и введя Y при появлении запроса. Подождите несколько минут и перезагрузите сайт калибровочного сервера, чтобы только что добавленная книга появилась в библиотеке.

Шаг 8 — Установите Nginx

Ubuntu 22.04 поставляется с более старой версией Nginx. Чтобы установить последнюю версию, вам необходимо скачать официальный репозиторий Nginx.

Импортировать ключ подписи Nginxs.

$ 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

Установите Нгинкс.

$ sudo apt install nginx

Проверьте установку.

$ nginx -v
nginx version: nginx/1.22.0

Шаг 9 — Установите SSL

Прямо сейчас Caliber доступен через HTTP-порт через IP-адрес. Чтобы лучше защитить его, мы включим доступ через выделенный домен с использованием SSL-сертификата.

Нам нужно установить Certbot для создания SSL-сертификата для Caliber. Вы можете либо установить Certbot, используя репозиторий Ubuntu, либо получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.

Ubuntu 22.04 поставляется с установленным по умолчанию Snapd. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.

$ sudo snap install core

Установите Сертбот.

$ 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  -d calibre.example.com

Вышеупомянутая команда загрузит сертификат в каталог /etc/letsencrypt/live/calibre.example.com на вашем сервере.

Создайте групповой сертификат Диффи-Хеллмана.

$ 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 при появлении запроса.

Мы создали сертификат SSL, используя автономную опцию Certbot. Он запускает свой веб-сервер для создания сертификата, что означает, что Nginx должен быть отключен во время обновления. Команды pre_hook и post_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/calere.conf для редактирования.

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

Вставьте в него следующий код. Замените cale.example.com своим доменным именем. Мы установили значение переменной client_max_body_size на 50 МБ. Вы можете изменить его в соответствии с вашими требованиями.

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://calere.example.com в своем браузере, чтобы получить доступ к Calibre. Вы можете видеть, что книга, добавленная через Cron, также доступна в библиотеке.

Заключение

На этом мы завершаем наше руководство по установке Calibre Server на компьютер с Ubuntu 22.04 с использованием Nginx. Мы также настроили Caliber для включения базовой аутентификации и добавления поддержки автоматического добавления новых книг. Calibre Server поставляется с множеством инструментов командной строки. Чтобы узнать о них больше, вы можете посетить документацию Calibre. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.