Тут я расскажу о создании личной электронной библиотеки, чтобы было куда складывать приобретенные книги, и пользоваться OPDS каталогом в приложениях на гаджетах.
Что необходимо:
Собственно Raspberry Pi5, родной блок питания к ней на 5А, надежный usb-хаб с внешним питанием, два внешних диска и установленная система Raspbian OS.
На каких дисках хранить? Это зависит от Ваших аппетитов. Необходимо учесть, если будем качать большую библиотеку в архивах, то при добавлении в программу-каталогизатор архивы будут распакованы и сохранены в базу данных, при этом объем книг увеличивается в 1,5 — 2 раза.
Моя домашняя схема выглядит так:
1. Распберри пай 5 с системным USB3.0-HDD 320 ГБ. Не SDD, а именно HDD, зачем мне короткоживущие микросхемные диски? Тут главное не скорость, главное — надежность. Хотя, про скорость справедливости ради скажу, что мой HDD во встроенном в систему тесте на пригодность показал — PASS.
2. Установлена торрент-качалка transmission, диск для нее USB 3.0-HDD 1 ТБ, формат 2.5, питание получает от usb-хаба.
3. Установлена программа calibre, диск для библиотеки USB 3.0-HDD 2 ТБ, формат 3,5, питание 12в и 5в. 12в — подведено отдельным блоком питания на 5А, 5в получает от usb-хаба.
* надежности ради лучше подключать диски к малине через USB-хабы с отдельным БП, чтобы питание миникомпьютера не проседало. Путем долгих проб и ошибок мной были отвергнуты все доступные в магазинах устройства, т.к. даже в неподключенном к компьютеру состоянии они не могли нормально раскрутить шпиндели двух дисков. С «Озона» мне пришло вот это устройство, которое обеспечивает надежность питания и подключения.
4. Установлен Apache2, PHP 8.2 , composer и OPDS-сервер COPS.
5. Малина имеет надежное проводное подключение к интернету, её IP адрес известен.
*Если Вы не знаете что такое Ip адрес и где его найти — не беритесь за все тут сказанное, лучше для начала подтяните матчасть.
Итак, начнем.
Монтируем диски, важно, чтобы строка монтирования в fstab содержала «uid=www-data,gid=www-data» — чтобы потом сервер спокойно оперировал с данными на дисках.
sudo mkdir /mnt/books
sudo mkdir /mnt/data
sudo nano /etc/fstab
Вставляем туда:
UUID=8763927463827564 /mnt/books ntfs nofail,uid=www-data,gid=www-data,dmask=0007 0 0 UUID=9784657361548574 /mnt/data ntfs nofail,uid=www-data,gid=www-data,dmask=0007 0 0
Сохраняем файл: Ctrl+X, y, Enter. Перезагружаемся:
sudo reboot
Чтобы самому заходить на диски без проблем — добавьте вашего пользователя в группу www-data:
sudo adduser user www-data
Далее — последовательно по списку.
Устанавливаем Calibre
sudo apt install calibre
После установки Calibre запускаем через ярлык в приложениях (папка офис).
При первом запуске Calibre предложит указать расположение будущей библиотеки.
Добавляем путь к библиотеке:
/mnt/books/library
Добавляем несколько книг для пробы
Устанавливаем Apache2, PHP 8.2, git и composer:
sudo apt install apache2 sudo apt install git php8.2 php8.2-gd php8.2-cli php8.2-sqlite3 php8.2-intl php8.2-xml php8.2-mbstring php8.2-zip composer
Установим OPDS сервер COPS
Этот OPDS сервер перестал развиваться его создателем, а созданная им старая версия требует PHP 5.3, 5.4, 5.5, 5.6, 7.х . Но упавший флаг подхватили другие и дело продолжили — вот тут ссылка на свежую версию, поддерживающую PHP8.2.
Для установки COPS необходимо ввести несколько консольных команд:
sudo mkdir /var/www/html/ebooks cd /var/www/html/ebooks sudo git clone https://github.com/mikespub-org/seblucas-cops.git . cd sudo chown -R www-data:www-data /var/www/html/ebooks
Теперь создаем и редактируем конфигурационный файл:
sudo cp /var/www/html/ebooks/config/local.php.example /var/www/html/ebooks/config/local.php
Открываем созданный файл настроек local.php для редактирования:
sudo nano /var/www/html/ebooks/config/local.php $config['calibre_directory'] = '/mnt/books/library'; $config['cops_title_default'] = "MyLibrary";
Сохраняем файл: Ctrl+X, y, Enter.
Настраиваем Apache2
sudo nano /etc/apache2/sites-available/ourserver.ru.conf
Вставляем:
Alias /ebooks "/var/www/html/ebooks" <Directory /var/www/html/ebooks> Require all granted AllowOverride All Options FollowSymLinks MultiViews <IfModule mod_dav.c> Dav off </IfModule> </Directory>
Сохраняем файл: Ctrl+X, y, Enter.
Включаем сайт:
sudo a2ensite ourserver.ru.conf sudo systemctl reload apache2
Если все сделали правильно, то во Ip-адресу малины откроется тестовая страница браузера:
А по адресу: IP-адрес/ebooks — откроется сайт библиотеки.
OPDS-каталог будет доступен по адресу: IP-адрес/ebooks/index.php/feed
Теперь настроим защиту паролем сайта библиотеки при помощи базовой авторизации http. Открываем файл .htaccess в папке сервера COPS для правки:
sudo nano /var/www/html/ebooks/.htaccess
Вставляем туда внизу (или исправляем то, что есть):
AuthType Basic AuthName "Access secure" AuthUserFile /var/www/html/ebooks/.htpasswd Require valid-user
Теперь создадим файл .htpasswd
sudo nano /var/www/html/ebooks/.htpasswd
добавляем туда login:password в виде одной строки, (пароль обязательно в хешированном виде, хэш пароля можно сделать по этой ссылке.).
Запись в файле паролей должна быть похожа на:
user:{SHA}3454dfthr5yghfhjbtgdfbr6y45hg=
Сохраняем файл: Ctrl+X, y, Enter.
Перезагружаем апач:
sudo systemctl reload apache2
Теперь ваш сайт библиотеки (если Вы планируете доступ из интернета) будет защищен авторизацией. Для простоты доступа логин и пароль можно интегрировать в адресную строку:
http://login:password@IP-адрес/ebooks
http://login:password@IP-адрес/ebooks/index.php/feed
В данном случае пароль указывается в обычном, нехешированном виде.
На этом все.
Полезные ссылки:
https://pimylifeup.com/raspberry-pi-ebook-server/
https://github.com/mikespub-org/seblucas-cops?tab=readme-ov-file#readme
https://bewave.ru/blog/nastroyka-http-basic-auth-v-trekh-slovakh/