Calibre пользуюсь много лет, но всегда desktop-версией.
На днях увидел Calibre Web — та же библиотека, работающая с той же базой, но доступна через браузер.
Домашняя страница проекта в Github — тут>>>.
Идея состоит в том, что бы по возможности уйти от хранения книг в Google Books, так как там нет нормальной возможности добавлять своё описание к книге, сортировать по категориям и прочее.
Хранить библиотеку будем в Nextcloud (см. Nextcloud: запуск в Docker Compose на Debian с SSL от Let’s Encrypt), а читать можно через Moon+ Reader, который умеет синхронизировать место прочтения при работе через WebDAV.
В этом посте выполним:
Настраиваем NGINX + Let’s Encrypt, см описание в Bitwarden: менеджер паролей организации — установка self-hosted версии на AWS EC2.
Будем подключать уже существующую библиотеку, которая синхронизируется между машинами через Nexcloud:
Запускаем докер, монтируем библиотеку в /books
:
Проверяем файл metadata.db
:
Открываем в браузере, указываем путь к каталогу с библиотекой (в которой должен располагаться файл metadata.db
, используемый Calibre для хранения информации о книгах в библиотеке):
Логинимся с дефолтными admin:admin123:
И открываем нашу библиотеку:
А Категории тут — это теги из Calibre:
Ну и всё, как в обычной Calibre — можем редактировать, и читать книги:
И браузерная читалка:
Но не без недостатков. Например — нельзя переключиться на страницу по номеру, или даже просто пролистать вперёд-назад, только листать по одной странице.
При загрузке файла сейчас — будет выдано сообщение об ошибке:
Failed to create path /books/Mark Menson/Tonkoe iskusstvo pofigizma_ Paradoksal’nyi sposob zhit’ schastlivo (Permission denied).
Достаточно ожидаемая ошибка, учитывая факт того, что каталог /data/nextcloud/app/data/setevoy/files/Books/CALIBRE/
используется и контейнером с Nextcloud, и контейнером с Calibre.
Проверяем под каким пользователем запущено приложение в контейнере Calibre:
И его ID:
Тогда как локальная папка:
И ID локального юзера www-data
:
Т.е. Calibre использует пользователя calibre
с UID 15000, а NGINX на хосте и контейнер с Nextcloud — используют пользователя www-data
с UID 33.
Что бы решить эту проблем — создаём локально юзера calibre с UID 15000 и такую же группу:
Меняем владельца каталога и файлов:
И перезапускаем Calibre:
Проверяем загрузку — работает:
PUT
403Но теперь поломается доступ к Nexcloud — на клиенте при синхронизации пошли ошибки 403, например:
172.29.0.2 — setevoy [16/Dec/2019:13:22:24 +0000] «PUT /remote.php/dav/files/setevoy/Books/CALIBRE/Pol’%20Diubua/MySQL%20(68)/cover.jpg HTTP/1.1» 403 759 «-» «Mozilla/5.0 (Linux) mirall/2.6.1git (Nextcloud)»
Поэтому — на хосте добавляем пользователя calibre в группу www-data:
Проверяем группы:
Рекурсивно задаём доступ полный доступ ко всем каталогам для всех членов группы www-data
, в которую теперь входят и сам пользователь www-data
, и пользователь calibre
:
И меняем владельца и группу каталогов и папок:
Готово, синхронизация снова работает.
Что бы обеспечить постоянность хранения настроек — находим, где в контейнере хранятся данные приложения, в частности — его база данных, в которой Calibre хранит настройки веб-сервиса.
Подключаемся в контейнер:
Находим все файл .db:
На хосте создаём каталоги для Compose файла и для данных:
В каталоге /opt/calibre-web/
создаём Docker Compose файл calibre-compose.yml
:
version: '3' services: calibre-web: user: "root:root" image: technosoft2000/calibre-web container_name: calibre-web ports: - 8083:8083 volumes: - /data/nextcloud/app/data/setevoy/files/Books/CALIBRE/:/books - /data/calibre/app:/calibre-web/app/ - /var/run/docker.sock:/tmp/docker.sock:ro restart: unless-stopped
Запускаем:
Создание unit-файла для systemd
описано в посте Linux: systemd сервис для Docker Compose, у меня получился такой /etc/systemd/system/calibre.service
:
[Unit] Description=Calibre library service Requires=docker.service After=docker.service [Service] Restart=always WorkingDirectory=/opt/calibre-web ExecStart=/usr/local/bin/docker-compose -f calibre-compose.yml up ExecStop=/usr/local/bin/docker-compose -f calibre-compose.yml down [Install] WantedBy=multi-user.target
Из коробки есть поддержка двух цветовых тем — стандартная, светлая:
И тёмная:
Moon+ Reader из недавних находок.
Вроде как умеет синхронизировать позицию прочитанной книги при использовании Dropbox/WebDAV, добавление комментариев, закладки, и всё то, что нужно от читалки.
Устанавливаем, настраиваем WebDAV:
И получаем доступ к библиотеке:
Что бы Moon+ синхронизировал позицию прочтения — открываем книгу, затем справа вверху три точки > Miscellaneous, и в самом низу включаем Sync reading positions:
Готово.
Источник: rtfm.co.ua
Наш сайт является информационным посредником. Сообщить о нарушении авторских прав.
HOWTO's Разное Android books Linux