Программа Calibre более широко известна как настольный клиент, но также она может выступать в качестве производительного сервера для обслуживания электронных книг. Calibre открывает доступ к книге из любой точки мира с любого устройства и позволяет делиться своей коллекцией книг.

Сервер предоставляет простой и удобный браузер, с помощью которого можно искать и загружать книги в библиотеку. Calibre имеет простой встроенный сайт (с мобильной версией), который позволяет загружать книги прямо в ридер.

Браузер Calibre работает с ридером Kindle Paperwhite, который может загружать книги даже на самые простые девайсы.

Данное руководство поможет установить и настроить Calibre/Calibre-Web на сервере Ubuntu 20.04, а также научит вас управлять электронными книгами с помощью команды calibredb.

Установка Calibre

Пакет Calibre можно найти в стандартном репозитории системы, но на сайте проекта размещена более современная версия.

Calibre часто обновляется, потому версии из репозитория системы быстро становятся устаревшими.

К счастью, разработчики Calibre упростили установку до одной команды. Чтобы установить пакет, нужно просто запустить на сервере следующую команду.

sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin

Команда может выдать несколько предупреждений о неудачной интеграции настольного клиента, но их можно проигнорировать, поскольку вы устанавливаете Calibre на удаленном сервере.

Брандмауэр

Вам нужно будет настроить брандмауэр, чтобы разрешить трафик на любой порт Calibre Server будет прослушиваться. По умолчанию используется 8080.

На сервере Ubuntu Firewall UFW можно настроить для этого:

ufw enable
ufw allow 8080

Установка зависимостей

Команда calibredb управляет библиотекой Calibre. С её помощью можно добавлять и перемещать книги, извлекать метаданные, выбирать обложку и т.п.

У этой команды есть пара зависимостей, без которых она не будет работать: это ImageMagick и xvfb (позволяет запустить Calibre без дисплея).

Чтобы установить эти зависимости, нужно просто обновить индекс пакетов и запустить следующие команды.

sudo apt-get update
sudo apt-get install xvfb
sudo apt-get install libnss3
sudo apt-get install imagemagick

Создание библиотеки

Сервер почти готов к запуску. Добавьте несколько книг в библиотеку, чтобы посмотреть, как это работает. Рассмотрим два способа:

  1. Добавление электронных книг напрямую.
  2. Импортирование готовой библиотеки Calibre (особенно полезно, если вы уже используете Calibre в качестве настольного клиента).

Загрузка книги

Для начала создайте каталог для библиотеки Calibre в домашнем каталоге.

mkdir -p ~/calibre-library/toadd

Теперь в домашнем каталоге есть два каталога. Первый, ~/calibre-library, для автоматической загрузки Calibre. Во второй каталог, toadd, вы сможете добавлять книги вручную.

Для работы загрузите несколько книг (например, с Gutenberg).

Перейдите в каталог toad:

cd ~/calibre-library/toadd

Загрузите книги:

wget https://gutenberg.org/ebooks/1112.kindle.noimages -O book.mobi

Чтобы правильно добавлять книги, Calibre использует расширения. Флаг –О позволяет выбрать более удобное имя файла. Если вы загрузили книгу в другом формате (например, в .epub), вам нужно указать в команде соответствующее расширение.

Добавление книги в базу Calibre

Теперь нужно добавить загруженные книги в базу Calibre с помощью команды calibredb и виртуального дисплея xvfb.

xvfb-run calibredb add ~/calibre-library/toadd/* --library-path ~/calibre-library

Символ звёздочки позволяет Calibre добавить все книги из каталога toadd в библиотеку (каталог calibre-library).

Команда может выдать ошибку из-за отсутствия обложек (файлы .mobi загружаются без картинок), однако это не помешает добавить книги в базу Calibre.

Теперь попробуйте запустить сервер:

calibre-server --with-library ~/calibre-library

Эта команда не вернёт никакого вывода, а просто останется в терминале. На данный момент это нормальное поведение. Теперь откройте браузер и перейдите по ссылке:

http://your_server_ip:8080

На экране появится главная страница библиотеки.

Перейдите по ссылке All books. Вы увидите в списке добавленные только что книги. Чтобы загрузить какую-либо книгу, нажмите Get.

Загрузка готовой библиотеки Calibre

Если вы уже используете Calibre и у вас есть готовая библиотека, вы можете загрузить её на удалённый сервер.

Перейдите в папку библиотеки и найдите в ней файл metadata.db. Если такой файл существует, то библиотека не нуждается в дополнительной настройке.

Загрузите библиотеку на сервер. Затем запустите команду:

calibre-server --with-library ~/calibre-library

Теперь вся библиотека будет доступна на сервере. Чтобы добавить в неё новую книгу, поместите её в каталог toadd.

Перечислите содержимое библиотеки

Получите список всех книг в библиотеке.

calibredb list --with-library ~/calibre-library
id title                           authors             
1 The Tragedy of Romeo and Juliet William Shakespeare

Удалить книги из библиотеки

calibredb требует идентификационного номера для удаления книги. Например, удалить книгу ID 1:

calibredb remove 1 --with-library ~/calibre-library

Чтобы снова добавить книгу:

calibredb add book.mobi --with-library ~/calibre-library/toadd

Запуск Calibre в фоновом режиме

Теперь нужно перевести команду calibre-server в фоновый режим.

Используйте nano, чтобы создать новый файл сервиса.

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

Добавьте следующее содержимое в calibre-server.service.

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

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

[Install]
WantedBy=multi-user.target

Сохраните и закройте сценарий.

Запустите сервер:

sudo systemctl enable calibre-server.service
sudo systemctl start calibre-server.service

Управлять сервером можно с помощью команд:

sudo systemctl stop calibre-server.service
sudo systemctl start calibre-server.service
sudo systemctl restart calibre-server.service

По умолчанию у сайта есть мобильная версия, которая позволяет читать книги с устройств с небольшим экраном.

Добавить аутентификацию

Добавьте аутентификацию, чтобы предотвратить несанкционированный доступ к библиотеке электронных книг.

Остановите сервер.

sudo systemctl stop calibre-server.service

Запустите скрипт управления пользователями:

calibre-server --manage-users

Следуйте инструкциям, чтобы сделать новый пользователь с именем calibreuser и выбрать безопасный пароль. Убедитесь, что вы видите сообщение подтверждения:

Пользователь calibreuser успешно создан!

Отредактируйте файл службы Calibre, чтобы включить аутентификацию.

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

Заменить эту строку:

ExecStart=/usr/bin/calibre-server --enable-local-write /home/calibre/calibre-library

С участием:

ExecStart=/usr/bin/calibre-server --enable-auth --enable-local-write /home/calibre/calibre-library

Перезагрузите сервисные файлы с systemd и перезапустите службу.

sudo systemctl daemon-reload
sudo systemctl start calibre-server.service

Аутентификация теперь требуется для доступа к серверу.

Автоматическое добавление книг с помощью cron

Напишите простой cronjob для автоматического обновления библиотеки.

Например, команда будет проверять каталог toadd на наличие новых книг каждые 15 минут, добавлять (копировать) новые книги в библиотеку Calibre, а затем удалять исходный файл из каталога.

Чтобы создать cronjob, выполните:

sudo crontab -u calibre -e

Добавьте в конец файла:

*/15 * * * * xvfb-run calibredb add /home/calibre/calibre-library/toadd/ --recurse --library-path /home/calibre/calibre-library && rm -rf /home/calibre/calibre-library/toadd/*

Примечание: Результаты поиска в Calibre не сортируются по релевантности. Потому если вы вводите общий термин, пытаясь найти какую-то книгу, вы найдёте много других книг. Вы можете выполнять поиск по названию или по автору, а также сортировать результат в алфавитном порядке.

Запуск Calibre Web

Calibre-Web - это веб-приложение, предоставляющее чистый интерфейс для просмотра, чтения и загрузки электронных книг, используя существующую базу данных Calibre.

Перед установкой Calibre-Web мы должны установить компонент: Python3-Pip

sudo apt-get install python3-pip
git clone --branch 0.6.12 https://github.com/janeczku/calibre-web.git

Мы выполняем установку Calibre-Web:

python3 -m pip install --system --target vendor -r requirements.txt

Запуск Calibre-Web

python3 cps.py

Теперь откройте браузер и перейдите по ссылке: http://your_server_ip:8083, указываем путь к каталогу с библиотекой /home/calibre/calibre-library (в которой должен располагаться файл metadata.db, используемый Calibre для хранения информации о книгах в библиотеке)

Логинимся с дефолтными admin:admin123. На экране появится главная страница библиотеки.

Запуск Calibre-Web в фоновом режиме

Теперь нужно перевести команду calibre-web в фоновый режим.

Используйте nano, чтобы создать новый файл сервиса.

sudo nano /etc/systemd/system/cps.service

Добавьте следующее содержимое на calibre-server.service.

[Unit]
Description=Calibre-Web
After=network.target

[Service]
Type=simple
User=calibre
Group=calibre
ExecStart=/usr/bin/python3 /home/calibre/calibre-library/calibre-web/cps.py
WorkingDirectory=/home/calibre/calibre-library/calibre-web

[Install]
WantedBy=multi-user.target

Сохраните и закройте сценарий.

Запустите сервер:

sudo systemctl enable cps.service
sudo systemctl start cps.service

Темы Calibre Web

Из коробки есть поддержка двух цветовых тем — стандартная, светлая.

Заключение

При работе с Calibre/Calibre-Web важно постоянно поддерживать сервер. Для этого нужно помнить о правах на публикацию и обновлениях программы.

Авторские права

Вы можете публиковать книги из Gutenberg или подобных сайтов (т.е., книги, срок авторского права которых уже истёк) без дополнительных разрешений. Пользуясь подобными сервисами, следуйте их условиям.

Публикуя платные книги или книги, на которые действуют авторские права, помните о DRM (управлении цифровыми правами). Такие книги, как правило, бывают доступны только для чтения с зарегистрированного устройства.

Само собой разумеется, вы не должны публиковать пиратские или незаконные копии книг.

Обновления

Программное обеспечение Calibre часто обновляется. Как правило, разработчики выпускают пачти и обновления некоторых функций. Рекомендуется своевременно обновлять сервер электронной библиотеки.

Следить за обновлениями можно здесь.

Безопасность

Даже если вы не публикуете IP-адрес сервера, вредоносные сценарии могут просканировать его на наличие открытых портов. Calibre не ограничивает количество попыток входа, потому есть вероятность атак методом подбора пароля. Во избежание взлома:

  • Никогда не используйте простые имена пользователей (admin, calibre или ebooks).
  • Выбирайте сложный уникальный пароль.
  • Запустите Calibre на нестандартном порте (вместо 80 выберите другой номер).