MAATRIX / Блог / Как установить и настроить Calibre-Web на VPS

Как установить и настроить Calibre-Web на VPS

MAATRIX

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

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

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

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

Что такое Calibre-Web и зачем он нужен

Calibre-Web — это open-source веб-интерфейс для библиотеки, которую формирует классический Calibre на компьютере. Сам десктопный Calibre вам для этого не нужен: сервису достаточно файла metadata.db, который Calibre создаёт при добавлении книг, и папок с самими файлами. Calibre-Web читает эту базу, показывает обложки, описания, теги и позволяет скачивать, читать в браузере, отправлять книги на почту Kindle и раздавать каталог по протоколу OPDS.

Отличие от простого файлового шаринга принципиальное: вы получаете полноценную библиотеку с поиском, сортировкой по авторам и сериям, фильтрами по жанрам и рейтингом прочитанного. Для читалок вроде KOReader, Moon+ Reader или Kybook подключение через OPDS выглядит как обычный онлайн-магазин книг — только это ваш собственный сервер.

Второй сценарий использования — конвертация форматов на лету и отправка книг напрямую на Kindle по email. Это требует установленного бинарника Calibre внутри контейнера (ebook-convert), и об этом нюансе стоит знать заранее, потому что он ощутимо влияет на размер образа и потребление ресурсов.

Подготовка VPS и требования к ресурсам

Сам Calibre-Web — лёгкое Flask-приложение на Python, и без конвертации форматов ему хватает минимальных ресурсов: 1 vCPU и 512 МБ–1 ГБ RAM держат библиотеку в несколько тысяч книг и обслуживают одного-двух активных читателей без проблем. Основная нагрузка ложится не на CPU, а на диск — под сами файлы книг место закладывайте с запасом, особенно если храните ещё и оригиналы в нескольких форматах.

Если планируете использовать конвертацию (например, автоматически превращать EPUB в MOBI/AZW3 под старый Kindle) или отправку на почту, добавьте памяти: полный Calibre с зависимостями GUI-библиотек ощутимо тяжелее и на пике конвертации крупной книги может кратковременно съедать процессор целиком. Для такого сценария комфортнее 2 vCPU и 2 ГБ RAM.

Начните с подготовки системы на Ubuntu 24.04:

apt update && apt upgrade -y
apt install -y docker.io docker-compose-plugin
systemctl enable --now docker

Локация сервера здесь не критична для скорости — библиотека не требует низкой задержки, как видеостриминг, — но логично держать сервер там же, где остальная инфраструктура. У MAATRIX доступны VPS в локациях RU, US и UK с оплатой из России картой, СБП или криптовалютой, что удобно, если сервис для книг вы разворачиваете рядом с уже арендованным сервером.

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

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

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

Установка Calibre-Web через Docker

Самый предсказуемый способ — образ linuxserver/calibre-web, который поддерживается активно и умеет опционально подтягивать полноценный Calibre через докер-мод. Создайте каталог проекта и файл docker-compose.yml:

mkdir -p /opt/calibre-web/{config,books}
cd /opt/calibre-web
services:
  calibre-web:
    image: lscr.io/linuxserver/calibre-web:latest
    container_name: calibre-web
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
      - DOCKER_MODS=linuxserver/mods:universal-calibre
    volumes:
      - ./config:/config
      - ./books:/books
    ports:
      - "127.0.0.1:8083:8083"
    restart: unless-stopped

Переменная DOCKER_MODS=linuxserver/mods:universal-calibre подтягивает полный набор бинарников Calibre при старте контейнера — без неё конвертация форматов и ebook-convert работать не будут. Если конвертация не нужна, просто уберите эту строку: контейнер станет заметно легче и будет стартовать быстрее.

Порт сознательно привязан к 127.0.0.1, чтобы не светить сервис в интернет напрямую — доступ наружу настроим позже через реверс-прокси. Запустите стек:

docker compose up -d
docker compose logs -f calibre-web

При первом запуске образ с докер-модом качается дольше обычного — дождитесь строк о готовности сервиса перед следующим шагом. Про типы и различия томов, которые здесь используются под /config и /books, подробнее написано в статье про типы Docker-томов.

Первичная настройка и подключение библиотеки

Откройте http://IP-сервера:8083 через SSH-туннень или временно пропишите порт наружу для первого входа:

ssh -L 8083:127.0.0.1:8083 root@IP-сервера

Логин по умолчанию — admin, пароль — admin123. Первым делом смените пароль в настройках профиля — это не опция, а обязательный шаг, потому что дефолтные учётки Calibre-Web регулярно сканируют боты.

Дальше нужно указать расположение библиотеки. Если у вас уже есть библиотека Calibre с десктопа, перенесите её содержимое (папку с metadata.db и файлами книг) в /opt/calibre-web/books на сервере:

rsync -avz /путь/к/локальной/Calibre\ Library/ root@IP-сервера:/opt/calibre-web/books/

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

Обратите внимание на права доступа: значения PUID/PGID в docker-compose должны совпадать с владельцем файлов на хосте, иначе контейнер не сможет читать или дописывать метаданные. Проверить и поправить владельца можно так:

chown -R 1000:1000 /opt/calibre-web/books

HTTPS-доступ через реверс-прокси

Открывать порт 8083 в интернет без шифрования — плохая идея: и сама библиотека, и cookie сессии администратора пойдут открытым текстом. Правильный путь — Nginx с сертификатом Let's Encrypt перед контейнером.

apt install -y nginx certbot python3-certbot-nginx

Конфиг для домена библиотеки:

server {
    listen 80;
    server_name library.example.com;
    location / {
        proxy_pass http://127.0.0.1:8083;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        client_max_body_size 100M;
    }
}

Параметр client_max_body_size важен отдельно: без него загрузка крупных книг (сканы, комиксы, объёмные PDF) будет обрываться ошибкой 413. Проверьте конфиг и выпустите сертификат:

nginx -t && systemctl reload nginx
certbot --nginx -d library.example.com

Подробный разбор настройки реверс-прокси и типичных ошибок с конфигом — в статье Nginx как реверс-прокси на VPS, а нюансы автопродления сертификатов — в материале про Let's Encrypt SSL на VPS. После выпуска сертификата библиотека доступна по https://library.example.com, а порт 8083 закрыт снаружи.

OPDS и удалённое чтение с разных устройств

Главная практическая ценность Calibre-Web — доступ с читалки без проводов и синхронизации через компьютер. Включите OPDS-каталог в настройках сервера (обычно включён по умолчанию) — он доступен по адресу вида https://library.example.com/opds.

В приложениях для чтения это выглядит так:

ПриложениеПлатформаКак подключить
KOReaderE-ink ридеры, AndroidOPDS-каталог → добавить URL с логином/паролем
Moon+ ReaderAndroidLibrary → OPDS → указать адрес
Marvin / KybookiOSРаздел OPDS-каталогов в настройках
Kobo (нативно)Kobo-ридерыЧерез встроенную поддержку Calibre-Web Kobo Sync

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

Отправка на Kindle по почте требует настроенного SMTP в разделе настроек email — впишите данные вашего почтового сервиса (например, отдельный ящик с паролем приложения) и адрес Kindle из личного кабинета Amazon, добавленный в список разрешённых отправителей.

Обслуживание, бэкапы и обновления

Библиотека — это данные, которые жалко потерять, поэтому бэкап metadata.db и папки книг стоит настроить сразу, а не после первого сбоя диска. Поскольку всё лежит в volume-каталогах ./config и ./books, backup сводится к резервному копированию этих двух папок:

tar -czf calibre-backup-$(date +%F).tar.gz -C /opt/calibre-web config books

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

Обновление контейнера — стандартная для Docker процедура:

docker compose pull
docker compose up -d

После обновления проверяйте логи на предмет ошибок миграции базы — Calibre-Web иногда меняет схему app.db (файл настроек и пользователей, отдельный от metadata.db библиотеки) между версиями, и в редких случаях стоит сначала сделать копию config, прежде чем обновляться на мажорную версию. Если библиотека растёт быстро, следите за свободным местом на диске — предупреждение о нехватке места лучше поймать заранее, а не в момент, когда загрузка новой книги завершится ошибкой.

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

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

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

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

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

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

Нужен ли на сервере обычный Calibre для работы Calibre-Web?

Нет, для просмотра и раздачи библиотеки достаточно самого Calibre-Web. Полный Calibre (через DOCKER_MODS=universal-calibre) нужен только для конвертации форматов и отправки на Kindle.

Сколько ресурсов VPS хватит для Calibre-Web?

Без конвертации — 1 vCPU и 512 МБ–1 ГБ RAM для библиотеки в несколько тысяч книг. С активной конвертацией форматов комфортнее 2 vCPU и 2 ГБ RAM.

Как перенести существующую библиотеку Calibre на сервер?

Скопируйте папку с metadata.db и файлами книг в volume ./books через rsync или scp, затем укажите путь /books в настройках библиотеки при первом входе.

Почему обрывается загрузка крупных книг через веб-интерфейс?

Чаще всего из-за лимита client_max_body_size в Nginx по умолчанию — увеличьте его в конфиге реверс-прокси, как показано выше.

Как оплатить VPS под Calibre-Web из России?

У MAATRIX доступна оплата картой российского банка, по СБП, криптовалютой или токеном MAAT — иностранная карта не нужна.

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

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

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