260611_procédure Komga-PDF par Claude sur StirlingPDF
Présentation
La procédure Komga-PDF est un script de compression de fichiers PDF pour réduire considérablement la taille du stockage des bibliothèques d'ouvrages de la collection de Julien.
L'acquisition de fichiers issus de bases de données Internet accumule des fichiers PDF en haute résolution (images surtout). Ces fichiers sont synchronisés entre les NAS Synology et un disque dur kDrive Infomaniak de 6 To.
Contexte
Des points de montage Rclone relient les répertoires kDrive et les containers Docker installés sur le VPS OVH juxjux.ovh. Ces containers lisent les PDF à la volée — permettant ainsi de construire une infrastructure de très forte densité de connaissances digitales (epub, pdf, images, vidéos, musiques...) avec une solution serveur d'entrée de gamme (10 €/mois tout inclus).
La lecture réseau est multi-support : PC, tablette, téléphone. Elle est aussi nomade, séquentielle et pressée. La compacité des fichiers PDF devient donc nécessaire pour diffuser rapidement sur les réseaux. Un magazine ou un ouvrage informatique ne doit pas peser 130 Mo sur un écran de 10 pouces.
Procédure
- Les nouveaux PDF sont déposés dans le dossier Syncthing :
Syncthing/komga-pdf/ - Syncthing synchronise automatiquement vers le VPS :
/home/debian/Documents/komga-pdf/ - Le service
komga-watchsurveille l'arrivée de fichiers sur le VPS via inotifywait (SSH persistant) - Dès détection,
komga_compress.pytélécharge le PDF, le compresse via StirlingPDF, dépose le résultat sur le NAS sasnexte - Julien reclasse lui-même les PDF compressés dans le dossier thématique de son choix
- Les originaux ne sont jamais supprimés du VPS — Julien valide et conserve si besoin (haute résolution souhaitée)
Architecture technique
| Élément | Chemin / URL |
|---|---|
| Dépôt (toutes machines) | Syncthing/komga-pdf/ |
| Dossier VPS (Syncthing) | /home/debian/Documents/komga-pdf/ |
| Destination NAS sasnexte | /mnt/sasnexte/Komga/pdf_compressed/ |
| API compression | https://spdf.juxjux.ovh/api/v1/misc/compress-pdf |
| Scripts | Syncthing/Jux_univers/Jux-scripts/Komga-PDF/ |
| Log | Syncthing/Jux_univers/Jux-scripts/Komga-PDF/komga_compress.log |
Scripts
Les scripts sont dans le dossier Syncthing partagé entre toutes les machines (VPS, Ubuntu, Windows Elio+Jux, Windows Nexte, Xiaomi). Ils sont donc révisables et améliorables depuis n'importe quelle machine.
| Fichier | Rôle |
|---|---|
komga_compress.py |
Compression : liste les PDF sur le VPS via SSH, télécharge, envoie à StirlingPDF, dépose sur sasnexte |
komga_watch.sh |
Surveillance : connexion SSH persistante + inotifywait sur le dossier VPS, déclenche la compression à chaque nouveau fichier |
~/.config/systemd/user/komga-watch.service |
Service systemd utilisateur Ubuntu (non Syncthing — propre à la machine), actif au démarrage |
Lancer manuellement (Ubuntu)
/usr/bin/python3 ~/Syncthing/Jux_univers/Jux-scripts/Komga-PDF/komga_compress.py
Gérer le service (Ubuntu)
systemctl --user status komga-watch.service
systemctl --user restart komga-watch.service
tail -f ~/Syncthing/Jux_univers/Jux-scripts/Komga-PDF/komga_compress.log
Retour d'expérience (2026-06-12)
Résultats de compression :
| Fichier | Original | Compressé | Gain |
|---|---|---|---|
| Monde Gourmand N°93 - Juin 2026.pdf | 42 Mo | 17 Mo | -58% |
| Connaissance des Arts - Juin 2026.pdf | 57 Mo | 35 Mo | -39% |
Points techniques résolus :
- Casse du chemin Syncthing : le dossier VPS est
/home/debian/Documents/(D majuscule), synchronisé depuisSyncthing/sur Ubuntu. Erreur initiale avec/home/debian/documents/(minuscule) qui ne recevait rien. - Race condition inotifywait / Syncthing : Syncthing écrit d'abord un fichier
.syncthing.nom.pdf.tmp, puis le renomme en.pdf. inotifywait (sans-m) sortait sur l'événement.tmp, redémarrait, et ratait le renommage final. Fix : sur tout événement, attendre 3 secondes puis lancerkomga_compress.pysans filtrage préalable. Le script est idempotent (ignore les fichiers déjà compressés). - Python : utiliser
/usr/bin/python3(système, avecrequests) et non/usr/bin/env python3qui pointait sur un venv cassé (Python 3.14, pip absent). - StirlingPDF auth : token JWT via
POST /api/v1/auth/login→session.access_token, valable 24h. - Ubiquité des scripts : déplacés dans
Syncthing/Jux_univers/Jux-scripts/Komga-PDF/— disponibles et éditables sur toutes les machines. Le service systemd (propre à Ubuntu) pointe vers ce chemin Syncthing.