MAATRIX / Блог / Calibre-Web на Ubuntu 24.04: пошаговая установка

Calibre-Web на Ubuntu 24.04: пошаговая установка

MAATRIX

Домашняя библиотека книг обычно живёт где попало: часть в папке на ноутбуке, часть в читалке, часть в облаке, до которого не всегда есть доступ. Calibre-Web решает это одним движением — превращает вашу коллекцию в веб-сайт, доступный с телефона, планшета или чужого компьютера через браузер, без установки клиентов и синхронизации файлов вручную. Ниже — пошаговая установка Calibre-Web на Ubuntu 24.04 в изолированном окружении, с автозапуском через systemd, доступом по HTTPS и настройкой для читалок.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое Calibre-Web и чем он отличается от десктопного Calibre

Calibre — это классическое десктопное приложение для управления библиотекой книг: конвертация форматов, редактирование метаданных, отправка на Kindle. Calibre-Web — отдельный проект, веб-надстройка над той же файловой структурой библиотеки (файл metadata.db плюс папки с книгами). Он не запускает и не требует запущенного десктопного Calibre — читает и пишет ту же базу напрямую.

На практике это значит: сервер работает как маленький сайт с вашими книгами. Заходите с любого устройства, ищете по названию, автору, серии, читаете epub и pdf прямо в браузере через встроенную читалку, отправляете книгу на почту Kindle, скачиваете в нужном формате. Для нескольких человек в семье или небольшой команды работает многопользовательский режим с раздельными правами — кому-то только читать, кому-то ещё и загружать новые книги.

Важный нюанс: часть функций (конвертация форматов, редактирование обложек и метаданных «на лету») требует установленных консольных утилит из пакета calibre — ebook-convert, ebook-meta. Без них Calibre-Web всё равно работает как читалка и каталог, просто без конвертации между форматами.

Подготовка сервера: пользователь и зависимости

Работать под root неудобно и небезопасно — заведите отдельного системного пользователя и рабочие каталоги. Дальше все команды выполняются от root или через sudo.

apt update && apt upgrade -y
apt install -y python3-venv python3-pip python3-dev libldap2-dev libsasl2-dev libmagic1 unrar-free calibre

useradd -r -m -d /opt/calibre-web -s /usr/sbin/nologin calibreweb
mkdir -p /opt/calibre-web/{app,library,config}
chown -R calibreweb:calibreweb /opt/calibre-web

Пакет calibre из репозиториев Ubuntu 24.04 обычно отстаёт от последнего релиза на calibre-ebook.com, но для целей Calibre-Web (конвертация, метаданные) это не критично — используются только консольные утилиты, не графический интерфейс. Пакет unrar-free нужен, если в библиотеке есть комиксы в формате cbr — без распаковщика Calibre-Web не сможет их открыть. libldap2-dev и libsasl2-dev пригодятся, только если планируете подключать LDAP-аутентификацию; для обычной установки с локальными пользователями их можно пропустить, но лишними не будут.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Установка Calibre-Web в изолированном окружении

Ставить пакет Python-приложения системным pip — плохая идея: рано или поздно он поссорится с системными пакетами Ubuntu. Создайте виртуальное окружение под пользователем calibreweb и ставьте всё внутрь него.

su -s /bin/bash calibreweb -c "python3 -m venv /opt/calibre-web/venv"
su -s /bin/bash calibreweb -c "/opt/calibre-web/venv/bin/pip install --upgrade pip wheel"
su -s /bin/bash calibreweb -c "/opt/calibre-web/venv/bin/pip install calibreweb"

Если версия в PyPI на момент установки заметно отстаёт от актуальной ветки проекта на GitHub (janeczku/calibre-web), можно поставить из исходников — иногда там раньше появляются исправления багов:

su -s /bin/bash calibreweb -c "
  git clone https://github.com/janeczku/calibre-web.git /opt/calibre-web/app
  /opt/calibre-web/venv/bin/pip install -r /opt/calibre-web/app/requirements.txt
"

Проверьте, что сервис вообще стартует, до того как оборачивать его в systemd. Запустите вручную от пользователя calibreweb и загляните в браузере на http://IP-сервера:8083.

su -s /bin/bash calibreweb -c "/opt/calibre-web/venv/bin/calibreweb --port 8083"

Если видите страницу первичной настройки — всё поднялось, останавливайте (Ctrl+C) и переходите к автозапуску. Если порт закрыт файрволом, временно откройте его для проверки, детали настройки ufw разобраны в статье про файрвол UFW на Ubuntu 24.04 — в продакшене порт 8083 лучше вообще не открывать наружу, доступ пойдёт через Nginx.

Автозапуск через systemd

Ручной запуск в терминале умрёт при перезагрузке сервера или закрытии сессии SSH. Оформите Calibre-Web как системную службу.

cat > /etc/systemd/system/calibre-web.service << 'EOF'
[Unit]
Description=Calibre-Web
After=network.target

[Service]
Type=simple
User=calibreweb
Group=calibreweb
WorkingDirectory=/opt/calibre-web
ExecStart=/opt/calibre-web/venv/bin/calibreweb --port 8083
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now calibre-web
systemctl status calibre-web

Если ставили из исходников через git clone, вместо готового скрипта calibreweb в ExecStart укажите путь к cps.py: /opt/calibre-web/venv/bin/python3 /opt/calibre-web/app/cps.py. Логи службы смотрите через journalctl -u calibre-web -f — пригодится, если после правки конфига сервис не поднимается.

Публикация по HTTPS через Nginx

Отдавать сервис напрямую на порту 8083 в интернет не стоит: и трафик идёт без шифрования, и порт светится в любом сканере. Поставьте перед Calibre-Web обратный прокси Nginx с сертификатом Let's Encrypt — тем более что домен всё равно нужен для удобного доступа с читалок.

apt install -y nginx certbot python3-certbot-nginx

Направьте A-запись домена на IP сервера и создайте конфиг сайта с проксированием на локальный порт:

server {
    listen 80;
    server_name books.example.com;

    location / {
        proxy_pass http://127.0.0.1:8083;
        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;
        client_max_body_size 200M;
    }
}

Параметр client_max_body_size важен отдельно — по умолчанию Nginx режет загрузку файлов больше 1 МБ, а книги в форматах djvu или сканы в pdf легко весят десятки мегабайт. Подробный разбор настройки обратного прокси и типичных ошибок — в статье Nginx как реверс-прокси на Ubuntu 24.04. После проверки конфига (nginx -t) и перезапуска получите сертификат:

certbot --nginx -d books.example.com

Certbot сам пропишет редирект с 80-го порта на HTTPS и настроит таймер автопродления. Проверить, что продление реально работает, а не просто числится в systemd, стоит заранее — если сертификат всё же не обновится сам, разбор причин есть в статье сертификат SSL не обновился.

Импорт библиотеки, загрузка книг и OPDS для читалок

При первом заходе на адрес сервиса откроется мастер настройки. Стандартные учётные данные администратора — admin / admin123, их нужно сменить сразу же в настройках пользователя, иначе библиотека открыта любому, кто найдёт адрес.

Ключевой шаг мастера — путь к библиотеке. Calibre-Web не создаёт библиотеку из воздуха, ему нужен существующий файл metadata.db в указанной папке. Если библиотеки ещё нет, самый простой способ инициализировать её — добавить первую книгу через консольную утилиту calibredb, она сама создаст структуру:

su -s /bin/bash calibreweb -c "calibredb add /путь/к/первой-книге.epub --library-path=/opt/calibre-web/library"

Если библиотека уже существует на другой машине (например, в десктопном Calibre), просто скопируйте всю папку библиотеки целиком — вместе с metadata.db и подпапками книг — в /opt/calibre-web/library и выставьте владельцем calibreweb:

rsync -av /путь/к/старой/библиотеке/ /opt/calibre-web/library/
chown -R calibreweb:calibreweb /opt/calibre-web/library

После указания пути в мастере укажите этот же путь в настройках — и библиотека появится в интерфейсе. Дальше книги можно загружать прямо через веб-интерфейс (кнопка загрузки, поддерживает epub, mobi, pdf, cbr/cbz и другие форматы), редактировать метаданные и обложки в браузере, читать epub и pdf во встроенной читалке без скачивания файла на устройство.

Отдельно стоит настроить два момента для удобства чтения на телефонах и читалках:

  • Отправка на Kindle — в настройках профиля пользователя укажите SMTP-сервер и email-адрес Kindle, тогда книга уйдёт на устройство одним кликом прямо с сервера.
  • OPDS-каталог по адресу https://books.example.com/opds — стандартный протокол, который понимают приложения вроде KOReader, Moon+ Reader, Aldiko. Читалка подключается к этому адресу как к книжному магазину и синхронизирует список книг напрямую, без ручного копирования файлов через USB или облако.

Бэкап библиотеки и обновление Calibre-Web

Библиотека — это, по сути, папка с файлами и одна SQLite-база metadata.db, поэтому бэкап устроен просто: копировать /opt/calibre-web/library (сами книги и метаданные) и /opt/calibre-web/.calibre-web или директорию конфигурации (app.db с пользователями и настройками). Делать это стоит регулярно и хранить копию не на том же диске, что и оригинал — если интересует автоматизация с версионированием и дедупликацией, в статье про BorgBackup на Ubuntu 24.04 описана настройка с нуля.

Обновление в venv-установке — это обновление одного пакета:

systemctl stop calibre-web
su -s /bin/bash calibreweb -c "/opt/calibre-web/venv/bin/pip install --upgrade calibreweb"
systemctl start calibre-web

Перед крупным обновлением (например, при переходе через мажорную версию) сделайте свежий бэкап app.db — база настроек иногда мигрирует схему, и откатиться проще из копии, чем разбирать логи миграции. Для библиотеки с несколькими сотнями гигабайт книг и сканов имеет смысл держать сервер с диском на вырост — если текущий тариф начинает упираться в место или скорость чтения при листании крупных pdf, конфигурацию у MAATRIX можно поменять на более объёмную без переустановки всего окружения с нуля, оплата доступна из России картой, СБП или криптой.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли запустить Calibre-Web в Docker вместо venv?

Да, у проекта есть официальный образ, и это часто даже проще для тех, кто не хочет вручную настраивать systemd и виртуальное окружение. Venv-вариант из этой статьи удобен, когда сервер и так используется без Docker и хочется минимум лишних слоёв.

Почему при добавлении библиотеки Calibre-Web пишет, что metadata.db не найден?

Библиотека Calibre — это не просто папка с файлами, а именно набор с файлом metadata.db в корне. Либо скопируйте существующую библиотеку целиком, либо создайте её первой командой calibredb add, как показано выше.

Нужен ли доступ в интернет для распознавания метаданных книг?

Да, автоматический поиск обложек и описаний по названию использует внешние источники (Google Books, Amazon и другие в зависимости от настроек). Без интернета метаданные придётся вносить вручную.

Как ограничить доступ по IP или добавить второй уровень авторизации?

Проще всего — на уровне Nginx, добавить Basic Auth поверх встроенной аутентификации Calibre-Web или ограничить allow/deny по адресам в конфиге сайта. Штатная многопользовательская система при этом остаётся отдельным уровнем прав внутри приложения.

Почему не открываются файлы cbr после установки?

Скорее всего не хватает распаковщика rar. В Ubuntu 24.04 доступен пакет unrar-free, его функциональности достаточно для большинства архивов, но с некоторыми свежими алгоритмами сжатия rar5 он может не справиться — тогда потребуется собрать полноценный unrar из исходников или сконвертировать архивы в cbz заранее.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →