Программа Calibre более широко известна как настольный клиент, но также она может выступать в качестве производительного сервера для обслуживания электронных книг. Calibre открывает доступ к книге из любой точки мира с любого устройства и позволяет делиться своей коллекцией книг.
Сервер предоставляет простой и удобный браузер, с помощью которого можно искать и загружать книги в библиотеку. Calibre имеет простой встроенный сайт (с мобильной версией), который позволяет загружать книги прямо в ридер.
Предпосылки
- Сервер с Ubuntu 22.04 в качестве ОС
- Права пользователя: пользователь root или обычный пользователь с привилегиями sudo
Обновите систему
Свежая установка Ubuntu 22.04 требует обновления пакетов до последних доступных версий.
sudo apt-get update -y && sudo apt-get upgrade -y
Установка Calibre
Пакет Calibre можно найти в стандартном репозитории системы, но на сайте проекта размещена более современная версия.
Calibre часто обновляется, потому версии из репозитория системы быстро становятся устаревшими.
К счастью, разработчики Calibre упростили установку до одной команды. Чтобы установить пакет, нужно просто запустить на сервере следующую команду.
sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin
Команда может выдать несколько предупреждений о неудачной интеграции настольного клиента, но их можно проигнорировать, поскольку вы устанавливаете Calibre на удаленном сервере.
Установка зависимостей
Команда 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 в качестве настольного клиента).
Создайте пользователя для запуска
sudo useradd -d /home/calibre -m calibre
Загрузка книги
Для начала создайте каталог для библиотеки Calibre в домашнем каталоге.
mkdir -p ~/calibre-library/toadd
Теперь в домашнем каталоге есть два каталога. Первый, ~/calibre-library
, для автоматической загрузки Calibre. Во второй каталог, toadd
, вы сможете добавлять книги вручную.
Для работы загрузите несколько книг (например, с Gutenberg).
Загрузите книгу:
wget -O /calibre-library/toadd/book.mobi https://gutenberg.org/ebooks/1112.kindle.noimages
Чтобы правильно добавлять книги, 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.
Настройте Nginx в качестве обратного прокси
sudo apt-get -y install nginx
Создайте обратный конфигурацию прокси-сервера для Calibre.
sudo nano /etc/nginx/sites-available/calibre.conf
Заполните файл следующей конфигурацией.
server {
server_name my.domain.tld;
listen 80;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $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;
}
}
Включите конфигурацию обратной прокси-сервера Calibre Nginx.
sudo ln -s /etc/nginx/sites-available/calibre.conf /etc/nginx/sites-enabled/calibre.conf
Проверка конфигурации и перезагрузите службу Nginx.
sudo nginx -t
sudo systemctl restart nginx.service
Загрузка готовой библиотеки 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=/opt/calibre/calibre-server --enable-local-write /home/calibre/calibre-library
[Install]
WantedBy=multi-user.target
Измените calibre и calibre на любого пользователя и группу, от которой вы хотите, чтобы сервер работал. Это должен быть тот же пользователь и группа, которым принадлежат файлы в папке библиотеки calibre. Обратите внимание, что обычно не рекомендуется запускать сервер с правами root. Также измените путь к папке библиотеки calibre в соответствии с вашей системой. При необходимости вы можете добавить несколько библиотек.
Сохраните и закройте сценарий.
Запустите сервер:
sudo systemctl enable calibre-server.service
sudo systemctl start 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 install python3-pip python3-venv
cd /opt/
sudo git clone --branch 0.6.19 https://github.com/janeczku/calibre-web.git
sudo python3 -m venv venv
Мы выполняем установку Calibre-Web:
sudo python3 -m pip install -r requirements.txt
Запуск Calibre-Web
sudo 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/calibre-web.service
Добавьте следующее содержимое на calibre-web.service
.
[Unit]
Description=Calibre-Web
After=network.target
[Service]
Type=simple
User=calibre
Group=calibre
ExecStart=/usr/bin/python3 /opt/calibre-web/cps.py
WorkingDirectory=/opt/calibre-web
[Install]
WantedBy=multi-user.target
Сохраните и закройте сценарий.
Запустите сервер:
sudo systemctl enable calibre-web.service
sudo systemctl start calibre-web.service
Настройте Nginx в качестве обратного прокси
sudo apt-get -y install nginx
Создайте обратный конфигурацию прокси-сервера для calibre-web.
sudo nano /etc/nginx/sites-available/calibre-web.conf
Заполните файл следующей конфигурацией.
server {
server_name my.domain.tld;
listen 80;
location / {
proxy_pass http://127.0.0.1:8083;
proxy_redirect off;
proxy_set_header Host $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;
}
}
Включите конфигурацию обратной прокси-сервера Calibre-Web Nginx.
sudo ln -s /etc/nginx/sites-available/calibre-web.conf /etc/nginx/sites-enabled/calibre-web.conf
Проверка конфигурации и перезагрузите службу Nginx.
sudo nginx -t
sudo systemctl restart nginx.service
Собственно на этом всё. Остается только у своего доменного регистратора прописать на используемый my.domain.tld требуемый ip-адрес, дождаться его делегирования, и можно открывать уже свой Calibre-Web в браузере.
Если вам понравился этот пост об установке Calibre и Calibre-Web на Ubuntu 22.04, поделитесь им с друзьями в социальных сетях. Спасибо.