Skip to main content

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-watch surveille l'arrivée de fichiers sur le VPS via inotifywait (SSH persistant)
  • Dès détection, komga_compress.py té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é depuis Syncthing/ 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 lancer komga_compress.py sans filtrage préalable. Le script est idempotent (ignore les fichiers déjà compressés).
  • Python : utiliser /usr/bin/python3 (système, avec requests) et non /usr/bin/env python3 qui pointait sur un venv cassé (Python 3.14, pip absent).
  • StirlingPDF auth : token JWT via POST /api/v1/auth/loginsession.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.