Calibre Server для управления библиотекой электронных книг.

Calibre — это универсальное решение для управления электронными книгами, поддерживающее форматы EPUB, MOBI, PDF и другие. Calibre Server позволяет превратить ваш сервер в личное облачное хранилище книг, доступное через браузер. В этой статье вы узнаете, как установить Calibre, настроить сервер, организовать библиотеку и защитить доступ с помощью современных методов аутентификации и шифрования.




Подготовка сервера и настройка файрвола

Перед установкой Calibre необходимо убедиться, что сервер готов к безопасной работе. Одним из таких шагов обеспечения безопасности является настройка файрвола для разрешения необходимых сетевых подключений. Мы рассмотрим настройку с использованием двух популярных инструментов: ufw (Uncomplicated Firewall) и firewalld.

Настройка файрвола с помощью ufw

ufw — это простой инструмент для управления iptables, часто используемый в дистрибутивах на основе Debian.

  • Проверка статуса файрвола
    Убедитесь, что файрвол активен:
Bash
sudo ufw status

Если он неактивен, включите его:

Bash
sudo ufw enable
  • Открытие портов
    Calibre Server по умолчанию использует порт 8080 для HTTP. Если вы планируете настроить HTTPS (рекомендуется), также откройте порт 443. Выполните команды:
Bash
sudo ufw allow 8080/tcp
sudo ufw allow 443/tcp

Проверьте статус:

Bash
sudo ufw status

Ожидаемый вывод:

Bash
Status: active
To                         Action      From
--                         ------      ----
8080/tcp                   ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

Настройка файрвола с помощью firewalld

firewalld — это динамический инструмент управления файрволом, распространённый в дистрибутивах, таких как Fedora, CentOS и RHEL.

  • Проверка статуса файрвола
    Убедитесь, что firewalld установлен и запущен:
Bash
sudo systemctl status firewalld

Если служба неактивна, включите и запустите её:

Bash
sudo systemctl enable firewalld
sudo systemctl start firewalld
  • Открытие портов
    Разрешите трафик на портах 8080 (HTTP) и 443 (HTTPS):
Bash
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=443/tcp

Перезагрузите конфигурацию файрвола:

Bash
sudo firewall-cmd --reload
  • Проверка открытых портов
    Убедитесь, что порты добавлены:
Bash
sudo firewall-cmd --list-ports

Ожидаемый вывод:

Plaintext
8080/tcp 443/tcp

💡Примечание: Если вы используете другой инструмент управления файрволом (например, iptables напрямую), убедитесь, что порты 8080 и 443 открыты для входящих соединений. Обратитесь к документации вашего дистрибутива для соответствующих команд.

Проверка открытых портов в файрволе firewalld для Calibre Server.

Установка Calibre

Calibre предоставляет официальный установочный скрипт для Linux, который упрощает процесс установки. На момент написания статьи актуальная версия Calibre — 8.4, и мы будем использовать её. Однако для работы Calibre требуется современная версия GNU libc (как минимум 2.35), что может быть проблемой на некоторых дистрибутивах.

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

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

Bash
sudo apt update
sudo apt install -y libfontconfig1 libegl1 libopengl0 libxcb-cursor0 libxkbcommon0 libgl1 libglx0 libxcomposite1 libxdamage1 libxrandr2 libxtst6 libasound2 libxkbfile1

Для систем на базе dnf (Fedora и подобные):

Bash
sudo dnf install -y fontconfig libEGL libxcb libxkbcommon libglvnd-glx libXcomposite libXdamage libXrandr libXtst alsa-lib libxkbfile

Проверка системных требований

Перед установкой проверьте версию GNU libc на вашей системе:

Bash
ldd --version    

Ожидаемый вывод должен содержать строку, например:

Plaintext
ldd (GNU libc) 2.35

Если версия ниже 2.35 (например, 2.28), вы получите ошибку при установке Calibre. В таком случае рассмотрите следующие варианты:

  • Обновление системы: Если ваш дистрибутив поддерживает обновление до более новой версии, выполните:
Bash
sudo dnf update --refresh

или для систем на базе apt:

Bash
sudo apt update && sudo apt full-upgrade

После обновления проверьте версию GNU libc снова.

  • Использование контейнера: Если обновление системы невозможно (например, для AlmaLinux 8, где GNU libc 2.28 является стандартной), используйте Docker или Podman для запуска Calibre в контейнере. Установите Docker:
Bash
sudo dnf install -y docker
sudo systemctl enable --now docker

Затем запустите Calibre в контейнере:

Bash
sudo docker run -d -p 8080:8080 -v ~/calibre-library:/calibre-library linuxserver/calibre

Это обходит проблему с версией GNU libc, так как контейнер содержит все необходимые зависимости.

  • Статическая сборка Calibre: Если контейнеры не подходят, скачайте статическую сборку Calibre, которая не зависит от системной версии GNU libc:
Bash
wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin version=<version>

⚠️ Замените <version> на необходимую версию calibre

💡Примечание: Для этой статьи мы будем использовать стандартный установочный скрипт, предполагая, что версия GNU libc соответствует требованиям. Если вы используете контейнер, настройка сервера будет аналогична, но с использованием Docker-команд.

Загрузка и установка Calibre

Загрузите официальный установочный скрипт:

Bash
wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh

Этот скрипт автоматически устанавливает последнюю версию Calibre в /opt/calibre.

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

Bash
calibre --version

Ожидаемый вывод:

Проверка версии Calibre после установки.

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

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

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

Создайте директорию для хранения библиотеки:

Bash
mkdir ~/calibre-library

Добавление книг

Для примера добавим бесплатную книгу из Project Gutenberg:

Bash
wget https://www.gutenberg.org/ebooks/84.kindle.images -O frankenstein.mobi
calibredb add frankenstein.mobi --with-library ~/calibre-library

Команда calibredb добавляет книгу в библиотеку, автоматически извлекая метаданные (название, автор, обложка). Вы можете добавлять книги в любых форматах, поддерживаемых Calibre (EPUB, MOBI, PDF и др.).

Структура библиотеки Calibre с добавленной книгой.

Запуск Calibre Server

Calibre Server позволяет получить доступ к библиотеке через веб-интерфейс. Запустите сервер командой:

Bash
calibre-server --port 8080 ~/calibre-library

Сервер будет доступен по адресу http://<ваш_IP>:8080. Откройте этот адрес в браузере, чтобы убедиться, что сервер работает.

💡Примечание: Если порт 8080 занят или заблокирован, выберите другой порт (например, 8081) с помощью флага —port. Откройте новый порт в файрволе:

Bash
sudo ufw allow 8081/tcp

или для firewalld:

Bash
sudo firewall-cmd --permanent --add-port=8081/tcp
sudo firewall-cmd --reload

Доступ к библиотеке через веб-интерфейс Calibre Server.

Настройка Calibre Server как системной службы

Для автоматического запуска сервера при загрузке системы создадим systemd-юнит.

Создание systemd-юнита

  • Создайте файл службы:
Bash
sudo nano /etc/systemd/system/calibre-server.service
  • Добавьте следующее содержимое, заменив <username> на имя вашего пользователя:
INI
[Unit]
Description=Calibre Content Server
After=network.target

[Service]
Type=simple
User=<username>
Group=<username>
ExecStart=/opt/calibre/calibre-server /home/<username>/calibre-library --port 8080 --enable-local-write
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • Перезагрузите конфигурацию systemd и запустите службу:
Bash
sudo systemctl daemon-reload
sudo systemctl enable calibre-server
sudo systemctl start calibre-server
  • Проверьте статус службы:
Bash
sudo systemctl status calibre-server

Убедитесь, что служба активна (active (running)).

Проверка статуса службы Calibre Server.

Настройка аутентификации и безопасности

Для защиты библиотеки от несанкционированного доступа настроим аутентификацию и (опционально) HTTPS.

Настройка аутентификации

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

Bash
sudo systemctl stop calibre-server

Добавьте пользователя для доступа к серверу:

Bash
calibre-server --manage-users

Выберите опцию 1 (Add a new user) и следуйте инструкциям для создания имени пользователя и пароля.

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

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

Измените строку ExecStart:

INI
ExecStart=/opt/calibre/calibre-server /home/<username>/calibre-library --port 8080 --userdb /home/<username>/.config/calibre/server-users.sqlite --enable-auth --enable-local-write

Перезапустите службу:

Bash
sudo systemctl daemon-reload
sudo systemctl start calibre-server

Теперь при входе на http://<ваш_IP>:8080 потребуется ввести логин и пароль.

Окно аутентификации для доступа к защищённой библиотеке.

Настройка HTTPS (опционально)

Для повышения безопасности рекомендуется настроить HTTPS с использованием SSL-сертификата. Используйте Let’s Encrypt для бесплатного сертификата:

  • Установите Certbot:
Bash
sudo apt install -y certbot

или для систем на базе dnf:

Bash
sudo dnf install -y certbot

💡Примечание: Возможно потребуется дополнительно установить репозитории EPEL:

Bash
sudo dnf install epel-release
  • Получите сертификат:
Bash
sudo certbot certonly --standalone -d <ваш_домен>
  • Измените ExecStart, добавив флаги —ssl-cert и —ssl-key:
Bash
ExecStart=/opt/calibre/calibre-server /home/<username>/calibre-library --port 443 --userdb /home/<username>/.config/calibre/server-users.sqlite --enable-auth --enable-local-write --ssl-cert /etc/letsencrypt/live/<ваш_домен>/fullchain.pem --ssl-key /etc/letsencrypt/live/<ваш_домен>/privkey.pem
  • Откройте порт 443 в файрволе (если ещё не открыт):
Bash
sudo ufw allow 443/tcp

или для firewalld:

Bash
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
  • Перезапустите службу:
Bash
sudo systemctl daemon-reload
sudo systemctl start calibre-server

Оптимизация и дополнительные функции

Оптимизация производительности

  • Кэширование метаданных: Calibre Server автоматически кэширует метаданные книг для ускорения загрузки. Убедитесь, что у сервера достаточно дискового пространства для хранения кэша.
  • Ограничение трафика: Используйте флаг —max-opds-items для ограничения количества книг, отображаемых в OPDS-каталоге, чтобы снизить нагрузку:
Bash
calibre-server --max-opds-items 50 ~/calibre-library

Интеграция с мобильными приложениями

Calibre Server поддерживает OPDS-протокол, позволяющий подключаться к библиотеке через приложения, такие как Moon+ Reader или FBReader. Введите адрес http://<ваш_IP>:8080/opds в приложении для доступа к каталогу.


Заключение.

Вы успешно настроили Calibre Server для управления библиотекой электронных книг. Теперь вы можете:

  • Получать доступ к книгам через веб-интерфейс или мобильные приложения.
  • Защищать библиотеку с помощью аутентификации и HTTPS.
  • Автоматически запускать сервер при загрузке системы.

Calibre Server — это мощный инструмент для создания личного облачного хранилища книг. Если у вас остались вопросы или вы хотите узнать о дополнительных настройках, оставляйте комментарии. Поделитесь статьёй с друзьями, чтобы они тоже могли организовать свою библиотеку!

Was this helpful?

2 / 0

Добавить комментарий 0