Post

📚 Calibre Web sur Alpine Linux

📚 Calibre Web sur Alpine Linux

📚 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.

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.

Proxmox 103 (pvm-alpine02)

1
ssh rad@192.168.0.222 -p 55222 -i /home/yann/.ssh/pvm-alpine02

Les outils sur alpine linux
How To: Install Calibre Web in Linux

1
2
3
4
# Install Python 3.x packages (select virtualenv only if you plan to use it)
sudo apk add  python3 py3-pip py3-virtualenv py3-virtualenv-pyc
# Install packages to compile wheel extensions
sudo apk add build-base linux-headers python3-dev

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 lee partage 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 le montage NFS

1
sudo mount -a

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) ) pvm-alpine02:~$

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 OpenRC calibre-web

Setup Service on Linux

Créer le fichier /etc/init.d/calibre-web:

1
sudo nano /etc/init.d/calibre-web

Contenu du fichier

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/sbin/openrc-run

description="Calibre-Web"

depend() {
        need net
        after firewall
}
# Calibre-Web does not know how to background itself
command_background=true
# Insert the command you decided to use to start calibre-web
command="/home/rad/calibre-web-env/bin/cps"
# Change if needed
command_args="-o /var/log/calibre-web.log"
# RC_SVCNAME variable contains the name of this service
pidfile="/run/${RC_SVCNAME}.pid"
# user:group the command should run under
command_user="rad:rad"

Les droits

1
sudo chmod 0755 /etc/init.d/calibre-web

Lancer le service calibre-web :

1
sudo rc-service calibre-web start

Activation au démarrage

1
2
sudo rc-update add calibre-web
#  * service calibre-web added to runlevel default

Calibre-web est accessible en local

1
http://localhost:8083

cwwk - proxy nginx

Configuration proxy nginx pour l’écoute calibre-web ip 192.168.0.222 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.222: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.222: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


Puis cliquer sur “Sauvegarder”

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” “Editer la configuration principale” et “Configuration des options”)

Puis Sauvegarder

Traduction

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

1
find calibre-web-env/ -name "*" -type f -exec grep -Hn "READ MORE" {} \;

Résultat

1
calibre-web-env/lib/python3.12/site-packages/calibreweb/cps/static/js/caliBlur.js:328:    moreLink: '<a href="#">READ MORE</a>',    // ToDo: make translateable

Editer le fichierfichier calibre-web-env/lib/python3.12/site-packages/calibreweb/cps/static/js/caliBlur.js
Se rendre à la ligne 328

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 service calibre-web restart 
Cet article est sous licence CC BY 4.0 par l'auteur.