📚 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

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




