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
-
Un servidor basado en Ubuntu 20.04 con un usuario con privilegios sudo.
-
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.
Haz clic en calibre-library
y verás el libro The turn of the screw
que acabas de descargar.
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.
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.