Если вам понравилась настоящая статья, то можете поддержать автора став спонсором на бусти.
К сожалению статья уже неактуальна, так как разработчик не выдержал критиканства и удалил репозиторий.
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. Создание рабочей директории
Создадим папку для приложения:
1mkdir booklore2cd booklore3
4---5
6## Установка BookLore через Docker7
8Самый простой способ развернуть BookLore — использовать Docker.9
10Нам понадобятся два файла.11
12docker-compose.yml13
14```yaml15services: # Секция описания сервисов (контейнеров)16 booklore: # Имя сервиса BookLore17 image: booklore/booklore:latest # Docker-образ BookLore из Docker Hub (тег latest)18 # image: ghcr.io/booklore-app/booklore:latest19 # Альтернативный образ из GitHub Container Registry (закомментирован)20 container_name: booklore # Явное имя контейнера в Docker21 environment: # Переменные окружения контейнера22 - USER_ID=${APP_USER_ID} # UID пользователя для работы контейнера (права на файлы)23 - GROUP_ID=${APP_GROUP_ID} # GID группы для файлов и каталогов24 - TZ=${TZ} # Часовой пояс контейнера25 - DATABASE_URL=${DATABASE_URL} # URL подключения к базе данных MariaDB26 - DATABASE_USERNAME=${DB_USER} # Имя пользователя базы данных27 - DATABASE_PASSWORD=${DB_PASSWORD} # Пароль пользователя базы данных28 - BOOKLORE_PORT=${BOOKLORE_PORT} # Внутренний порт BookLore29 depends_on: # Зависимости сервиса30 mariadb: # Зависимость от сервиса mariadb31 condition: service_healthy # Запуск только после успешного healthcheck БД32 ports:33 - "${BOOKLORE_PORT}:${BOOKLORE_PORT}" # Проброс порта: host → container (обычно не нужен при использовании Traefik)34 volumes:35 - ./data:/app/data # Данные приложения BookLore36 - ./books:/books # Каталог с библиотекой книг37 - ./bookdrop:/bookdrop # Папка для автоматического импорта книг38 healthcheck: # Проверка работоспособности контейнера39 test: wget -q -O - http://localhost:${BOOKLORE_PORT}/api/v1/healthcheck40 # HTTP-запрос к встроенному healthcheck API BookLore41 interval: 60s # Интервал между проверками42 retries: 5 # Количество попыток до признания контейнера unhealthy43 start_period: 60s # Время ожидания перед началом проверок44 timeout: 10s # Таймаут одной проверки45 restart: unless-stopped # Автоперезапуск контейнера (кроме ручной остановки)46 networks:47 proxy: # Подключение к внешней сети proxy (Traefik)48 labels: # Метки Docker для интеграции с Traefik49 - "traefik.enable=true" # Включаем обработку контейнера Traefik50 - "traefik.http.routers.booklore.entrypoints=web" # HTTP-вход (порт 80)51 - "traefik.http.routers.booklore.rule=Host(`booklore.domain.ru`)" # Направляем трафик с домена booklore.stilicho.ru в этот контейнер52 - "traefik.http.middlewares.booklore-https-redirect.redirectscheme.scheme=https" # Middleware для редиректа HTTP → HTTPS53 - "traefik.http.routers.booklore.middlewares=booklore-https-redirect" # Применяем middleware редиректа к HTTP-маршруту54 - "traefik.http.routers.booklore-secure.entrypoints=websecure" # HTTPS-вход (порт 443)55 - "traefik.http.routers.booklore-secure.rule=Host(`booklore.domain.ru`)" # HTTPS-маршрут для того же домена56 - "traefik.http.routers.booklore-secure.tls=true" # Включаем TLS (HTTPS)57 - "traefik.http.routers.booklore-secure.service=booklore" # Привязываем HTTPS-роутер к сервису booklore58 - "traefik.http.services.booklore.loadbalancer.server.port=6060" # Внутренний порт BookLore внутри контейнера59 - "traefik.docker.network=proxy" # Указываем Traefik, в какой Docker-сети искать контейнер60
61 mariadb: # Сервис базы данных MariaDB62 image: lscr.io/linuxserver/mariadb:11.4.563 # Образ MariaDB от LinuxServer.io (стабильный и удобный)64 container_name: mariadb # Явное имя контейнера65 environment: # Переменные окружения MariaDB66 - PUID=${DB_USER_ID} # UID владельца файлов БД67 - PGID=${DB_GROUP_ID} # GID владельца файлов БД68 - TZ=${TZ} # Часовой пояс69 - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} # Пароль root-пользователя БД70 - MYSQL_DATABASE=${MYSQL_DATABASE} # Имя базы данных, создаваемой при первом запуске71 - MYSQL_USER=${DB_USER} # Пользователь БД72 - MYSQL_PASSWORD=${DB_PASSWORD} # Пароль пользователя БД73 volumes:74 - ./mariadb/config:/config # Каталог с данными и конфигурацией MariaDB75 restart: unless-stopped # Автоперезапуск контейнера76 healthcheck: # Проверка доступности БД77 test: [ "CMD", "mariadb-admin", "ping", "-h", "localhost" ]78 interval: 5s # Интервал проверки79 timeout: 5s # Таймаут проверки80 retries: 10 # Количество попыток81 networks:82 proxy: # Подключение к сети proxy (Traefik)83
84networks:85 proxy: # Определение сети proxy86 external: true # Сеть уже существует и не создаётся Composeи файл с переменными .env
1# =========================================================2# 🎯 BookLore — основные настройки приложения3# =========================================================4APP_USER_ID=05# UID пользователя на хосте, от имени которого6# BookLore будет работать внутри контейнера.7# Нужен для корректных прав доступа к volume.8APP_GROUP_ID=09# GID группы на хосте.10# Должен совпадать с владельцем каталогов data / books / bookdrop.11TZ=Europe/Moscow12# Часовой пояс контейнеров.13# Используется для логов, планировщиков и временных меток.14BOOKLORE_PORT=606015# Порт, на котором BookLore слушает внутри контейнера.16# Также используется Traefik как внутренний порт сервиса.17# =========================================================18# 🗄️ Подключение BookLore к базе данных MariaDB19# =========================================================20DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore21# JDBC-строка подключения к MariaDB:22# - mariadb → имя сервиса в docker-compose23# - 3306 → стандартный порт MariaDB24# - booklore → имя базы данных25DB_USER=booklore26# Пользователь базы данных,27# под которым BookLore подключается к MariaDB.28DB_PASSWORD=ChangeMe_BookLoreApp_2025!29# Пароль пользователя базы данных.30# ⚠️ ОБЯЗАТЕЛЬНО сменить в продакшене.31# =========================================================32# 🔧 Настройки контейнера MariaDB (инициализация)33# =========================================================34DB_USER_ID=100035# UID пользователя, от имени которого36# MariaDB пишет данные в volume.37DB_GROUP_ID=100038# GID группы для файлов базы данных.39MYSQL_ROOT_PASSWORD=ChangeMe_MariaDBRoot_2025!40# Пароль root-пользователя MariaDB.41# Используется только для администрирования БД.42MYSQL_DATABASE=booklore43# Имя базы данных, которая будет автоматически44# создана при первом запуске контейнера MariaDB.Первичная настройка Booklore
После первого запуска необходимо выполнить начальную настройку системы.
Создание администратора
При первом открытии интерфейса Booklore предложит создать учётную запись администратора.
Необходимо указать:
-
имя пользователя
-
пароль
-
адрес электронной почты (опционально)
Этот пользователь получит полный доступ к настройкам системы.
Добавление библиотеки книг
Следующий шаг — подключение папки с книгами.
Если используется docker compose из примера выше, путь будет:
/books
После добавления директории Booklore начнёт сканирование библиотеки.
Сканирование и импорт книг
Во время сканирования приложение автоматически:
-
обнаруживает книги
-
извлекает метаданные
-
загружает обложки
-
формирует каталог библиотеки
Если библиотека большая, сканирование может занять некоторое время.
Настройка источников метаданных
В настройках можно выбрать источники метаданных, которые используются для поиска информации о книгах.
Это позволяет автоматически получать:
-
описания
-
обложки
-
жанры
-
дополнительные сведения о книге
Организация коллекций
Для удобной навигации можно создавать коллекции книг.
Например:
-
Фантастика
-
Научная литература
-
Классика
-
Комиксы
-
Технические книги
Книги можно добавлять в коллекции вручную или с помощью тегов.
Добавление пользователей
Если библиотекой пользуются несколько человек, можно создать дополнительные учётные записи.
Каждый пользователь сможет:
-
читать книги
-
сохранять прогресс
-
создавать закладки
-
формировать собственные списки книг
Итог
Booklore — это удобный и современный сервер для управления электронной библиотекой, который отлично подходит для домашнего сервера или homelab инфраструктуры.
Основные преимущества Booklore:
-
современный веб-интерфейс
-
встроенный ридер электронных книг
-
автоматическое получение метаданных
-
поддержка нескольких пользователей
-
простая установка через Docker
Если у вас есть большая коллекция электронных книг и вы хотите получить удобный доступ к ней с любого устройства, Booklore станет отличным решением для организации собственной цифровой библиотеки.
Такой сервер легко развернуть на домашнем оборудовании и получить полноценную альтернативу облачным сервисам для чтения книг.
Some information may be outdated