Cómo crear un servidor de libros electrónicos de calibre en Ubuntu 20.04

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Descarga e instalación del servidor de contenido de calibre
  • Paso 2: crear una biblioteca y agregar su primer libro
  • Paso 3: Ejecutar el servidor de contenido de calibre y visualizar su biblioteca
  • Paso 4: Creación de un servicio para el servidor de contenido de calibre
  • Paso 5 (opcional): agregar autenticación de usuario al servidor de contenido de calibre
  • Paso 6 (opcional): agregar libros automáticamente a su biblioteca de calibre
  • Paso 7 (opcional): instalación de Apache2 y entrega de su biblioteca a través de HTTPS
    1. Instalación y configuración de Apache2
    2. Instalación de Certbot y configuración de un certificado SSL
  • Conclusión
  • El autor seleccionó el Fondo de Ayuda COVID-19 para recibir una donación como parte del programa Write for DOnations .

    Introducción

    Calibre es un gestor de libros electrónicos gratuito y de código abierto , conocido por su aplicación de escritorio multiplataforma. Puede utilizar Calibre para gestionar su biblioteca de libros electrónicos en un único dispositivo, pero la aplicación también incluye un potente componente de servidor. Configurar un servidor de libros electrónicos le permite:

    • Accede a tus libros desde cualquier parte del mundo
    • Transfiera fácilmente sus libros a dispositivos móviles
    • Comparte libros con tus amigos y familiares

    El servidor de contenido de calibre incluye un backend para servir sus libros y un frontend básico para buscar en su biblioteca , descargar títulos individuales o incluso leer sus libros directamente a través de un navegador web. El servidor también ofrece una interfaz móvil básica que funciona con una amplia variedad de dispositivos, incluidos los navegadores básicos que se incluyen con muchos lectores de tinta electrónica, como Kindle y Kobo.

    En este tutorial, configurará y utilizará el servidor de contenido de calibre en Ubuntu 20.04. En concreto, descargará e instalará el servidor de calibre, configurará calibre como un servicio para que se inicie automáticamente cuando se reinicie el servidor y agregará libros a su biblioteca mediante herramientas de línea de comandos. También encontrará opciones para configurar un trabajo cron para agregar automáticamente nuevos libros a su biblioteca desde un directorio específico, agregar autenticación a su servidor para que solo usted pueda acceder a él y agregar un certificado SSL/TLS gratuito para servir su biblioteca a través de HTTPS para mayor seguridad.

    Advertencia: Como sucede con todo contenido creativo, es importante respetar las licencias de derechos de autor asociadas con los materiales creados por otros. Este tutorial utiliza libros de dominio público descargados legalmente del Proyecto Gutenberg , que cuenta con más de 60 000 libros electrónicos gratuitos.

    Prerrequisitos

    • Un servidor que ejecuta Ubuntu 20.04 con un usuario sudo y un firewall. Puede consultar nuestra Guía de configuración inicial del servidor para obtener instrucciones .
    • El paso 7 incluye la opción de proteger su servidor de contenido de calibre con un certificado SSL. Si desea hacerlo, necesitará un nombre de dominio con un registro A disponible. Si está utilizando un Droplet de DigitalOcean , puede seguir nuestra guía sobre Cómo apuntar a servidores de nombres de DigitalOcean desde registradores de dominios comunes para obtener instrucciones.

    Paso 1: Descarga e instalación del servidor de contenido de calibre

    Aunque calibre existe en los repositorios de software de Ubuntu, la versión que se encuentra allí suele estar por detrás de la última versión. Por lo tanto, la documentación oficial de calibre recomienda que lo instales desde un binario alojado en su sitio.

    Primero, instale algunas dependencias necesarias:

    1. sudo apt update sudo apt install -y libfontconfig libgl1-mesa-glx

    Ahora descargue e instale el servidor calibre.

    1. wget https://download.calibre-ebook.com/linux-installer.sh

    Inspeccione el contenido del script:

    1. less linux-installer.sh

    Puede desplazarse hacia arriba y hacia abajo con las teclas ky jy presionar qpara regresar a su terminal cuando haya terminado.

    Ahora ejecute el script para instalar calibre:

    1. sudo sh linux-installer.sh

    calibre espera un entorno de escritorio, pero no lo encontrará en un servidor sin interfaz gráfica, por lo que verá algunas advertencias sobre errores en la integración del escritorio. Es seguro ignorarlas porque controlaremos calibre completamente a través de sus herramientas de línea de comandos y su interfaz web.

    Ahora que hemos instalado calibre, podemos comenzar a explorar su funcionalidad.

    Paso 2: crear una biblioteca y agregar su primer libro

    Para explorar la funcionalidad de calibre, descarguemos un libro .epubelectrónico .mobi. Usaremos como ejemplo Un cuento de Navidad de Charles Dickens del Proyecto Gutenberg . El Proyecto Gutenberg mantiene un repositorio masivo de literatura gratuita de dominio público y es un gran recurso para libros electrónicos.

    Ejecute el siguiente comando para descargar este libro a su servidor:

    1. wget http://www.gutenberg.org/ebooks/46.kindle.noimages -O christmascarol.mobi

    Ahora crea un directorio que calibre pueda usar como tu biblioteca de libros electrónicos:

    1. mkdir calibre-library

    Y agrega el libro que acabas de descargar a tu nueva biblioteca usando el calibredbcomando:

    1. calibredb add *.mobi --with-library calibre-library/

    Verá el siguiente resultado:

    OutputAdded book ids: 1

    Con un libro agregado a su biblioteca, ahora puede iniciar calibre y explorar la aplicación.

    Paso 3: Ejecutar el servidor de contenido de calibre y visualizar su biblioteca

    Con calibre instalado y un libro descargado, estamos listos para explorar la interfaz de usuario de la aplicación. Pero antes de acceder al servidor de contenido de calibre en un navegador web, debemos asegurarnos de que nuestro servidor pueda aceptar tráfico en el puerto 8080, que es el puerto predeterminado para calibre. Si siguió la guía de configuración inicial del servidor en la sección de requisitos previos, entonces habilitó ufw, o Firewall sin complicaciones . Ahora debe permitir el puerto 8080a través del firewall.

    Utilice el siguiente comando para abrir el puerto 8080:

    1. sudo ufw allow 8080

    Verifique el estado de ufwpara asegurarse de que el puerto esté abierto:

    1. sudo ufw status

    Verás un resultado como este:

    OutputStatus: activeTo                         Action      From--                         ------      ----OpenSSH                    ALLOW       Anywhere8080                       ALLOW       AnywhereOpenSSH (v6)               ALLOW       Anywhere (v6)8080 (v6)                  ALLOW       Anywhere (v6)

    Ahora ejecute el siguiente comando para iniciar el servidor de contenido de calibre:

    1. calibre-server calibre-library

    calibre-serveres el comando utilizado para iniciar nuestro servidor y calibre-libraryes el nombre del directorio que creamos anteriormente y le dijimos a calibre que usara como nuestra biblioteca.

    Verás un resultado como este:

    calibre server listening on 0.0.0.0:8080OPDS feeds advertised via BonJour at: your_server_ip port: 8080

    Desde su máquina local, visite your_server_ip:8080(sustituyendo la dirección IP de su servidor) y verá la pantalla predeterminada de calibre. Haga clic en calibre-library y verá el libro que agregó en el paso anterior.

    Haga clic Ctrl+Cpara detener el proceso manual del servidor que inició.

    Este método de ejecución del servidor de contenido de calibre funciona bien, pero probablemente desee que su biblioteca funcione todo el tiempo, incluso después de cerrar la conexión SSH a su servidor. Para asegurarse de que siempre se ejecute, incluso después de reiniciar su servidor, convirtamos el servidor de contenido de calibre en un servicio.

    Paso 4: Creación de un servicio para el servidor de contenido de calibre

    Para mejorar la usabilidad del servidor de contenido de calibre, reemplacemos nuestro proceso de servidor manual con un servicio que se iniciará en el arranque.

    Primero, crea un archivo llamado calibre-server.serviceen el directorio /etc/sytemd/system/:

    1. sudo nano /etc/systemd/system/calibre-server.service

    Ahora, agregue las siguientes configuraciones, que iniciarán el servidor de contenido de calibre al iniciar el sistema. Asegúrese de reemplazar el texto resaltado con su usuario y grupo:

    servicio de servidor de calibre

    ## startup service[Unit]Description=calibre content serverAfter=network.target[Service]Type=simpleUser=sammyGroup=sammyExecStart=/opt/calibre/calibre-server /home/sammy/calibre-library --enable-local-write[Install]WantedBy=multi-user.target

    Aquí le indicamos a nuestro servicio que use la --enable-local-writebandera al iniciar el servidor. Cuando el servidor está en ejecución, no puede usar el calibredbcomando para agregar libros como hicimos para Un cuento de Navidad directamente. En cambio, debe hacerlo “a través” del servidor en ejecución, como veremos en breve, y esto significa que el servidor necesita permiso para escribir nuevos archivos en el disco. Esta bandera le permite hacerlo siempre que reciba la solicitud localmente.

    Guarde y cierre el archivo.

    Ahora habilita el servicio e inícialo:

    1. sudo systemctl enable calibre-server
    2. sudo systemctl start calibre-server

    Reinicie su servidor:

    1. sudo reboot

    Espere unos minutos y vuelva a visitar su navegador web local para asegurarse de que el servidor de contenido de Calibre se haya iniciado automáticamente.http://your_server_ip:8080

    Ahora agreguemos algo de autenticación a nuestra aplicación.

    Paso 5 (opcional): agregar autenticación de usuario al servidor de contenido de calibre

    Ahora tienes un servidor de contenido de calibre en pleno funcionamiento al que puedes acceder desde cualquier dispositivo. Sin embargo, actualmente, cualquiera que conozca la dirección IP de tu servidor puede acceder a tus libros electrónicos. Es posible que no quieras que esto suceda. En su lugar, configuremos el sistema de administración de usuarios integrado de calibre para que puedas obligar a los visitantes a autenticarse con un nombre de usuario y una contraseña.

    Primero, vuelva a conectarse a su servidor mediante SSH y detenga calibre. Esto nos permitirá manipular la base de datos de calibre directamente:

    1. sudo systemctl stop calibre-server

    Ahora inicie el script de administración de usuarios de calibre:

    1. calibre-server --manage-users

    Cuando se le solicite, elija agregar un nuevo usuario. Luego, seleccione un nombre de usuario y una contraseña segura. Verá un mensaje final como este:

    OutputUser mycalibreuser added successfully!

    Ahora necesitamos hacer una pequeña edición en nuestro servicio.

    Reabrir calibre-server.service:

    1. sudo nano /etc/systemd/system/calibre-server.service

    Para habilitar la autenticación, agregue la --enable-authbandera al final de la línea que comienza con ExecStart. Debería verse así:

    . . .ExecStart=/opt/calibre/calibre-server /home/sammy/calibre-library --enable-local-write --enable-auth. . .

    Guarde y cierre el archivo.

    Actualice el demonio de servicios para volver a escanear los archivos de servicios e inicie nuevamente el servidor calibre con:

    1. sudo systemctl daemon-reload
    2. sudo systemctl start calibre-server

    Si visita su biblioteca nuevamente, ahora debería solicitarle un nombre de usuario y una contraseña antes de permitirle acceder a ella.

    Hay más formas de agregar funcionalidad a nuestro servidor de contenido de calibre. En el siguiente paso, agregaremos una tarea programada para agregar automáticamente los libros descargados a nuestra biblioteca de calibre.

    Paso 6 (opcional): agregar libros automáticamente a su biblioteca de calibre

    Puede resultar útil configurar una tarea programada que vigile un directorio específico y agregue los libros que encuentre a su biblioteca de calibre. De esta manera, puede descargar o cargar libros en esta carpeta y estarán disponibles automáticamente a través de la interfaz web de calibre.

    Crea una carpeta llamada books-to-adden tu directorio de inicio y navega dentro:

    1. mkdir ~/books-to-add
    2. cd ~/books-to-add

    Descargue un nuevo libro en este directorio. Utilice el siguiente comando para descargar Alicia en el país de las maravillas desde el Proyecto Gutenberg:

    1. wget https://www.gutenberg.org/ebooks/11.epub.images -o alice.epub

    Ahora abre tu crontab:

    1. crontab -e

    Aquí configuraremos un script para agregar todos los archivos en este directorio a calibre y luego eliminarlos (agregar libros a calibre crea una copia de los archivos en el directorio de su biblioteca, por lo que podemos eliminar los originales una vez que se agregan).

    Añade el siguiente contenido:

    /var/spool/cron/crontabs/su_nombre_de_usuario

    */5 * * * * calibredb add /home/sammy/books-to-add/ -r --with-library http://localhost:8080#calibre-library --username mycalibreuser --password StrongPassword!  rm -r /home/sammy/books-to-add/*

    Guarde y cierre el archivo.

    Esto se ejecutará cada 5 minutos, por lo que no debería tener que esperar mucho tiempo para que su nuevo libro aparezca en la interfaz web. Espere unos minutos y luego vuelva a cargar la biblioteca en su navegador web local. Su nuevo libro aparecerá junto a Un cuento de Navidad .

    Paso 7 (opcional): instalación de Apache2 y entrega de su biblioteca a través de HTTPS

    Necesita un nombre de usuario y una contraseña para acceder a su biblioteca, pero no es realmente seguro porque la está sirviendo a través de HTTP y enviando su nombre de usuario y contraseña sin cifrar cada vez que se autentica. Una opción más segura es asegurarse de que todo el tráfico se cifre mediante HTTPS. Si posee un nombre de dominio, puede apuntarlo a su servidor e instalar un certificado SSL gratuito mediante Let’s Encrypt. (También puede utilizar un subdominio como .)ebooks.your_domain

    Instalación y configuración de Apache2

    Usaremos el servidor web Apache2 como proxy inverso para calibre. Anteriormente teníamos que adjuntar el número de puerto :8080cuando visitábamos nuestra biblioteca porque ese es el puerto predeterminado en el que se ejecuta calibre. Ahora configuraremos Apache2 para que escuche las solicitudes en el puerto 80(el puerto predeterminado para el tráfico HTTP), envíe solicitudes por proxy al servidor de calibre que se ejecuta localmente en :8080y las entregue al usuario final de manera transparente para que no tenga que preocuparse por especificar el número de puerto. Luego, protegeremos todo nuestro tráfico en el puerto 443con un certificado SSL.

    Instale Apache2 y habilite los módulos proxy que necesitamos con los siguientes comandos:

    1. sudo apt install -y apache2
    2. sudo a2enmod proxy proxy_http

    Ahora asegúrese de que su servidor permita el tráfico en los puertos 80y 443. Cierre 8080también el puerto :

    1. sudo ufw allow 'Apache Full'
    2. sudo ufw delete allow 8080

    A continuación, cree y abra un archivo en :/etc/apache2/sites-available/your_domain.conf

    1. sudo nano /etc/apache2/sites-available/your_domain.conf

    Agregue las siguientes configuraciones, que vincularán su dominio al servidor de calibre:

    /etc/apache2/sitios-disponibles/su_dominio.conf

    LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_http_module modules/mod_proxy_http.soVirtualHost *:80    ServerName your_domain    AllowEncodedSlashes On    ProxyPreserveHost On    ProxyPass "/"  "http://localhost:8080/"/VirtualHost

    Por último, habilite esta nueva configuración del sitio:

    1. sudo a2ensite your_domain.conf
    2. systemctl reload apache2

    Visite el sitio en un navegador para verificar que se carga el servidor de contenido de calibre. Apache ahora está prestando servicio a su sitio.http://your_domain

    Instalación de Certbot y configuración de un certificado SSL

    Como paso final, aseguremos todo nuestro tráfico usando Certbot .

    Primero, instale Certbot:

    1. sudo snap install --classic certbot

    Ahora ejecute Certbot:

    1. sudo certbot --apache

    El programa Certbot lo guiará a través de una serie de indicaciones para instalar un certificado.

    • Ingrese su dirección de correo electrónico cuando se le solicite
    • Ingrese Apara aceptar los términos y condiciones cuando se le solicite
    • Seleccione Yo Ncuando se le solicite compartir su dirección de correo electrónico con la EFF
    • Seleccione 1cuando se le solicite para qué dominio desea el certificado (solo debe haber uno)

    Al finalizar, verás un mensaje de felicitación.

    Ahora puedes acceder a tu biblioteca de forma segura en .https://yourdomain

    Conclusión

    En este tutorial, configuraste un servidor de libros electrónicos de calibre. Lo convertiste en un servicio para que se iniciara cuando se iniciara tu servidor, agregaste una tarea programada para buscar y agregar automáticamente nuevos libros a tu biblioteca y configuraste la autenticación y un certificado SSL para protegerlo.

    Para ampliar el proyecto, puedes agregar más libros de tu biblioteca personal o de Project Gutenberg , Standard Ebooks o de otros sitios. Recuerda respetar siempre las leyes de derechos de autor asociadas con tu biblioteca de contenido.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion