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 鈥渟ystemctl stop nginx鈥 --post-hook 鈥渟ystemctl 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 *