Найти в Дзене

Как запустить собственную электронную библиотеку?

Читать
активно и с увлечением стал как мне кажется достаточно поздно, примерно
в 25 лет. На тот момент увидел как много я не знаю и из-за этого каждый
раз придумываю "колесо" независимо от того в какой сфере я работаю, а
пришлось поработать во многих. Начал я с бумажных книг, но увидел ряд
минусов: Логичным выбором будут электронные книги, но они должны: Это и будут наши минимальные требования. В текущей статье мы будет стараться их выполнить. Достаточно давно выбрал для себя open-source проект Calibre, установка которого возможна в docker.
Создаем необходимые папки и файлы: mkdir {private_library,private_library/config_calibre,private_library/config_calibre/books}
cd private_library
touch docker-compose.yml Скачиваем пустую базу данных: wget https://github.com/janeczku/calibre-web/raw/master/library/metadata.db -P config_calibre/books Базу данных можно также получить через установку приложения на ПК (например, sudo pacman -S calibre) с дальнейшим перемещение базы данных по указан
Оглавление

Цель и необходимость

Читать
активно и с увлечением стал как мне кажется достаточно поздно, примерно
в 25 лет. На тот момент увидел как много я не знаю и из-за этого каждый
раз придумываю "колесо" независимо от того в какой сфере я работаю, а
пришлось поработать во многих. Начал я с бумажных книг, но увидел ряд
минусов:

  1. Бумажные книги к большому моему сожалению быстро приходят в негодность, если с ними постоянно взаимодействовать.
  2. Чтобы читать ночью или вечером необходимо дополнительное освещение.
  3. По
    бумажным книгам невозможен поиск. В книге может быть указан какой
    термин и на какой странице встречается, но я говорю про свободный поиск
    любого термина, а не только терминов, которые авторы сами выделили.

Логичным выбором будут электронные книги, но они должны:

  1. Храниться в 1 месте, желательно с доступом через web-интерфейс.
  2. Иметь метаданные: название, автор, год издания, описание и т.д.
  3. По метаданным должна быть возможность осуществлять поиск.
  4. Книги должны быть доступны на всех устройствах: смартфон, пк и т.д.

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

docker-compose

Достаточно давно выбрал для себя open-source проект Calibre, установка которого возможна в docker.
Создаем необходимые папки и файлы:

mkdir {private_library,private_library/config_calibre,private_library/config_calibre/books}
cd private_library
touch docker-compose.yml

Скачиваем пустую базу данных:

wget https://github.com/janeczku/calibre-web/raw/master/library/metadata.db -P config_calibre/books

Базу данных можно также получить через установку приложения на ПК (например, sudo pacman -S calibre) с дальнейшим перемещение базы данных по указанному выше пути.

Редактируем docker-compose через nano docker-compose.yml:

services:
calibre-web:
image: lscr.io/linuxserver/calibre-web
container_name: calibre
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Moscow
volumes:
- ./config_calibre:/config
- ./config_calibre/books:/books
ports:
- 8084:8083
restart: unless-stopped

В первый раз заходим на http://<your_ip>:8084 и вводим с учетными данными:

  • username: admin
  • password: admin123

Проверяем целостность базы данных:

$ docker exec -it calibre sqlite3 /books/metadata.db "PRAGMA integrity_check;"
ok

После первой авторизации нас попросят 1 раз указать местоположение базы данных, сделаем это:
В правом верхнем углу экрана находим "admin", переходим и меняем пароль. Далее возможна более тонкая настройка.

-2

Оптимизации

Оптимизации запускаем через crontab -e

# Calibre: ежедневное обслуживание
0 0 * * * docker exec -it calibre sqlite3 /books/metadata.db "VACUUM; ANALYZE; PRAGMA optimize;"
# Calibre: увеличиваем размер кэш
@reboot docker exec -it calibre sqlite3 /books/metadata.db "PRAGMA cache_size = -100000;"

1 раз выполняем:

docker exec -it calibre sqlite3 /books/metadata.db "PRAGMA journal_mode = WAL;"

Проверяем результат:

$ docker exec -it calibre sqlite3 /books/metadata.db "PRAGMA journal_mode;"
wal

Поиск и добавление книг

Переходим в UI:

  1. Настройки
    -> Изменить основные настройки -> Дополнительные настройки ->
    Разрешить загрузку на сервер (Please ensure that users also have upload
    permissions) (Нажимаем)
  2. Настройки -> Edit users -> Выбираем пользователя -> Edit user -> Разрешить загрузку на сервер (Нажимаем)

Теперь наш пользователь может на сервер загружать книги :)

Когда-то давно хотел использовать Readarr
вместе с текущим решением, чтобы книги сами находились и добавлялись.
На тот момент так и не смог настроить его. На текущий момент проект не
активен и работу по поиску книг и их добавлению необходимо выполнять
самостоятельно.
Для поиска книг я использую телеграмм-каналы и их названия можно найти самостоятельно.

Для добавления книги:

Нажимаем кнопку "Загрузить" в правом верхнем углу, которая должна появиться после выполнения действий выше.

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

-3
-4

Первая книга добавлена!

Смартфон (Android)

Для взаимодействия устанавливаем "Moon+ Reader". Далее выбираем: Сеть -> Добавить каталог
Адрес вводим формате: http://<your_ip>/opds

-5

Итог

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

-6

Ссылки:

  1. Как запустить прокси-сервер для сервисов?
  2. Как установить Docker?
  3. Как установить Proxmox?
  4. Как запустить прокси-сервер для сервисов?

*.wikipedia.org - РКН: иностранный владелец ресурса нарушает закон РФ.