Cómo instalar Calibre Ebook Server en Ubuntu 22.04
Calibre es un gestor de libros electrónicos gratuito y de código abierto. Funciona como una aplicación de escritorio multiplataforma junto con un componente de servidor. El componente de escritorio puede gestionar tu biblioteca de libros electrónicos en un único dispositivo. Y el componente servidor te permite
- Acceder a tus libros desde cualquier lugar del mundo.
- Transferir fácilmente tus libros a dispositivos móviles.
- Compartir libros con tus amigos y familiares.
- Leer libros electrónicos directamente en la web.
En este tutorial, aprenderás a instalar el servidor Calibre en una máquina Ubuntu 22.04.
Requisitos previos
- Un servidor con Ubuntu 22.04.
- Un usuario no root con privilegios sudo.
- El Cortafuegos sin complicaciones (UFW) está activado y en ejecución.
- Un nombre de dominio Completamente Cualificado apuntando al servidor. Para nuestro tutorial, utilizaremos el dominio
calibre.example.com
. - Todo está actualizado.
$ sudo apt update && sudo apt upgrade
Paso 1 – Configurar el Cortafuegos
El primer paso antes de instalar ningún paquete es configurar el cortafuegos para que permita las conexiones HTTP y HTTPS.
Comprueba el estado del cortafuegos.
$ sudo ufw status
Deberías ver algo como lo siguiente
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Permitir puertos HTTP y HTTPs.
$ sudo ufw allow http $ sudo ufw allow https
Vuelve a comprobar el estado para confirmarlo.
$ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
Paso 2 – Descarga e instala el servidor Calibre
Ubuntu 22.04 viene con Calibre, pero es mejor instalarlo directamente para tener la última versión.
El primer paso es instalar algunas dependencias.
$ sudo apt install libopengl0 libxkbcommon-x11-0 libegl1 libfontconfig libgl1-mesa-glx
Descarga el instalador del servidor Calibre.
$ wget https://download.calibre-ebook.com/linux-installer.sh
Haz ejecutable el script de instalación.
$ chmod +x ./linux-installer.sh
Ejecuta el instalador.
$ sudo ./linux-installer.sh
Recibirás algunas advertencias porque el instalador espera un escritorio y no un servidor. Es seguro ignorar las advertencias.
Paso 3 – Crea una biblioteca Calibre y añade tu primer libro
El siguiente paso es crear una biblioteca Calibre y añadirle algunos libros. Para nuestro tutorial, descargaremos el libro Las aventuras de Sherlock Holmes de Arthur Conan Doyle del Proyecto Gutenberg.
$ wget http://www.gutenberg.org/ebooks/1661.kindle.noimages -O adventuresofsherlockholmes.mobi
Coge siempre la versión Kindle del libro del sitio. En este caso, cambiaremos el nombre de la versión Kindle a filename.mobi
porque el formato Mobi se admite de forma nativa en Kindle, razón por la que se denomina así en el sitio. También ofrece mejores opciones de formato que la versión Epub.
Crea un directorio para la biblioteca Calibre.
$ mkdir calibre-library
Añade el libro que acabas de descargar a la biblioteca utilizando el comando calibredb
. Especificamos la ubicación de la biblioteca en el propio comando.
$ calibredb add adventuresofsherlockholmes.mobi --with-library calibre-library/ Added book ids: 1
Puedes añadir varios libros a la vez de la siguiente manera.
$ calibredb add *.mobi --with-library calibre-library/
Paso 4 – Iniciar el servidor Calibre
Ahora que ya tenemos listos nuestros libros, es el momento de iniciar el servidor Calibre.
$ calibre-server calibre-library
El comando calibre-server
toma como argumento la ubicación de la biblioteca. 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
Esto expone el servidor Calibre en el puerto 8080. Para ver el servidor, primero tienes que abrir el puerto. Ejecuta el siguiente comando para abrir el puerto 8080.
$ sudo ufw allow 8080
Abre la URL http://<yourserverIP>:8080/
en tu navegador y obtendrás la siguiente pantalla. La pantalla se mostrará oscura o clara dependiendo de la elección del tema de tu sistema operativo.
Haz clic en el enlace calibre-library para ver el libro que has añadido en el paso anterior.
Cierra el servidor pulsando las teclas Ctrl + C en tu terminal.
Puedes utilizar un puerto diferente para exponer el servidor Calibre. Para ello, utiliza el siguiente comando. Tendrás que asegurarte de que el puerto está abierto en el cortafuegos.
$ calibre-server calibre-library --port 7654
Paso 5 – Crear un archivo de servicio systemd
Para que el proceso del servidor Calibre sea persistente y sobreviva a los reinicios, necesitas crear un archivo de servicio systemd para el mismo.
Crea un archivo llamado calibre-server.service
en el directorio /etc/sytemd/system/
y ábrelo para editarlo.
$ sudo nano /etc/systemd/system/calibre-server.service
Pega en él el siguiente código.
[Unit] Description=Calibre 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
La bandera --enable-local-write
da al servidor acceso de escritura para añadir nuevos libros a la biblioteca. Esto se debe a que no puedes añadir libros utilizando el comando calibredb
mientras el servidor está en ejecución.
Sustituye <username>
por el nombre de usuario de tu sistema Linux en el código anterior. Guarda y cierra el archivo pulsando Ctrl+W e introduciendo Y cuando se te solicite.
Recarga el demonio de servicio para activar el archivo de servicio.
$ sudo systemctl daemon-reload
Activa e inicia el servicio Calibre.
$ sudo systemctl enable calibre-server $ sudo systemctl start calibre-server
Comprueba el estado del servicio.
$ sudo systemctl status calibre-server ? calibre-server.service - Calibre Server Loaded: loaded (/etc/systemd/system/calibre-server.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-07-25 07:23:42 UTC; 15s ago Main PID: 1877 (BonJour) Tasks: 13 (limit: 2241) Memory: 53.3M CPU: 762ms CGroup: /system.slice/calibre-server.service ??1877 /opt/calibre/bin/calibre-server /home/<username>/calibre-library --enable-local-write Jul 25 07:23:42 calibre systemd[1]: Started Calibre Server. Jul 25 07:23:42 calibre calibre-server[1877]: QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-<username>' Jul 25 07:23:42 calibre calibre-server[1877]: calibre server listening on 0.0.0.0:8080 Jul 25 07:23:43 calibre calibre-server[1877]: OPDS feeds advertised via BonJour at: 69.28.84.201 port: 8080
Paso 6 – Activar la autenticación de usuario
Puedes añadir autenticación de usuario a Calibre para proteger tu biblioteca y que no esté disponible para cualquiera. Primero, detén el servidor Calibre.
$ sudo systemctl stop calibre-server
Calibre utiliza una base de datos SQLite para almacenar las credenciales de usuario. Inicia el script de gestión de usuarios de Calibre para añadir un usuario.
$ sudo calibre-server --manage-users
Se te darán cuatro opciones y se te preguntará por tu elección. Pulsa 1 para añadir un nuevo usuario, y proporciona el nombre de usuario y la contraseña para terminar de añadir un nuevo usuario.
1) Add a new user 2) Edit an existing user 3) Remove a user 4) Cancel What do you want to do? [1-4]: (Press 1) Enter the username: howtoforge Enter the new password for howtoforge: Re-enter the new password for howtoforge, to verify: User howtoforge added successfully!
A continuación, tienes que editar el archivo de servicio para comprobar la autenticación. Abre el archivo para editarlo.
$ 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 se te solicite.
Vuelve a cargar el demonio de servicio e inicia el servicio.
$ sudo systemctl daemon-reload $ sudo systemctl start calibre-server
Si abres la URL de la biblioteca, se te pedirá tu nombre de usuario y contraseña antes de permitirte acceder a ella. Introduce tus credenciales y pulsa el botón Iniciar sesión para acceder a la biblioteca.
Paso 7 – Añadir libros automáticamente a la biblioteca
Calibre te permite añadir libros automáticamente a la biblioteca mediante una tarea Cron. Para ello, busca nuevos libros en un directorio a intervalos regulares y los añade a la biblioteca. Esta es la forma más rápida de añadir libros, ya que basta con subirlos al directorio para que aparezcan pronto en la biblioteca sin ninguna intervención manual.
El primer paso es crear un directorio de vigilancia.
$ mkdir ~/calibre-watch $ cd ~/calibre-watch
Descarga el libro War and Peace
de Leo Tolstoy
a este directorio desde el Proyecto Gutenberg.
$ wget https://www.gutenberg.org/ebooks/2600.kindle.images -O warandpeace.mobi
Si te fijas, esta vez estamos descargando una versión que tiene imágenes. Esto varía de un libro a otro en el Proyecto Gutenberg. Algunos tienen versiones con imágenes y otros no. Calibre funciona bien con ambos formatos.
Abre el editor Crontab.
$ crontab -e
Si es la primera vez que utilizas el Crontab, se te pedirá que elijas un editor.
no crontab for <username> - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.basic 3. /usr/bin/vim.tiny 4. /bin/ed Choose 1-4 [1]:
Introduce 1 para elegir el editor Nano, ya que es el más fácil de manejar.
Añade el siguiente comando al final del archivo.
*/5 * * * * calibredb add /home/<username>/calibre-watch/ -r --with-library http://localhost:8080#calibre-library --username mycalibreuser --password StrongPassword! && rm -r /home/<username>/calibre-watch/*
Este script añadirá todos los archivos del directorio /home/<username>/calibre-watch
a la biblioteca de calibre y eliminará todos los archivos originales, puesto que ya no son necesarios. La tarea anterior se ejecutará cada 5 minutos. Sustituye <username>
por el nombre de usuario de tu sistema Linux y añade tus credenciales de Calibre en los lugares adecuados.
Guarda y cierra el archivo pulsando Ctrl+W e introduciendo Y cuando se te solicite. Espera unos minutos y vuelve a cargar el sitio del servidor de calibre para ver aparecer en la biblioteca el libro que acabas de añadir.
Paso 8 – Instalar Nginx
Ubuntu 22.04 viene con una versión antigua de Nginx. Para instalar la última versión, necesitas descargar el repositorio oficial de Nginx.
Importa la clave de firma de Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Añade el repositorio de la versión estable de Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Actualiza los repositorios del sistema.
$ sudo apt update
Instala Nginx.
$ sudo apt install nginx
Verifica la instalación.
$ nginx -v nginx version: nginx/1.22.0
Paso 9 – Instalar SSL
Ahora mismo, Calibre está expuesto en un puerto HTTP a través de una dirección IP. Para protegerlo mejor, habilitaremos el acceso a través de un dominio dedicado utilizando un certificado SSL.
Necesitamos instalar Certbot para generar el certificado SSL para Calibre. Puedes instalar Certbot utilizando el repositorio de Ubuntu o conseguir la última versión utilizando la herramienta Snapd. Nosotros utilizaremos la versión Snapd.
Ubuntu 22.04 viene con Snapd instalado por defecto. Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd está actualizada.
$ sudo snap install core
Instala Certbot.
$ sudo snap install --classic certbot
Utiliza el siguiente comando para asegurarte de que se puede ejecutar el comando Certbot creando un enlace simbólico al directorio /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Ejecuta el siguiente comando para generar un certificado SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d calibre.example.com
El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/calibre.example.com
de tu servidor.
Genera un certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Abre el archivo /etc/letsencrypt/renewal/calibre.example.com.conf
para editarlo.
$ sudo nano /etc/letsencrypt/renewal/calibre.example.com.conf
Pega el siguiente código en la parte inferior.
pre_hook = systemctl stop nginx post_hook = systemctl start nginx
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Hemos generado el certificado SSL utilizando la opción autónoma de Certbot. Ejecuta su servidor web para crear el certificado, lo que significa que Nginx debe estar apagado durante la renovación. Los comandos pre_hook y post_hook se ejecutan antes y después de la renovación para apagar y reiniciar automáticamente el servidor Nginx, por lo que no requieren intervención manual.
Para comprobar si la renovación SSL funciona correctamente, realiza una ejecución en seco del proceso.
$ sudo certbot renew --dry-run
Si no ves ningún error, ya está todo listo. Tu certificado se renovará automáticamente.
Paso 10 – Configurar Nginx
Abre el archivo /etc/nginx/nginx.conf
para editarlo.
$ sudo nano /etc/nginx/nginx.conf
Añade la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Crea y abre el archivo /etc/nginx/conf.d/calibre.conf
para editarlo.
$ sudo nano /etc/nginx/conf.d/calibre.conf
Pega en él el siguiente código. Sustituye calibre.example.com
por el nombre de tu dominio. Hemos fijado el valor de la variable client_max_body_size
en 50MB. Puedes cambiarlo según tus necesidades.
server { listen 443 ssl http2; listen [::]:443 ssl http2; http2_push_preload on; # Enable HTTP/2 Server Push # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; server_name calibre.example.com; client_max_body_size 50M; access_log /var/log/nginx/calibre.access.log; error_log /var/log/nginx/calibre.error.log; ssl_certificate /etc/letsencrypt/live/calibre.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/calibre.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/calibre.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; 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_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } # enforce HTTPS server { listen 80; listen [::]:80; server_name calibre.example.com; return 301 https://$host$request_uri; }
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Comprueba la configuración de Nginx.
$ sudo nginx -t
Reinicia el servidor Nginx para habilitar los archivos de configuración.
$ sudo systemctl restart nginx
Visita https://calibre.example.com
en tu navegador para acceder a Calibre. Podrás ver que el libro añadido mediante Cron también está disponible en la biblioteca.
Conclusión
Con esto concluye nuestro tutorial sobre la instalación del servidor Calibre en una máquina Ubuntu 22.04 utilizando Nginx. También hemos configurado Calibre para habilitar la autenticación básica y añadir soporte para añadir automáticamente nuevos libros. Calibre Server incluye muchas herramientas de línea de comandos. Para saber más sobre ellas, puedes visitar la Documentación de Calibre. Si tienes alguna pregunta, publícala en los comentarios.