Raspberry Pi 3. Организация электронной библиотеки и собственный OPDS-каталог

Raspberry Pi 3. Организация электронной библиотеки и собственный OPDS-каталог

Дата Автор Dmitry3 комментария 2 426 просмотров

В продолжение цикла статей о Raspberry Pi хочу рассказать, как можно использовать «малину» для организации на ее базе удобной и доступной по сети домашней библиотеки электронных книг.

Этот проект будет полезен всем, но особенно он придется по душе любителям все упорядочивать и раскладывать по полочкам :).

В ходе его реализации мы перенесем на Raspberry Pi хранящиеся на домашних компьютерах и ноутбуках электронные книги, каталогизируем их, а также настроим сетевой доступ к ним через web-интерфейс и собственный OPDS-каталог.

Для тех, кто не знает, что такое OPDS-каталог: это разновидность XML-фида, предназначенная для общения программ-читалок с серверами электронных книжных библиотек. Свои OPDS-каталоги есть у каждой крупной библиотеки, как пиратской Флибусты, так и полностью легального ЛитРеса. Если ввести в настройках книжной читалки адрес OPDS-фида, то можно просматривать содержимое электронной библиотеки прямо из читалки и закачивать понравившиеся книги напрямую в читалку нажатием одной кнопки, тем самым избавляя себя от кучи промежуточных действий.

Для реализации проекта будет использована программа Calibre, веб-сервер Apache и OPDS-сервер COPS.

Что нам понадобится

Для осуществления описываемых в этой статье действий понадобится:

Подразумевается, что на Raspberry Pi уже установлена и настроена OS Raspbian (как это сделать — я писал в этой статье).

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

Установка Calibre

Первым шагом нужно установить Calibre.

Calibre — программа для управления электронной библиотекой. Описание всех ее возможностей и правил работы с ней по объему потянет на отдельную статью (и эта статья рано или поздно будет написана и опубликована на этом блоге), но если в двух словах: Calibre позволяет каталогизировать электронные книги во всех распространенных форматах, создавая из них единую библиотеку с возможностью гибкого поиска, сортировки по тегам, просмотра аннотаций и обложек.

Также в Calibre есть встроенный веб-сервер, позволяющий поднять OPDS-каталог с веб-интерфейсом буквально в два щелчка мышью.

Но веб-интерфейс встроенного каталога получается громоздким и неудобным, поэтому вместо него мы будем использовать надстройку от стороннего разработчика под названием COPS — Calibre OPDS (and HTML) Server.

Итак, устанавливаем Calibre:

sudo apt-get update
sudo apt-get install calibre

Настройка Calibre

После установки Calibre можно запустить через ярлык, который в Raspbian будет находиться в каталоге «Офис» главного меню.

Raspberry Pi 3. Организация электронной библиотеки и собственный OPDS-каталог

При первом запуске Calibre предложит указать расположение будущей библиотеки. Средняя книга в форматах ePub или FB2 весит 1-2 мегабайта (хотя может и больше, в зависимости от количества иллюстраций), а вот книга в формате PDF может весить вплоть до сотни с небольшим мегабайт. Поэтому объем домашней библиотеки со временем может спокойно перевалить за пару-тройку гигабайт, а если в библиотеке помимо книг будут еще и журналы — занимаемый ею объем пойдет на гигабайты обязательно.

Так что я рекомендую размещать библиотеку не на microSD-карточке, а на подключенном к Raspberry Pi USB-накопителе.

Как правильно монтировать USB-накопители в Raspbian я писал в отдельной статье.

В моем случае я разместил библиотеку по пути /mnt/usbstorage/Ebooks. То есть, файлы будут находиться в папке /Ebooks, которая лежит на внешнем жестком диске, подключенном к «малине» по USB и смонтированном как /usbstorage.

Теперь осталось добавить в библиотеку пару-тройку книг, чтобы было с чем работать в дальнейшем. Calibre понимает все распространенные книжные форматы, так что с этим проблем не будет.

Установка веб-сервера Apache и PHP5

Следующим шагом необходимо установить на Raspberry Pi веб-сервер.

Существует два популярных веб-сервера для *nix-систем: Nginx и Apache. Для наших целей можно использовать любой из них, а в этой статье я буду описывать процесс поднятия OPDS-сервера на Apache.

У Nginx будет немного отличаться процесс настройки, поэтому для слабо разбирающихся в Linux рекомендую использовать Apache и просто повторять описываемые мной действия по шагам.

Итак, устанавливаем Apache:

sudo apt-get install apache2

Теперь нужно установить интерпретатор PHP5:

sudo apt-get install php5-gd php5-sqlite php5-json php5-intl
sudo apt-get install php5-common php5 libapache2-mod-php5 php5-cli php5-cgi php5-mysql

Если все сделано верно, то можно ввести в браузере IP-адрес своей «малины» и посмотреть на приветственное сообщение Apache:

Raspberry Pi 3. Организация электронной библиотеки и собственный OPDS-каталог

Если вы не знаете IP-адрес своей «малины», то его можно узнать консольной командой:

hostname -I

Или просто посмотреть в графическом интерфейсе Raspbian PIXEL, наведя курсор на значок сетевого подключения.

Установка COPS

Заключительный шаг — установка и настройка COPS — той самой надстройки, которая будет работать с базой данных Calibre и обеспечивать доступ к книгам через OPDS-каталог или веб-интерфейс.

Кроме того, в COPS встроена книжная читалка, позволяющая читать книги прямо в браузере без скачивания на устройство. К сожалению, эта встроенная читалка понимает только формат ePub, так что книги в форматах FB2 или MOBI через нее в браузере не полистать. Ну да поддержка ePub — это уже неплохо.

Для установки COPS необходимо ввести 5 консольных команд:

cd /var/www
sudo mkdir ebooks
cd ebooks
sudo wget https://github.com/seblucas/cops/releases/download/1.0.1/cops-1.0.1.zip
sudo unzip cops-1.0.1.zip

Думаю, понятно, что делают эти команды. Переходим в /var/www, создаем там папку /ebooks, в нее скачиваем и затем распаковываем архив с актуальной версией COPS.

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

После распаковки нужно отредактировать файл настроек:

sudo cp config_local.php.example config_local.php
sudo nano config_local.php

В нем нас интересуют 2 строчки:

$config['calibre_directory'] = './';
$config['cops_title_default'] = "COPS";

В первой строке должен быть прописан путь к папке библиотеки Calibre.

Во второй строке можно отредактировать, под которым у нас будет отображаться веб-интерфейс библиотеки. Т.е. вместо малоинформативного «COPS» написать, например, «Моя библиотека».

В моем случае путь к библиотеке Calibre прописывается так:

$config['calibre_directory'] = '/mnt/usbstorage/Ebooks/';

Связываем COPS и Apache

Настройка COPS почти завершена. Осталось подружить его с веб-сервером. Это делается через создание нового конфигурационного файла:

cd /etc/apache2/sites-available 
sudo nano cops.server.conf

В созданном файле прописываем следующее:

<VirtualHost *:80>
    #Имя хоста
    ServerName cops.server
    #Корневая папка хоста
    DocumentRoot /var/www/ebooks
    <Directory /var/www/ebooks>
        #Разрешение на перезапись всех директив при помощи .htaccess
        AllowOverride All
    </Directory>
</VirtualHost>

Этот файл объясняет Apache, что у него в директории /var/www/ebooks лежит отдельный веб-сайт.

Запуск COPS

Если при установке не было совершено ошибок, то теперь можно открыть веб-интерфейс COPS, введя в браузере http://ip-адрес-raspberry-pi/ebooks/:

Raspberry Pi 3. Организация электронной библиотеки и собственный OPDS-каталог

Пользоваться в нем поиском:

Raspberry Pi 3. Организация электронной библиотеки и собственный OPDS-каталог

Просматривать обложки книг:

Raspberry Pi 3. Организация электронной библиотеки и собственный OPDS-каталог

И аннотации к ним:

Raspberry Pi 3. Организация электронной библиотеки и собственный OPDS-каталог

А также читать книги в формате ePub прямо в браузере:

Raspberry Pi 3. Организация электронной библиотеки и собственный OPDS-каталог
А сам OPDS-каталог будет доступен по адресу http://ip-адрес-raspberry-pi/ebooks/feed.php, его можно указать в настройках OPDS программ для чтения на всех своих электронных устройствах.

Возможные проблемы

В целом, в установке и настройке COPS нет ничего сложного.

Тем не менее, в процессе могут возникнуть некоторые проблемы.

Ниже я попытался собрать самые распространенные из возможных проблем вместе со способами их решения.

Ошибка 403

Самая распространенная проблема, которая может возникнуть при установке и настройке COPS — это ошибка 403 Forbidden, выдаваемая браузером при попытке обращения к COPS.

Причина заключается в том, что где-то там на пути к папке с распакованным COPS веб-серверу не хватает прав доступа. Дело в том, что сервер работает от имени отдельного пользователя www-data, в то время как права доступа на файлы и папки принадлежат либо пользователю pi, либо пользователю root.

Решение проблемы — поменять права доступа:

sudo chown -R www-data:www-data /var/www 
sudo find /var/www -type f -exec chmod 644 {} \; 
sudo find /var/www -type d -exec chmod 755 {} \;

Скорее всего, это поможет. Но если нет — остается только гуглить по запросу «apache 403 forbidden» и пробовать другие варианты решения.

Проблема настройки прав доступа для Apache и Nginx очень распространена. И лично я побороть Nginx так и не смог, в результате просто установил вместо него Apache. С ним все как-то полегче пошло.

Не работает PHP-интерпретатор

Если при открытии веб-интерфейса COPS в браузере отображается содержание файла index.php в текстовой форме, то по какой-то причине в Apache не запустился интерпретатор PHP5.

Для решения проблемы нужно убедиться, что установлены все нужные пакеты:

sudo apt-get install php5-gd php5-sqlite php5-json php5-intl
sudo apt-get install php5-common php5 libapache2-mod-php5 php5-cli php5-cgi php5-mysql

Затем вручную включить интерпретатор:

sudo a2enmod php5

И, наконец, перезагрузить Apache:

sudo /etc/init.d/apache2 restart

Проблемы при установке Calibre

Может случиться так, что установка Calibre не доходит до конца, ругаясь на отсутствие каких-то файлов.

Это может произойти из-за того, что перед началом установки не был обновлен индекс пакетов.

Для решения проблемы нужно обновить индекс пакетов:

sudo apt-get update

И запустить установку Calibre повторно с ключом —fix-missing:

sudo apt-get install calibre --fix-missing

COPS не видит базу данных

Такая проблема возникает у владельцев некоторых NAS Synology, на Raspberry Pi ее быть не должно.

Решение проблемы — сделать так, чтобы весь путь до папки с базой данных был прописан в нижнем регистре и не содержал заглавных букв.
То есть, если рассматривать пример указанных мною настроек, то вместо пути:

/mnt/usbstorage/Ebooks/

Нужно указать путь:

/mnt/usbstorage/ebooks/

И, естественно, переименовать при этом саму папку. Регистр в названии файла имеет значение, «Ebooks» и «ebooks» в вышеприведенном примере — совершенно разные пути с точки зрения Linux-системы.

COPS выдает битые ссылки на скачивание книг

Веб-интерфейс COPS открывается, аннотации к книгам показываются, но ссылки на скачивание книг не работают.

Причина — включена опция Url Rewriting в настройках COPS. По умолчанию, кстати, она выключена.

Решение проблемы — выключить Url Rewriting. Для этого нужно открыть для редактирования файл настроек:

sudo nano config_local.php

И исправить строку

$config['cops_use_url_rewriting'] = "1";

На

$config['cops_use_url_rewriting'] = "0";

Заключение

Многие обладатели Raspberry Pi ограничиваются использованием этого микрокомпьютера в качестве ТВ-приставки, используя его для каталогизации и просмотра медиаконтента.

Но «малина» способна гораздо на большее, и шаг за шагом можно превратить ее в настоящий центр своей домашней сети. Один из таких шагов — перенос на нее коллекции электронных книг с последующей каталогизацией и организацией сетевого доступа.

О дальнейшем расширении возможностей использования Raspberry Pi я напишу в следующих статьях этого цикла.

Raspberry Pi 3B (английская сборка)в интернет-магазине GearBest Raspberry Pi 3B (китайская сборка)в интернет-магазине GearBest

Понравилась статья? Выразите благодарность автору переводом любой суммы на ваше усмотрение :)

3 комментария на «Raspberry Pi 3. Организация электронной библиотеки и собственный OPDS-каталог»

  1. Если поставить COPS и затем Nextcloud, то COPS начинает ругаться «Check if Sqlite is properly installed and loaded. Please install the php5-sqlite extension and make sure it’s enabled». Как-то можно их подружить?

    • Да, нужно поставить пакет php7.0-sqlite
      По умолчанию же устанавливается и используется интерпретатор PHP5, а если ставить Nextcloud по моей инструкции, то переключаемся на PHP7. Соответственно, все доп.пакеты, которые использовались с PHP5, нужно ставить заново уже в их версии для PHP7. Называются они так же, только нужно подставлять в названия «7.0» вместо «5»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *