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

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:
- sudo apt update sudo apt install -y libfontconfig libgl1-mesa-glx
Ahora descargue e instale el servidor calibre.
- wget https://download.calibre-ebook.com/linux-installer.sh
Inspeccione el contenido del script:
- less linux-installer.sh
Puede desplazarse hacia arriba y hacia abajo con las teclas k
y j
y presionar q
para regresar a su terminal cuando haya terminado.
Ahora ejecute el script para instalar calibre:
- 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 .epub
electró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:
- 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:
- mkdir calibre-library
Y agrega el libro que acabas de descargar a tu nueva biblioteca usando el calibredb
comando:
- 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 8080
a través del firewall.
Utilice el siguiente comando para abrir el puerto 8080
:
- sudo ufw allow 8080
Verifique el estado de ufw
para asegurarse de que el puerto esté abierto:
- 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:
- calibre-server calibre-library
calibre-server
es el comando utilizado para iniciar nuestro servidor y calibre-library
es 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+C
para 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.service
en el directorio /etc/sytemd/system/
:
- 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-write
bandera al iniciar el servidor. Cuando el servidor está en ejecución, no puede usar el calibredb
comando 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:
- sudo systemctl enable calibre-server
- sudo systemctl start calibre-server
Reinicie su servidor:
- 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:
- sudo systemctl stop calibre-server
Ahora inicie el script de administración de usuarios de calibre:
- 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
:
- sudo nano /etc/systemd/system/calibre-server.service
Para habilitar la autenticación, agregue la --enable-auth
bandera 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:
- sudo systemctl daemon-reload
- 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-add
en tu directorio de inicio y navega dentro:
- mkdir ~/books-to-add
- 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:
- wget https://www.gutenberg.org/ebooks/11.epub.images -o alice.epub
Ahora abre tu crontab:
- 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 :8080
cuando 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 :8080
y 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 443
con un certificado SSL.
Instale Apache2 y habilite los módulos proxy que necesitamos con los siguientes comandos:
- sudo apt install -y apache2
- sudo a2enmod proxy proxy_http
Ahora asegúrese de que su servidor permita el tráfico en los puertos 80
y 443
. Cierre 8080
también el puerto :
- sudo ufw allow 'Apache Full'
- sudo ufw delete allow 8080
A continuación, cree y abra un archivo en :/etc/apache2/sites-available/your_domain.conf
- 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:
- sudo a2ensite your_domain.conf
- 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:
- sudo snap install --classic certbot
Ahora ejecute Certbot:
- 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
A
para aceptar los términos y condiciones cuando se le solicite - Seleccione
Y
oN
cuando se le solicite compartir su dirección de correo electrónico con la EFF - Seleccione
1
cuando 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.
Deja una respuesta