Post

📚 Calibre Web Proxmox (vm-calibre)

📚 Calibre Web Proxmox (vm-calibre)

📚 Calibre Web est une application Web offrant une interface claire pour la navigation, la lecture et le téléchargement de livres électroniques à l’aide d’une base de données Calibre existante.

Proxmox vm-calibre

Proxmox - Créer une VM Debian 13 (image ISO)

Hostname: calibre
root/calroot49
Utilisateur/Mp: cal/cal49

Réseau - DNS

Debian est installé avec seulement [utilitaires du système standard]

IP statique

/etc/network/interfaces

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Ce fichier décrit les interfaces réseau disponibles sur votre système
# et comment les activer.

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens18
iface ens18 inet static
 address 192.168.0.229
 gateway 192.168.0.254
# This is an autoconfigured IPv6 interface
iface ens18 inet6 auto

DNS, modifier le fichier /etc/resolv.conf

1
2
nameserver 192.168.0.205
nameserver 1.1.1.1

Redémarrer l’interface

1
systemctl restart ifup@ens18

Vérification: ip a

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:24:11:53:e7:be brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    altname enxbc241153e7be
    inet 192.168.0.229/24 brd 192.168.0.255 scope global ens18
       valid_lft forever preferred_lft forever
    inet6 2a01:e0a:9c8:2080:be24:11ff:fe53:e7be/64 scope global dynamic mngtmpaddr proto kernel_ra 
       valid_lft 86362sec preferred_lft 86362sec
    inet6 fe80::be24:11ff:fe53:e7be/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

Poste linux

Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) pour une liaison SSH avec le serveur.

1
2
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/vm-calibre
chmod 600 ~/.ssh/vm-calibre

Envoyer le clé publique sur la VM

1
ssh-copy-id -i ~/.ssh/vm-calibre cal@192.168.0.229

VM - vm-calibre

Se connecter sur la VM via ssh

1
ssh cal@192.168.0.229

Passer en mode su

1
su -

Droits sudo et ssh

1
2
3
4
5
6
7
8
# sudo
apt install sudo
# droits root
echo "cal     ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/10-userx
# mode console
echo "PasswordAuthentication no" > /etc/ssh/sshd_config.d/cal.conf
# Redémarrer le serveur ssh
systemctl restart sshd

Se connecter à la VM depuis le poste linux avec la clé SSH

1
ssh -i ~/.ssh/vm-calibre cal@192.168.0.229

/etc/motd

1
2
3
4
5
6
7
8
9
10
11
12
13
  ___                                                  
 | _ \ _ _  ___ __ __ _ __   ___ __ __                 
 |  _/| '_|/ _ \\ \ /| '  \ / _ \\ \ /                 
 |_|  |_|  \___//_\_\|_|_|_|\___//_\_\                 
                            _  _  _                    
 __ __ _ __  ___  __  __ _ | |(_)| |__  _ _  ___       
 \ V /| '  \|___|/ _|/ _` || || || '_ \| '_|/ -_)      
  \_/ |_|_|_|    \__|\__,_||_||_||_.__/|_|  \___|      
  _  ___  ___     _   __  ___     __     ___  ___  ___ 
 / |/ _ \|_  )   / | / / ( _ )   /  \   |_  )|_  )/ _ \
 | |\_, / / /  _ | |/ _ \/ _ \ _| () |_  / /  / / \_, /
 |_| /_/ /___|(_)|_|\___/\___/(_)\__/(_)/___|/___| /_/ 
                                                       

Client NFS

Installer nfs client

1
sudo apt -y install nfs-common

créer le dossier qui va accueillir le point de montage.

1
2
sudo mkdir -p /srv/media/BiblioCalibre 
sudo chown 1000:1000 -R /srv/media/BiblioCalibre

Pour monter automatiquement les actions NFS, une entrée doit être faite dans /etc/fstab

1
sudo nano /etc/fstab

Ajouter en fin de fichier, la ligne suivante:

1
192.168.0.205:/sharenfs/multimedia/eBook/BiblioCalibre /srv/media/BiblioCalibre nfs4 rw,_netdev 0 0

Recharger systemd et le montage NFS

1
2
sudo systemctl daemon-reload
sudo mount -a

Calibre Web

  • Interface HTML5 Bootstrap 3
  • configuration graphique complète
  • Gestion des utilisateurs avec des permissions par utilisateur Ă  grain fin
  • Interface administrateur
  • Interface utilisateur en brĂ©silien, tchèque, nĂ©erlandais, anglais, finnois, français, allemand, grec, hongrois, italien, japonais, khmer, polonais, russe, chinois simplifiĂ©, espagnol, suĂ©dois, turc, ukrainien.
  • Flux OPDS pour les applications de lecture de livres Ă©lectroniques
  • Filtrez et recherchez par titres, auteurs, tags, sĂ©ries et langues.
  • CrĂ©er une collection de livres personnalisĂ©e (Ă©tagères)
  • Prise en charge de l’édition des mĂ©tadonnĂ©es des livres Ă©lectroniques et de la suppression des livres Ă©lectroniques de la bibliothèque Calibre.
  • Prise en charge de la conversion des eBooks par les binaires Calibre
  • Restriction du tĂ©lĂ©chargement des livres Ă©lectroniques aux utilisateurs connectĂ©s
  • Support pour l’enregistrement public des utilisateurs
  • Envoi d’eBooks vers des appareils Kindle d’un simple clic de souris
  • Synchronisation de vos appareils Kobo avec votre bibliothèque Calibre via Calibre-Web
  • Prise en charge de la lecture des eBooks directement dans le navigateur (.txt, .epub, .pdf, .cbr, .cbt, .cbz, .djvu)
  • TĂ©lĂ©chargement de nouveaux livres dans de nombreux formats, y compris les formats audio (.mp3, .m4a, .m4b)
  • Prise en charge des colonnes personnalisĂ©es de Calibre
  • PossibilitĂ© de masquer le contenu en fonction des catĂ©gories et du contenu des colonnes personnalisĂ©es par utilisateur.
  • PossibilitĂ© de mise Ă  jour automatique
  • Connexion “Magic Link” pour faciliter la connexion aux eReaders
  • Connexion via LDAP, google/github oauth et via l’authentification proxy.

Prérequis

Les outils

1
sudo apt install git sqlite3 imagemagick python3-setuptools python3-pip python3-venv

Installation via pip

Créer un environnement virtuel:
Il est essentiel d’isoler votre installation de Calibre-Web pour éviter les conflits de dépendance.
Créer un environnement virtuel en exécutant:

1
python3 -m venv calibre-web-env

Activer l’environnement virtuel:

1
source calibre-web-env/bin/activate # prompt: (calibre-web-env) cal@calibre:~$

Installer Calibre-Web: Utilisez pip pour installer l’application:

1
pip install calibreweb

Démarrer Calibre-Web: Après l’installation, vous pouvez démarrer l’application avec:

1
cps

Service systemd calibre-web

Utilisation fichier systemd pour le lancement automatique

1
sudo nano /etc/systemd/system/calibre-web.service

Contenu du fichier

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Service calibre-web
After=network.target

[Service]
Type=simple
User=cal
ExecStart=/home/cal/calibre-web-env/bin/cps

[Install]
WantedBy=multi-user.target

ATTENTION! , User est l’utilisateur connecté ($USER)

Lancer le service calibre-web :

1
2
sudo systemctl daemon-reload
sudo systemctl start calibre-web

Vérifier:

1
sudo systemctl status calibre-web
1
2
3
4
5
6
7
8
9
10
11
12
â—Ź calibre-web.service - Service calibre-web
     Loaded: loaded (/etc/systemd/system/calibre-web.service; disabled; preset: enabled)
     Active: active (running) since Sat 2026-02-14 16:41:04 CET; 10s ago
 Invocation: ac76a88f68154d42800c6c0c6c008862
   Main PID: 4030 (cps)
      Tasks: 5 (limit: 1093)
     Memory: 90.9M (peak: 92.7M)
        CPU: 1.499s
     CGroup: /system.slice/calibre-web.service
             └─4030 /home/cal/calibre-web-env/bin/python3 /home/cal/calibre-web-env/bin/cps

févr. 14 16:41:04 calibre systemd[1]: Started calibre-web.service - Service calibre-web.

Activation

1
sudo systemctl enable calibre-web

Calibre-web est accesible en local

1
http://localhost:8083

cwwk - proxy nginx

Configuration proxy nginx pour l’écoute calibre-web ip 192.168.0.229 port 8083

Le fichier de configuration nginx /etc/nginx/conf.d/calibre.rnmkcy.eu.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
server {
    listen [::]:443 ssl;
    listen 443 ssl;
    server_name calibre.rnmkcy.eu;

    # SSL Configuration et sécurité
    include /etc/nginx/conf.d/ssl-modern.inc;

    # Logging
    access_log /var/log/nginx/calibre.rnmkcy.eu.log;
    error_log /var/log/nginx/calibre.rnmkcy.eu.error.log;

    # Common proxy settings
    proxy_set_header Host $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;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_connect_timeout 300s;
    proxy_send_timeout 300s;
    proxy_read_timeout 300s;

    location / {
        proxy_pass http://192.168.0.229:8083;
    }

    # Configuration spéciale pour le point de terminaison de téléchargement
    location ~ /(upload|book/add|upload-new) {
        # Limite de taille corporelle accrue spécifiquement pour les téléchargements de livres
        client_max_body_size 200m;
        # REMARQUE DE SÉCURITÉ : Limiter les gros chargements aux seules routes nécessaires
        # aide à prévenir les attaques par déni de service d’épuisement des ressources. 
        # Cela atténue le risque des attaquants consommant la mémoire du serveur
        # la bande passante du réseau et l’espace disque 
        # en téléchargeant de gros fichiers vers des points de terminaison arbitraires. 
        # Lorsque de grands téléchargements sont autorisés uniquement 
        # sur des routes spécifiques, surveillées, la surface d’attaque pour les attaques DoS 
        # basées sur les ressources sont considérablement réduites.
        proxy_pass http://192.168.0.229:8083;
    }
}

Vérifier sudo nginx -t

Redémarrer nginx

1
sudo systemctl reload nginx

Paramétrage Calibre Web

accès à la configuration https://calibre.rnmkcy.eu/config
Par défaut: Nom d’utilisateur: admin , Mot de passe: admin123
puis cliquer sur Connexion

Saisir dans Location… /srv/media/BiblioCalibre et cliquer sur Save

Paramétrage , cliquer sur Admin (pas sur admin avec le a minuscule)

  • Location database: /srv/media/BiblioCalibre
  • Recliquer sur Admin
  • Cliquer sur Add new user
  • Username : calibre
  • Email address : calibre@cinay.eu
  • Password : xxxxxx
  • Language : français
  • Show books with language : Show all
  • Admin user

Cliquer sur Save

Se reconnecter avec l’administrateur calibre
Cliquer sur Administration et sélectionner admin , cocher la case “Supprimer l’utilisateur”
Valider Supprimer
Il reste l’utilisateur/administrateur calibre

Trucs et astuces

Paramètres

Se connecter en administrateur –> Administration –> Editer la configuration utilisateur

Puis Sauvegarder

Lier le champ “lu” avec calibre-web

Se connecter en administrateur sur calibre-web

Activer la navigation anonyme

Cochez pour permettre aux utilisateurs non connectés de parcourir le catalogue, les autorisations d’utilisateur anonymes peuvent être modifiées en tant qu’administrateur (en affichant en tant qu’utilisateur “Guest” dans la section admin)

Puis Sauvegarder

Traduction

Remplacer “READ MORE” et “READ LESS” par ⬇️ et ⬆️

1
2
find calibre-web-env/ -name "*" -type f -exec grep -Hn "READ MORE" {} \;
calibre-web-env/lib/python3.13/site-packages/calibreweb/cps/static/js/caliBlur.js:328:    moreLink: '<a href="#">READ MORE</a>',    // ToDo: make translateable

fichier calibre-web-env/lib/python3.13/site-packages/calibreweb/cps/static/js/caliBlur.js

1
2
3
4
5
6
7
8
// Collapse long text into read-more
$("div.comments").readmore({
    collapsedHeight: 134,
    heightMargin: 45,
    speed: 300,
    moreLink: '<a href="#">⬇️</a>',    // ToDo: make translateable
    lessLink: '<a href="#">⬆️</a>',    // ToDo: make translateable
});

Redémarer le service

1
sudo systemctl restart calibre-web
Cet article est sous licence CC BY 4.0 par l'auteur.