LOADING
1791 words
9 minutes
BookLore — self-hosted библиотека и читалка для вашей коллекции книг

Если вам понравилась настоящая статья, то можете поддержать автора став спонсором на бусти.

BookLore — self-hosted библиотека и веб-читалка для вашей коллекции книг#

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

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

Booklore отлично подходит для:

  • домашнего сервера
  • NAS
  • homelab инфраструктуры
  • личной или семейной библиотеки

Приложение работает через браузер, поэтому получить доступ к библиотеке можно с компьютера, планшета или смартфона.


Что такое Booklore#

Booklore — это система управления электронной библиотекой (Digital Library Server), которая позволяет:

  • хранить книги в одном месте
  • автоматически получать метаданные
  • организовывать библиотеку по авторам и жанрам
  • читать книги прямо в браузере
  • отслеживать прогресс чтения
  • создавать коллекции книг
  • использовать несколько пользователей

По сути, Booklore превращает ваш сервер в персональный сервис для чтения книг, похожий на Kindle Library или Google Books, но полностью находящийся под вашим контролем.


Чем Booklore отличается от других решений#

Существует несколько популярных приложений для управления библиотекой:

  • Calibre-Web
  • Kavita
  • Audiobookshelf

Однако Booklore имеет ряд особенностей, которые делают его интересным вариантом для домашнего сервера.

Современный интерфейс#

Booklore предлагает современный и минималистичный веб-интерфейс.

Преимущества интерфейса:

  • удобная навигация
  • карточки книг с обложками
  • быстрый поиск по библиотеке
  • адаптивный дизайн
  • поддержка тёмной темы

Интерфейс отлично работает как на компьютере, так и на мобильных устройствах.

Я прекрасно пониманию, что интерфейс - это субъективный вопрос, но дизайн все равно приятный


Автоматическое получение метаданных#

После добавления книг Booklore может автоматически загрузить:

  • название книги
  • автора
  • описание
  • обложку
  • жанры

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


Встроенный ридер электронных книг#

Одно из главных преимуществ Booklore — встроенный веб-ридер.

Поддерживаются популярные форматы:

  • EPUB
  • PDF
  • CBZ (комиксы)

Это означает, что книги можно читать прямо в браузере, без скачивания на устройство.


Поддержка нескольких пользователей#

Booklore поддерживает многопользовательскую работу.

Каждый пользователь может:

  • иметь собственный прогресс чтения
  • добавлять книги в избранное
  • создавать коллекции
  • делать закладки

Это делает приложение удобным для семейной библиотеки или небольшого сообщества.


Простая установка через Docker#

Booklore легко устанавливается с помощью Docker, что делает его идеальным решением для:

  • Proxmox
  • Docker-серверов
  • NAS
  • домашнего homelab

Установка занимает всего несколько минут.


Установка Booklore с помощью Docker Compose#

Самый простой способ развернуть Booklore — использовать Docker Compose.

Шаг 1. Создание рабочей директории#

Создадим папку для приложения:

Terminal window
mkdir booklore
cd booklore
---
## Установка BookLore через Docker
Самый простой способ развернуть BookLore использовать Docker.
Нам понадобятся два файла.
docker-compose.yml
```yaml
services:                               # Секция описания сервисов (контейнеров)
  booklore:                             # Имя сервиса BookLore
    image: booklore/booklore:latest     # Docker-образ BookLore из Docker Hub (тег latest)
    # image: ghcr.io/booklore-app/booklore:latest
    # Альтернативный образ из GitHub Container Registry (закомментирован)
    container_name: booklore            # Явное имя контейнера в Docker
    environment:                        # Переменные окружения контейнера
      - USER_ID=${APP_USER_ID}          # UID пользователя для работы контейнера (права на файлы)
      - GROUP_ID=${APP_GROUP_ID}        # GID группы для файлов и каталогов
      - TZ=${TZ}                        # Часовой пояс контейнера
      - DATABASE_URL=${DATABASE_URL}    # URL подключения к базе данных MariaDB
      - DATABASE_USERNAME=${DB_USER}    # Имя пользователя базы данных
      - DATABASE_PASSWORD=${DB_PASSWORD} # Пароль пользователя базы данных
      - BOOKLORE_PORT=${BOOKLORE_PORT}  # Внутренний порт BookLore
    depends_on:                         # Зависимости сервиса
      mariadb:                          # Зависимость от сервиса mariadb
        condition: service_healthy      # Запуск только после успешного healthcheck БД
    ports:
      - "${BOOKLORE_PORT}:${BOOKLORE_PORT}"   # Проброс порта: host → container (обычно не нужен при использовании Traefik)
    volumes:
      - ./data:/app/data                # Данные приложения BookLore
      - ./books:/books                  # Каталог с библиотекой книг
      - ./bookdrop:/bookdrop            # Папка для автоматического импорта книг
    healthcheck:                        # Проверка работоспособности контейнера
      test: wget -q -O - http://localhost:${BOOKLORE_PORT}/api/v1/healthcheck
      # HTTP-запрос к встроенному healthcheck API BookLore
      interval: 60s                     # Интервал между проверками
      retries: 5                        # Количество попыток до признания контейнера unhealthy
      start_period: 60s                 # Время ожидания перед началом проверок
      timeout: 10s                      # Таймаут одной проверки
    restart: unless-stopped             # Автоперезапуск контейнера (кроме ручной остановки)
    networks:
      proxy:                            # Подключение к внешней сети proxy (Traefik)
    labels:                             # Метки Docker для интеграции с Traefik
      - "traefik.enable=true"           # Включаем обработку контейнера Traefik
      - "traefik.http.routers.booklore.entrypoints=web" # HTTP-вход (порт 80)
      - "traefik.http.routers.booklore.rule=Host(`booklore.stilicho.ru`)" # Направляем трафик с домена booklore.stilicho.ru в этот контейнер
      - "traefik.http.middlewares.booklore-https-redirect.redirectscheme.scheme=https" # Middleware для редиректа HTTP → HTTPS
      - "traefik.http.routers.booklore.middlewares=booklore-https-redirect" # Применяем middleware редиректа к HTTP-маршруту
      - "traefik.http.routers.booklore-secure.entrypoints=websecure" # HTTPS-вход (порт 443)
      - "traefik.http.routers.booklore-secure.rule=Host(`booklore.stilicho.ru`)" # HTTPS-маршрут для того же домена
      - "traefik.http.routers.booklore-secure.tls=true" # Включаем TLS (HTTPS)
      - "traefik.http.routers.booklore-secure.service=booklore"  # Привязываем HTTPS-роутер к сервису booklore
      - "traefik.http.services.booklore.loadbalancer.server.port=6060" # Внутренний порт BookLore внутри контейнера
      - "traefik.docker.network=proxy" # Указываем Traefik, в какой Docker-сети искать контейнер
  mariadb:                              # Сервис базы данных MariaDB
    image: lscr.io/linuxserver/mariadb:11.4.5
    # Образ MariaDB от LinuxServer.io (стабильный и удобный)
    container_name: mariadb             # Явное имя контейнера
    environment:                        # Переменные окружения MariaDB
      - PUID=${DB_USER_ID}              # UID владельца файлов БД
      - PGID=${DB_GROUP_ID}             # GID владельца файлов БД
      - TZ=${TZ}                        # Часовой пояс
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}       # Пароль root-пользователя БД
      - MYSQL_DATABASE=${MYSQL_DATABASE}       # Имя базы данных, создаваемой при первом запуске
      - MYSQL_USER=${DB_USER}       # Пользователь БД
      - MYSQL_PASSWORD=${DB_PASSWORD}    # Пароль пользователя БД
    volumes:
      - ./mariadb/config:/config        # Каталог с данными и конфигурацией MariaDB
    restart: unless-stopped             # Автоперезапуск контейнера
    healthcheck:                        # Проверка доступности БД
      test: [ "CMD", "mariadb-admin", "ping", "-h", "localhost" ]
      interval: 5s                      # Интервал проверки
      timeout: 5s                       # Таймаут проверки
      retries: 10                       # Количество попыток
    networks:
      proxy:                            # Подключение к сети proxy (Traefik)
networks:
  proxy:                                # Определение сети proxy
    external: true                      # Сеть уже существует и не создаётся Compose

и файл с переменными .env

# =========================================================
# 🎯 BookLore — основные настройки приложения
# =========================================================
APP_USER_ID=0
# UID пользователя на хосте, от имени которого
# BookLore будет работать внутри контейнера.
# Нужен для корректных прав доступа к volume.
APP_GROUP_ID=0
# GID группы на хосте.
# Должен совпадать с владельцем каталогов data / books / bookdrop.
TZ=Etc/Moscow
# Часовой пояс контейнеров.
# Используется для логов, планировщиков и временных меток.
BOOKLORE_PORT=6060
# Порт, на котором BookLore слушает внутри контейнера.
# Также используется Traefik как внутренний порт сервиса.
# =========================================================
# 🗄️ Подключение BookLore к базе данных MariaDB
# =========================================================
DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore
# JDBC-строка подключения к MariaDB:
# - mariadb        → имя сервиса в docker-compose
# - 3306           → стандартный порт MariaDB
# - booklore       → имя базы данных
DB_USER=booklore
# Пользователь базы данных,
# под которым BookLore подключается к MariaDB.
DB_PASSWORD=ChangeMe_BookLoreApp_2025!
# Пароль пользователя базы данных.
# ⚠️ ОБЯЗАТЕЛЬНО сменить в продакшене.
# =========================================================
# 🔧 Настройки контейнера MariaDB (инициализация)
# =========================================================
DB_USER_ID=1000
# UID пользователя, от имени которого
# MariaDB пишет данные в volume.
DB_GROUP_ID=1000
# GID группы для файлов базы данных.
MYSQL_ROOT_PASSWORD=ChangeMe_MariaDBRoot_2025!
# Пароль root-пользователя MariaDB.
# Используется только для администрирования БД.
MYSQL_DATABASE=booklore
# Имя базы данных, которая будет автоматически
# создана при первом запуске контейнера MariaDB.

Первичная настройка Booklore#

После первого запуска необходимо выполнить начальную настройку системы.


Создание администратора#

При первом открытии интерфейса Booklore предложит создать учётную запись администратора.

Необходимо указать:

  • имя пользователя

  • пароль

  • адрес электронной почты (опционально)

Этот пользователь получит полный доступ к настройкам системы.


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

Следующий шаг — подключение папки с книгами.

Если используется docker compose из примера выше, путь будет:

/books

После добавления директории Booklore начнёт сканирование библиотеки.


Сканирование и импорт книг#

Во время сканирования приложение автоматически:

  • обнаруживает книги

  • извлекает метаданные

  • загружает обложки

  • формирует каталог библиотеки

Если библиотека большая, сканирование может занять некоторое время.


Настройка источников метаданных#

В настройках можно выбрать источники метаданных, которые используются для поиска информации о книгах.

Это позволяет автоматически получать:

  • описания

  • обложки

  • жанры

  • дополнительные сведения о книге


Организация коллекций#

Для удобной навигации можно создавать коллекции книг.

Например:

  • Фантастика

  • Научная литература

  • Классика

  • Комиксы

  • Технические книги

Книги можно добавлять в коллекции вручную или с помощью тегов.


Добавление пользователей#

Если библиотекой пользуются несколько человек, можно создать дополнительные учётные записи.

Каждый пользователь сможет:

  • читать книги

  • сохранять прогресс

  • создавать закладки

  • формировать собственные списки книг


Итог#

Booklore — это удобный и современный сервер для управления электронной библиотекой, который отлично подходит для домашнего сервера или homelab инфраструктуры.

Основные преимущества Booklore:

  • современный веб-интерфейс

  • встроенный ридер электронных книг

  • автоматическое получение метаданных

  • поддержка нескольких пользователей

  • простая установка через Docker

Если у вас есть большая коллекция электронных книг и вы хотите получить удобный доступ к ней с любого устройства, Booklore станет отличным решением для организации собственной цифровой библиотеки.

Такой сервер легко развернуть на домашнем оборудовании и получить полноценную альтернативу облачным сервисам для чтения книг.

BookLore — self-hosted библиотека и читалка для вашей коллекции книг
/posts/booklore/
Author
Stilicho2011
Published at
2026-03-16
License
CC BY-NC-SA 4.0

Some information may be outdated