Biblioteca Calibre en Raspberry con OPDS

Sección Unicamente para Tutoriales y Guías
Responder
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

Debido a que yo tenía que viajar este verano y mi madre se quedaba sin la biblioteca de Calibre que ella usa y que yo tengo en mi portátil, tuve que ideármelas para evitar sus miraditas de reproche y desamparo (Puedo asegurar que son muy eficaces). Como su eBook y los programas de su Smartphone y Tablet soportan el formato OPDS (Open Publication Distribution System - que es un sencillo sistema de catalogación y distribución de libros basado en Atom y html), decidí utilizar la Raspberry como servidor OPDS. Para que fuera más fácil y rápido, sin tener que adaptar la base de datos de Calibre, recurrí a COPS (Que es un servidor OPDS específico para la biblioteca de Calibre).

Como no tengo muchos libros almacenados (Para bibliotecas mayores recomiendo usar mi “Manual para aumentar el rendimiento de la Raspberry mediante arranque mixto SD y HD (o USB)” que podéis encontrar en viewtopic.php?f=6&t=6360&p=53542#p53542) decidí dejarlo en la tarjeta SD.

Los programas para “Android” e “iPhone/iPad” que soportan OPDS son: Aldiko, AlReader, Book Bazaar Reader, BookMaster CE, BookMaster SE, Bookviser, Coffee Reader, Document Viewer, eBook Search, eBook Search Pro, EPUBReader, FBReader, iBouquiniste, IDEAL Group Reader, KOReader, Mantano Reader, Marvin, MegaReader, Moon+ Reader Pro, QuickReader y Stanza. En los demás programas se pueden descargar los libros desde la página web del servidor.

Prácticamente todos los eBooks con wifi aceptan el formato OPDS, aunque también podemos acceder y descargar desde la web.

Desde Windows, Linux o MacOS podemos leerlos directamente desde un navegador.

Para añadir como catalogo nuestro servidor OPDS desde nuestra red interna a los programas de Android, iPhone/iPad o eBooks:
http://ip_servidor/feed.php

También podemos acceder desde cualquier navegador web en la dirección:
http://ip_servidor


INFORME TÉCNICO

He utilizado una PI3 con SD de 16GB, SO 2017-07-05-raspbian-jessie-lite, PHP7 y Apache2.

PARA LOS PURISTAS: Aunque he instalado casi todas las librerías de PHP7, realmente sólo se necesitaría instalar Apache2 (o Nginx) y las librerías de PHP7 siguientes: php7.0-gd php7.0-sqlite3 php7.0-json php7.0-intl php7.0-xml php7.0-mbstring php7.0-zip. Para PHP5 las librerías serían: php5-gd php5-sqlite php5-json php5-intl.


:ponpon ¡¡EMPEZAMOS!! :ponpon


ACTUALIZAMOS EL SISTEMA

Código: Seleccionar todo

sudo apt-get update && sudo apt-get upgrade

INSTALAMOS REPOSITORIOS

Código: Seleccionar todo

sudo su

Código: Seleccionar todo

echo "deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi" >> /etc/apt/sources.list

Código: Seleccionar todo

echo "Package: *" >> /etc/apt/preferences

Código: Seleccionar todo

echo "Pin: release n=jessie" >> /etc/apt/preferences

Código: Seleccionar todo

echo "Pin-Priority: 600" >> /etc/apt/preferences

Código: Seleccionar todo

exit

Código: Seleccionar todo

sudo apt-get update

INSTALAMOS SERVIDOR WEB

Código: Seleccionar todo

sudo apt-get install -t stretch php7.0 php7.0-bz2 php7.0-cli php7.0-curl php7.0-gd php7.0-sqlite3 php7.0-fpm php7.0-intl php7.0-json php7.0-mbstring php7.0-mcrypt php-pear php7.0-imap php-memcache php7.0-pspell php7.0-recode php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mysql php7.0-opcache php7.0-xml php7.0-zip php-imagick php-redis libapache2-mod-php7.0 apache2
- Tardará bastante y en algunos paquetes te aparecerá "deprecated", no te preocupes porque se instalaran las nuevas versiones.
- Cuando te aparezca (:) dos puntos en la parte inferior izquierda deberás pulsar ENTER hasta que aparezca (q to quit) entonces pulsas "q"
- Después te aparecerán varias pantallas azules
"Restart services during package upgrades without asking?" ----> NO
"Services to restart for GNU library upgrade: ssh cron" -----------> OK

Código: Seleccionar todo

sudo apt-get autoremove

EDITAR php.ini

Código: Seleccionar todo

sudo cp /etc/php/7.0/fpm/php.ini /etc/php/7.0/fpm/php.ini.viejo

Código: Seleccionar todo

sudo nano /etc/php/7.0/fpm/php.ini

BUSCAMOS Y HABILITAMOS LOS SIGUIENTES COMPLEMENTOS

Buscamos ";extension=php_gd2.dll" mediante CRTL+W y le quitamos el (;) inicial.
;extension=php_gd2.dll
Y lo modificamos
extension=php_gd2.dll
Buscamos ";extension=php_intl.dll" que estará un poco más abajo del anterior y le quitamos el (;) inicial.
;extension=php_intl.dll
Y lo modificamos
extension=php_intl.dll
Buscamos ";extension=php_pdo_sqlite.dll" que también estará un poco más abajo y le quitamos el (;) inicial.
;extension=php_pdo_sqlite.dll
Y lo modificamos
extension=php_pdo_sqlite.dll
Guardamos CRTL+O y cerramos CRTL+X


REINICIAMOS

Código: Seleccionar todo

sudo reboot

INSTALACIÓN DE COPS Y CONFIGURACIÓN

Código: Seleccionar todo

sudo apt-get install git

Código: Seleccionar todo

git clone https://github.com/seblucas/cops.git

Código: Seleccionar todo

cd cops

Código: Seleccionar todo

wget https://getcomposer.org/composer.phar

Código: Seleccionar todo

php composer.phar global require "fxp/composer-asset-plugin:~1.1"

Código: Seleccionar todo

php composer.phar install --no-dev --optimize-autoloader

Código: Seleccionar todo

cd ..

Código: Seleccionar todo

sudo cp -R /var/www/html /var/www/htmlviejo

Código: Seleccionar todo

sudo rm -R /var/www/html

Código: Seleccionar todo

sudo mv cops /var/www/html

Código: Seleccionar todo

sudo chmod 777 -R /var/www/html
Necesitamos la BIBLIOTECA ubicada en la carpeta “Calibre Library” del ordenador donde tengamos instalado Calibre y la copiamos a la tarjeta SD, USB o HD que sea accesible al servidor OPDS. En mi caso, la he copiado directamente al directorio “/var/www/html/”.


LE DECIMOS AL SERVIDOR DONDE SE ENCUENTRA LA BIBLIOTECA

Código: Seleccionar todo

sudo cp /var/www/html/config_local.php.example /var/www/html/config_local.php

Código: Seleccionar todo

sudo nano /var/www/html/config_local.php
Buscamos
$config['calibre_directory'] = './';
Y lo modificamos
$config['calibre_directory'] = '/var/www/html/Calibre Library/';
Guardamos CRTL+O y cerramos CRTL+X


CAMBIAMOS LENGUAJE QUE POR DEFECTO ESTÁ EN INGLÉS

Código: Seleccionar todo

sudo cp /var/www/html/config_default.php /var/www/html/config_default.php.viejo

Código: Seleccionar todo

sudo nano /var/www/html/config_default.php
Buscamos al final de archivo
$config['cops_language'] = '';
Y lo modificamos
$config['cops_language'] = 'es';
Guardamos CRTL+O y cerramos CRTL+X

También podéis cambiar otros muchos parámetros, pero eso lo dejo a vuestra elección.


REINICIAMOS

Código: Seleccionar todo

sudo reboot


:mareado TERMINADO :mareado



Ahora podremos usar nuestra Biblioteca, añadiéndola como catálogo a cualquier programa de Smartphone, Tablet o eBook que soporte OPDS o usándola directamente desde cualquier navegador.

Espero que os sea útil. Si alguien tiene alguna duda, sugerencia o comentario no dudeis en hacermelo saber.


Abrazos
:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

kamber escribió:Alucinando, como siempre... con tus aportes

:victoria
:| Y tú, como siempre... tan amable ;)

Abrazos
:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
patricio
Pi Newbie
Pi Newbie
Mensajes: 7
Registrado: 30 Jul 2017, 21:36
Agradecido: 0
Agradecimiento recibido: 0

increible

muchas gracias

salu2
coronelcervera
Pi Master
Pi Master
Mensajes: 213
Registrado: 12 Mar 2017, 11:58
Agradecido: 0
Agradecimiento recibido: 0

Qué gran tutorial.Muchas gracias.
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

patricio escribió:increible

muchas gracias

salu2
:| Gracias a tí. Encantada de ayudarte :D

Abrazos
:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

coronelcervera escribió:Qué gran tutorial.Muchas gracias.
:) De nada, espero que te sirva. :D

Abrazos
:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
kamblor
Pi Newbie
Pi Newbie
Mensajes: 2
Registrado: 07 Ene 2019, 00:52
Agradecido: 0
Agradecimiento recibido: 0

Hola muy buenas!

Muy gran tutorial, el tema es viejo pero lo acabo de descubrir y lo configure todo y va de perlas. :mrgreen: :mrgreen:

Para rizar el rizo, ¿Me podríais orientar para poder entrar desde fuera de la red lan? Soy bastante lammer en esto de linux

Muchas gracias
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

kamblor escribió: 07 Ene 2019, 00:56 Hola muy buenas!

Muy gran tutorial, el tema es viejo pero lo acabo de descubrir y lo configure todo y va de perlas. :mrgreen: :mrgreen:

Para rizar el rizo, ¿Me podríais orientar para poder entrar desde fuera de la red lan? Soy bastante lammer en esto de linux

Muchas gracias
Poder, se puede hacer, pero no te recomiendo que lo hagas. Aunque, por supuesto, es decisión tuya.

En primer lugar
Necesitarías un servicio DDNS como NO-IP, DYNDNS o similares. De esta forma podrías utilizar la IP Dinámica, asignada por tu proveedor de servicios, dándole un nombre de dominio.

En segundo lugar
En tu Router tienes que redireccionar el puerto 80 (http) a la IP de tu Raspberry, que puedes obtener mediante el comando
$ ip add
Ten en cuenta que cada Router es diferente y tendrás que mirar en su manual.

¿Por qué no lo recomiendo?
COPS es un sistema sin clave ni protección, está abierto por completo y cualquiera tiene libre acceso a todo su contenido.

Mi recomendación
Crear un servidor VPN en otra Raspberry y utilizarlo como puerta de acceso a tu red interna desde el exterior. Esto también te permitiría tener otros servicios, como VNC, sin afectar a la seguridad.

Espero que te sirva.

Abrazos
:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
kamblor
Pi Newbie
Pi Newbie
Mensajes: 2
Registrado: 07 Ene 2019, 00:52
Agradecido: 0
Agradecimiento recibido: 0

¡Muchas gracias! Probaré a ver si me vale y valoro el riesgo, que ya me lo temía.
Responder