Cómo instalar Calibre Ebook Server en Ubuntu 20.04

Calibre es un gestor de libros electrónicos gratuito y de código abierto. Se presenta como una aplicación de escritorio multiplataforma junto con un componente de servidor y puede utilizarse para gestionar tu biblioteca de libros electrónicos.

Configurar Calibre como servidor te permite acceder a tus libros desde cualquier parte del mundo y te permite compartirlos con amigos y familiares. También puedes transferirlos a tus dispositivos móviles para leerlos más tarde. El servidor Calibre también te permite leer libros electrónicos directamente en la web.

En este tutorial, aprenderás a instalar y utilizar un servidor de libros electrónicos Calibre en un servidor basado en Ubuntu 20.04.

Requisitos previos

  1. Un servidor basado en Ubuntu 20.04 con un usuario con privilegios sudo.

  2. Mantener el servidor actualizado.

    $ sudo apt update && sudo apt upgrade
    

Configurar el cortafuegos

Ubuntu 20.04 viene con Uncomplicated Firewall(UFW) por defecto. En caso de que no lo tenga, instálalo primero.

$ sudo apt install ufw

Habilita el puerto SSH.

$ sudo ufw allow "OpenSSH"

Habilita el cortafuegos.

$ sudo ufw enable

Habilita los puertos 8080 que utiliza el servidor de calibre.

$ sudo ufw allow 8080

Comprueba el estado del cortafuegos.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
8080                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
8080 (v6)                  ALLOW       Anywhere (v6)

Descarga e instala el servidor de calibre

Ubuntu 20.04 viene con calibre, pero es mejor instalarlo directamente desde su sitio web para obtener la última versión.

En primer lugar, necesitas instalar algunas dependencias.

$ sudo apt install libfontconfig libgl1-mesa-glx

Descarga el instalador del servidor calibre.

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

Configura el script de instalación como ejecutable.

$ chmod +x ./linux-installer.sh

Ejecuta el instalador.

$ sudo ./linux-installer.sh

Recibirás algunas advertencias porque el instalador espera un sistema de escritorio y no un servidor sin cabeza. Es seguro ignorarlas.

Crea una biblioteca y añade tu primer libro

Para nuestro tutorial, descargaremos un libro del Proyecto Gutenberg como ejemplo. El Proyecto Gutenberg es un repositorio masivo de libros gratuitos de dominio público.

Ejecuta el siguiente comando para descargar tu primer libro. En el espíritu de la reciente fiesta de Halloween, vamos a descargar un relato de terror, "La vuelta de tuerca" de Henry James.

$ wget http://www.gutenberg.org/ebooks/209.kindle.noimages -O turnofthescrew.mobi

Crea un directorio para tu biblioteca de calibre.

$ mkdir calibre-library

Añade el libro que acabas de descargar a tu biblioteca de calibre utilizando el comando calibredb.

$ calibredb add *.mobi --with-library calibre-library/
Added book ids: 1

Ahora es el momento de iniciar calibre.

Ejecutar el servidor de calibre

Ejecuta el siguiente comando para iniciar el servidor de contenidos de calibre.

$ calibre-server calibre-library

calibre-server es el comando utilizado para iniciar el servidor y calibre-library es el nombre del directorio que acabamos de crear y que será utilizado por el servidor para cargar la interfaz.

Deberías ver una salida similar.

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

Inicia la URL http://<yourserverip>:8080 en tu navegador y verás la pantalla predeterminada de calibre.

Página de inicio por defecto del servidor Calibre

Haz clic en calibre-library y verás el libro The turn of the screw que acabas de descargar.

Página de la biblioteca del servidor Calibre

Puedes detener el servidor pulsando Ctrl+C en la línea de comandos.

El servidor de Calibre utiliza el puerto 8080 por defecto. Puedes cambiarlo modificando el comando durante el lanzamiento.

$ calibre-server calibre-library --port 7530

Luego puedes comprobarlo lanzando la URL http://<yourserverip>:7530 en tu navegador.

También tendrás que permitir el puerto a través del cortafuegos.

$ sudo ufw allow 7530

Crear un servicio para el servidor de calibre

Probablemente querrás que calibre se ejecute siempre, incluso después de que el servidor se reinicie. Para ello, necesitarás crear un servicio para calibre que lo inicie automáticamente al arrancar.

Crea un archivo /etc/systemd/system/calibre-server.service y ábrelo para editarlo con el editor Nano.

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

Pega el siguiente código.

## startup service
[Unit]
Description=calibre content server
After=network.target

[Service]
Type=simple
User=<username>
Group=<username>
ExecStart=/opt/calibre/calibre-server /home/<username>/calibre-library --enable-local-write

[Install]
WantedBy=multi-user.target

Sustituye <username> por el usuario real del sistema en tu servidor Ubuntu.

Guarda y cierra el archivo pulsando Ctrl+W e introduciendo Y cuando te lo pida.

Activa e inicia el servicio calibre.

$ sudo systemctl enable calibre-server
$ sudo systemctl start calibre-server

Puedes comprobarlo reiniciando el servicio.

$ sudo reboot

Espera un par de minutos y abre http://<yourserverip>:8080 en el navegador para asegurarte de que calibre funciona.

Añade la autenticación de usuario al servidor de calibre

Por ahora, cualquiera que conozca la IP de tu servidor puede acceder al servidor de calibre. Podemos cambiar esto añadiendo la autenticación de usuario al servidor.

Primero, detén el servidor de calibre.

$ sudo systemctl stop calibre-server

Inicia el script de gestión de usuarios de calibre. Puedes especificar la ruta donde se almacenará la base de datos de usuarios. Se almacena en forma de base de datos SQLite.

$ sudo calibre-server --userdb /home/<username>/.config/calibre/server-users.sqlite --manage-users
1) Add a new user
2) Edit an existing user
3) Remove a user
4) Cancel

What do you want to do? [1-4]: 1
Enter the username: howtoforge
Enter the new password for howtoforge:
Re-enter the new password for howtoforge, to verify:
User howtoforge added successfully!

Introduce 1 para crear un nuevo usuario y elige una contraseña fuerte.

A continuación, tenemos que editar el servicio de calibre que habíamos configurado anteriormente.

Abre el archivo del servicio.

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

Añade la bandera --enable-auth al final de la línea que empieza por ExecStart para activar la autenticación del usuario.

. . .
ExecStart=/opt/calibre/calibre-server "/home/<username>/calibre-library" --userdb "/home/<username>/.config/calibre/server-users.sqlite" --enable-local-write --enable-auth
. . .

Guarda y cierra el archivo pulsando Ctrl+W e introduciendo Y cuando te lo pida.

Refresca el demonio de servicio para recargar el archivo de servicio modificado y vuelve a iniciar el servicio.

sudo systemctl daemon-reload
sudo systemctl start calibre-server

La próxima vez que inicies el sitio, se te pedirá el nombre de usuario y la contraseña antes de acceder a la biblioteca.

Inicio de sesión de usuario del servidor Calibre

Añadir automáticamente libros a tu biblioteca

Podemos configurar una carpeta de vigilancia que pueda ser rastreada por el servidor de Calibre, de modo que cada vez que añadas un nuevo libro a la carpeta, se añadirá automáticamente a la biblioteca de Calibre.

Crea una carpeta de seguimiento y pasa a ella.

$ mkdir ~/watchbooks
$ cd ~/watchbooks

Descarga un nuevo libro en la carpeta utilizando el siguiente comando.

$ wget http://www.gutenberg.org/ebooks/514.epub.noimages -o littlewomen.epub

A continuación, abre el editor Crontab.

$ crontab -e

Añade la siguiente línea al final.

*/5 * * * * calibredb add /home/<username>/watchbooks/ -r --with-library http://localhost:8080#calibre-library --username calibreuser --password YourPassword && rm -r /home/<username>/watchbooks/*

Este script añadirá todos los archivos del directorio /home/<username>/watchbooks a la biblioteca de calibre y borrará todos los archivos originales porque ya no son necesarios.

La tarea cron se ejecutará cada 5 minutos. Espera unos minutos y vuelve a cargar el sitio del servidor de calibre para ver que el libro que acabas de añadir aparece en la biblioteca.

Instalar Nginx

En este paso, instalaremos el servidor web Nginx para servir el servidor de calibre a través de un proxy. Así podrás acceder a él a través de un dominio, por ejemplo, calibre.yourdomain.com. Tampoco tendrás que preocuparte de especificar ningún número de puerto. Y tener Nginx como proxy nos permite servir el sitio sobre SSL.

Ejecuta el siguiente comando para instalar Nginx.

$ sudo apt install nginx

Abre los puertos 80 y 443 y cierra el puerto 8080 porque ya no es necesario.

$ sudo ufw allow "Nginx Full"
$ sudo ufw delete allow 8080

Nginx Full es un perfil de aplicación para el cortafuegos ufw que abrirá automáticamente los puertos 80 y 443.

$ sudo ufw status
Status: active

To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere
Nginx Full  		   ALLOW       Anywhere	
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full		   ALLOW       Anywhere (v6)

Instalar SSL

Instalaremos el SSL utilizando el servicio Let's Encrypt.

Para ello, instala Certbot.

$ sudo apt install certbot

Detén Nginx porque interferirá con el proceso de Certbot.

$ sudo systemctl stop nginx

Genera el certificado. También necesitamos crear un certificado DHParams.

$ export LDOMAIN="calibre.yourdomain.com"
$ export LEMAIL="[email protected]"
$ sudo certbot certonly --standalone -d $LDOMAIN --preferred-challenges http --agree-tos -n -m $LEMAIL --keep-until-expiring 
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

También necesitamos configurar una tarea cron para renovar el SSL automáticamente. Para abrir el editor crontab, ejecuta el siguiente comando

$ sudo crontab -e

El comando anterior abre el editor Crontab.

Pega la siguiente línea en la parte inferior.

25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”

El trabajo cron anterior ejecutará certbot a las 2:25 de la madrugada todos los días. Puedes cambiarlo por lo que quieras.

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.

Configurar Nginx para que sirva Calibre a través de un proxy usando SSL

Tenemos que editar el archivo de configuración de Nginx para añadir la configuración SSL.

Ejecuta el siguiente comando para añadir un archivo de configuración para el servidor de Calibre.

$ sudo nano /etc/nginx/sites-available/calibre.conf

Pega el siguiente código en el editor.

server {
    listen 80;
    listen [::]:80;
    server_name calibre.yourdomain.com;
    # enforce https
    return 301 https://$server_name:443$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name calibre.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }

    # Use Mozilla's guidelines for SSL/TLS settings
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    ssl_certificate /etc/letsencrypt/live/calibre.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/calibre.yourdomain.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
}

Pulsa Ctrl + X para cerrar el editor y pulsa Y cuando se te pida que guardes el archivo.

Activa este archivo de configuración vinculándolo al directorio sites-enabled.

$ sudo ln -s /etc/nginx/sites-available/calibre.conf /etc/nginx/sites-enabled/

Prueba la configuración de Nginx.

$ sudo nginx -t

Deberías ver la siguiente salida que indica que tu configuración es correcta.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Vuelve a cargar el servicio Nginx.

$ sudo systemctl reload nginx

Ahora puedes lanzar el sitio a través de la URL https://calibre.yourdomain.com.

Conclusión

En este tutorial, has aprendido a instalar y ejecutar el servidor de libros electrónicos Calibre y a ejecutarlo sobre Nginx junto con la autenticación de usuarios y con la posibilidad de añadir libros automáticamente. Si tienes alguna pregunta, publícala en los comentarios de abajo.

También te podría gustar...