Если вам понравилась настоящая статья, то можете поддержать автора став спонсором на бусти.
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 booklorecd booklore
---
## Установка BookLore через Docker
Самый простой способ развернуть BookLore — использовать Docker.
Нам понадобятся два файла.
docker-compose.yml
```yamlservices: # Секция описания сервисов (контейнеров) 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 станет отличным решением для организации собственной цифровой библиотеки.
Такой сервер легко развернуть на домашнем оборудовании и получить полноценную альтернативу облачным сервисам для чтения книг.
Some information may be outdated