Если вам понравилась настоящая статья, то можете поддержать автора став спонсором на бусти.
К сожалению статья уже неактуальна, так как разработчик не выдержал критиканства и удалил репозиторий.
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
- CBZ (комиксы)
Это означает, что книги можно читать прямо в браузере, без скачивания на устройство.
Поддержка нескольких пользователей #
Booklore поддерживает многопользовательскую работу.
Каждый пользователь может:
- иметь собственный прогресс чтения
- добавлять книги в избранное
- создавать коллекции
- делать закладки
Это делает приложение удобным для семейной библиотеки или небольшого сообщества.
Простая установка через Docker #
Booklore легко устанавливается с помощью Docker, что делает его идеальным решением для:
- Proxmox
- Docker-серверов
- NAS
- домашнего homelab
Установка занимает всего несколько минут.
Установка Booklore с помощью Docker Compose #
Самый простой способ развернуть Booklore — использовать Docker Compose.
Шаг 1. Создание рабочей директории #
Создадим папку для приложения:
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.domain.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.domain.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=Europe/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 станет отличным решением для организации собственной цифровой библиотеки.
Такой сервер легко развернуть на домашнем оборудовании и получить полноценную альтернативу облачным сервисам для чтения книг.