Программа 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
Создание библиотеки
Сервер почти готов к запуску. Добавьте несколько книг в библиотеку, чтобы посмотреть, как это работает. Рассмотрим два способа:
- Добавление электронных книг напрямую.
- Импортирование готовой библиотеки 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 выберите другой номер).