Cómo instalar el servidor de libros electrónicos Calibre en Ubuntu 20.04

Página de inicio predeterminada del servidor Calibre

Calibre es un administrador de libros electrónicos gratuito y de código abierto. Se envía como una aplicación de escritorio multiplataforma junto con un componente de servidor y se puede usar para administrar su biblioteca de libros electrónicos.

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

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

requisitos previos

  1. Un servidor basado en Ubuntu 20.04 con un usuario con privilegios de sudo.
  2. Mantener actualizado el servidor.
    $ sudo apt update && sudo apt upgrade
    

Configurar cortafuegos

Ubuntu 20.04 viene con Firewall sin complicaciones (UFW) de forma predeterminada. En caso de que no lo sea, instálelo primero.

$ sudo apt install ufw

Habilitar puerto SSH.

$ sudo ufw allow "OpenSSH"

Habilite el cortafuegos.

$ sudo ufw enable

Habilite los puertos 8080 que utiliza el servidor de calibre.

$ sudo ufw allow 8080

Compruebe 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)

Descargue e instale el servidor de calibre

Ubuntu 20.04 se envía con calibre, pero es mejor instalarlo directamente desde su sitio para obtener la última versión.

Primero, necesitas instalar algunas dependencias.

$ sudo apt install libfontconfig libgl1-mesa-glx

Descargue el instalador del servidor de calibre.

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

Configure el script del instalador como ejecutable.

$ chmod +x ./linux-installer.sh

Ejecute el instalador.

$ sudo ./linux-installer.sh

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

Crea una biblioteca y agrega tu primer libro

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

Ejecute el siguiente comando para descargar su primer libro. En el espíritu del reciente festival de Halloween, descarguemos una historia de terror, «La vuelta de tuerca» de Henry James.

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

Cree un directorio para su biblioteca de calibre.

$ mkdir calibre-library

Agregue el libro que acaba de descargar a su biblioteca de calibre mediante el comando calibredb.

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

Ha llegado el momento de poner en marcha calibre.

Ejecute el servidor de calibre

Ejecute el siguiente comando para iniciar el servidor de contenido 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 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

Inicie la URL http://:8080 en su navegador y verá la pantalla de calibre predeterminada.

Página de inicio predeterminada del servidor Calibre

Haga clic en calibre-library y verá el libro La vuelta de tuerca que acaba de descargar.

Página de la biblioteca del servidor Calibre

Puede detener el servidor presionando Ctrl + C en la línea de comando.

El servidor Calibre utiliza el puerto 8080 de forma predeterminada. Puede cambiarlo modificando el comando durante el lanzamiento.

$ calibre-server calibre-library --port 7530

Luego puede verificar iniciando la URL http://:7530 en su navegador.

También deberá permitir el puerto a través del firewall.

$ sudo ufw allow 7530

Crear un servicio para el servidor de calibre

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

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

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

Pegue 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

Reemplace con el usuario real del sistema en su servidor Ubuntu.

Guarde y cierre el archivo presionando Control+W y entrando Y Cuando se le solicite.

Habilite e inicie el servicio de calibre.

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

Puede verificar reiniciando el servicio.

$ sudo reboot

Espere un par de minutos y abra http://:8080 en el navegador para asegurarse de que calibre funciona.

Agregar autenticación de usuario al servidor de calibre

Por ahora, cualquier persona que conozca la IP de su servidor puede acceder al servidor de calibre. Podemos cambiar eso agregando autenticación de usuario al servidor.

Primero, detenga el servidor de calibre.

$ sudo systemctl stop calibre-server

Inicie el script de administración de usuarios de calibre. Puede especificar la ruta donde se almacenará la base de datos del usuario. Se almacena en forma de una 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!

Ingrese 1 para crear un nuevo usuario y elija una contraseña segura.

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

Abra el archivo de servicio.

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

Agregue el indicador –enable-auth al final de la línea que comienza con ExecStart para habilitar 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
. . .

Guarde y cierre el archivo presionando Control+W y entrando Y Cuando se le solicite.

Actualice el demonio de servicio para volver a cargar el archivo de servicio modificado y vuelva a iniciar el servicio.

sudo systemctl daemon-reload
sudo systemctl start calibre-server

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

Inicio de sesión de usuario del servidor Calibre

Agregar libros automáticamente a su biblioteca

Podemos configurar una carpeta de observación que puede ser rastreada por el servidor de calibre, de modo que cada vez que agregue un nuevo libro a la carpeta, se agregará automáticamente a la biblioteca de Calibre.

Cree una carpeta de observación y cambie a ella.

$ mkdir ~/watchbooks
$ cd ~/watchbooks

Descargue un nuevo libro a la carpeta usando el siguiente comando.

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

A continuación, abra el Editor Crontab.

$ crontab -e

Agregue 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 agregará todos los archivos del directorio /home//watchbooks a la biblioteca de calibre y eliminará todos los archivos originales porque ya no son necesarios.

El trabajo cron se ejecutará cada 5 minutos. Espere unos minutos y vuelva a cargar el sitio del servidor de calibre para ver el libro que acaba de agregar 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. De esa manera, puede acceder a él a través de un nombre de dominio, por ejemplo, calibre.yourdomain.com. Tampoco tendrá que preocuparse por especificar ningún número de puerto. Y tener Nginx como proxy nos permite servir el sitio a través de SSL.

Ejecute el siguiente comando para instalar Nginx.

$ sudo apt install nginx

Abra los puertos 80 y 443 y cierre el puerto 8080 ya que ya no es necesario.

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

Nginx Full es un perfil de aplicación para el firewall 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 SSL utilizando el servicio Let’s Encrypt.

Para eso, instale Certbot.

$ sudo apt install certbot

Detenga Nginx porque interferirá con el proceso de Certbot.

$ sudo systemctl stop nginx

Generar 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 un trabajo cron para renovar el SSL automáticamente. Para abrir el editor crontab, ejecute el siguiente comando

$ sudo crontab -e

El comando anterior abre el editor Crontab.

Pegue 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 am todos los días. Puedes cambiarlo a lo que quieras.

Guarde el archivo presionando Control + X y entrando Y Cuando se le solicite.

Configurar Nginx para servir Calibre a través de proxy usando SSL

Necesitamos editar el archivo de configuración de Nginx para agregar la configuración SSL.

Ejecute el siguiente comando para agregar un archivo de configuración para el servidor Calibre.

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

Pegue 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;
}

Prensa Control + X para cerrar el editor y pulsar Y cuando se le solicite guardar el archivo.

Active este archivo de configuración vinculándolo al directorio de sitios habilitados.

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

Pruebe la configuración de Nginx.

$ sudo nginx -t

Debería ver el siguiente resultado que indica que su 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

Vuelva a cargar el servicio Nginx.

$ sudo systemctl reload nginx

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

Conclusión

En este tutorial, aprendió cómo instalar y ejecutar el servidor de libros electrónicos Calibre y ejecutarlo en Nginx junto con la autenticación de usuario y con la capacidad de agregar libros automáticamente. Si tiene alguna pregunta, publíquela en los comentarios a continuación.

Deja una respuesta

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