# 01_Les recherches de Claude

Pages de publication des résultats d'analyse et de production de Claude Code sur le contenu du VPS

# 01A_Kdrive_les explorations

## RCH-20260529-0003 — Livres et ressources evoquant la ville de Genes dans Foxy

<table id="bkmrk-date2026-05-29-servi"><tbody><tr><th style="width:160px;">Date</th><td>2026-05-29</td></tr><tr><th>Service</th><td>kDrive Infomaniak</td></tr><tr><th>Contexte</th><td>Constituer un corpus documentaire autour de Genes (Genovese, Ligurie) dans la bibliotheque kDrive — dossier SYNC-pour\_VPS/Sync\_NAS-Maison/Foxy</td></tr><tr><th>Outils utilisés</th><td>API REST Infomaniak kDrive v3 — search + metadata v2 | PowerShell</td></tr><tr><th>Requête</th><td>`GET /3/drive/591617/files/search?query={Genes|Genova|Genovese|Genoa|Ligurie}&limit=20 | filtre manuel sur résultats`</td></tr></tbody></table>

### Résultats

3 livres directement sur Gênes (la ville), 1 presentation Ligurie, des photos de Ligurie (2011), et des recettes genovese (cuisine). Recherche couvrant les termes : Genes, Genova, Genovese, Genoa, Ligurie.

### Points clés

- 3 livres historiques sur Gênes trouvés : Graziani (5.2 MB), Vincens (0.9 MB), Histoire anonyme (0.8 MB)
- 1 présentation PowerPoint Ligurie (31.9 MB, mai 2021) — probablement riche en images et contenu
- Photos de Ligurie 2011 (Ognelia et Imperia) — 20+ photos personnelles
- Ressources culinaires genovese : Focaccia Genovese, Ravioli alla genovese (videos kDrive)
- Les livres sont dans Foxy (ID:401926) — dossier probable : Histoire ou Culture Italie
- L'API search kDrive retourne des faux positifs (Genèse, Gens, Genève) — filtrage manuel nécessaire

### Limites

L'API v2 ne retourne pas le chemin (path) des fichiers — impossible de localiser précisément le sous-dossier sans navigation manuelle. Le champ path est vide dans la réponse.

### Localisation des ressources

<table id="bkmrk-urls%E2%80%94-chemins%5B%22kdriv"><tbody><tr><th style="width:160px;">URLs</th><td>—</td></tr><tr><th style="width:160px;">Chemins</th><td>\["kDrive 591617 / Private (5) / SYNC-pour\_VPS (534292) / Sync\_NAS-Maison (534293) / Foxy (401926) / \[sous-dossier inconnu\]"\]</td></tr><tr><th style="width:160px;">IDs</th><td>{"531552": "Antoine-Marie Graziani - Histoire de Genes.epub (5.2 MB)", "531550": "Histoire de de Genes - Histoire.epub (0.8 MB)", "531549": "Histoire de la République de Gênes - Emile Vincens - Histoire.epub (0.9 MB)", "501392": "210526-Ligurie.pptx (31.9 MB)"}</td></tr><tr><th style="width:160px;">Auteurs / Source</th><td>\["Antoine-Marie Graziani (Histoire de Genes)", "Emile Vincens (Histoire de la République de Gênes)"\]</td></tr><tr><th style="width:160px;">Métadonnées</th><td>{"formats": \["epub", "pptx", "jpg", "mp4"\], "livres\_genes": 3, "photos\_ligurie": 20, "videos\_recettes\_genovese": 2, "dossier\_foxy\_id": 401926, "kdrive\_id": 591617}</td></tr></tbody></table>

### Tags

**\#Genes** **\#Gênes** **\#Ligurie** **\#Italie** **\#histoire** **\#kDrive** **\#epub** **\#bibliotheque**

### Suite / Pistes

1/ Explorer le dossier Culture Italie (ID:1185062) pour trouver d'autres ressources sur Genes. 2/ Verifier dans Calibre (ID:1211295) si des livres Genes y sont catalogues. 3/ Corriger l'API v2 pour obtenir le chemin des fichiers (utiliser /3/ au lieu de /2/). 4/ Croiser avec Kavita si ces epubs y sont importes.

---

## RCH-20260529-0004 — Approfondissement corpus Gênes — Culture Italie et Bibliotheque Calibre

<table id="bkmrk-date2026-05-29-servi-1"><tbody><tr><th style="width:160px">Date</th><td>2026-05-29</td></tr><tr><th>Service</th><td>kDrive Infomaniak</td></tr><tr><th>Contexte</th><td>Suite de RCH-20260529-0003. Explorer Culture Italie (ID:1185062) et Bibliotheque Calibre (ID:1211295) pour compléter le corpus #Genes.</td></tr><tr><th>Outils utilisés</th><td>API REST kDrive v3 — navigation par ID + listing sous-dossiers | PowerShell</td></tr><tr><th>Requête</th><td>`GET /3/drive/591617/files/{1185194|1185151|1185105|1185085|1211295}/files?limit=100 + filtres regex Genes/Ligurie`</td></tr></tbody></table>

### Résultats

Culture Italie contient un dossier Ligurie (Cuisine Italie/Ligurie) avec 2 fichiers. Calibre contient Graziani mais uniquement pour Pascal Paoli (Corse), pas Genes. Vincens absent de Calibre. Plusieurs livres sur l'Italie générale potentiellement exploitables.

### Points clés

- Dossier Ligurie trouvé dans Cuisine Italie (ID:1185345) : PPTX 31.9MB + IMG\_3782.pdf
- Calibre/Graziani (ID:1362307) = Pascal Paoli uniquement — Histoire de Genes est dans Foxy seulement
- Vincens (Histoire de la République de Gênes) absent de Calibre — epub uniquement dans Foxy
- Culture Italie / Art de vivre : 5 ressources générales sur l'Italie (Bella Italia, Continent Italia, Sacrés Italiens, Portraits d'Italie, Geo Dolce Vita)
- Histoire Italie : Les guerres d'Italie (conflit européen) — contexte historique pertinent pour Gênes
- Le corpus Gênes dans kDrive est concentré dans Foxy/Histoire — Calibre ne l'a pas indexé

### Limites

Calibre n'a pas les livres sur Gênes de Vincens et de la version anonyme. Seul Graziani y est mais pour un autre ouvrage. Les 3 epubs Genes sont uniquement dans Foxy, non indexés dans Calibre. La recherche ne couvre pas les sous-sous-dossiers de Calibre (trop nombreux).

### Localisation des ressources

<table id="bkmrk-urls%E2%80%94-chemins%5B%22foxy%2F"><tbody><tr><th style="width:160px">URLs</th><td>—</td></tr><tr><th style="width:160px">Chemins</th><td>\["Foxy/Culture Italie/Cuisine Italie/Ligurie", "Foxy/Culture Italie/Histoire Italie", "Foxy/Culture Italie/Art de vivre Italie", "Foxy/Bibliotheque Calibre/Antoine-Marie Graziani"\]</td></tr><tr><th style="width:160px">IDs</th><td>{"1185345": "Dossier Ligurie dans Cuisine Italie", "1185347": "210526-Ligurie.pptx (31.9 MB) — dans Cuisine Italie/Ligurie", "1185349": "IMG\_3782.pdf — dans Cuisine Italie/Ligurie", "1362307": "Calibre/Antoine-Marie Graziani (Pascal Paoli — pas Gênes)", "1185194": "Histoire Italie (4 livres generaux)", "1185085": "Art de vivre Italie (5 ressources)", "1185201": "L'Italie de Botticelli à Bonaparte.epub", "1185199": "Les guerres d'Italie — Un conflit européen.epub", "1185196": "Bella Italia - Un itinéraire amoureux (Christiane Rance).epub", "1185090": "Sacrés Italiens (Alberto Toscano).epub", "1185089": "Portraits d'Italie (Laurent Bolard).epub", "1185087": "Geo Hors-Serie Dolce Vita Avril-Mai 2025.pdf"}</td></tr><tr><th style="width:160px">Auteurs / Source</th><td>—</td></tr><tr><th style="width:160px">Métadonnées</th><td>{"corpus\_genes\_directs": 3, "ressources\_ligurie": 2, "livres\_italie\_generale": 9, "calibre\_graziani\_titre": "Pascal Paoli - Pere de la patrie corse", "vincens\_dans\_calibre": false}</td></tr></tbody></table>

### Tags

**\#Genes** **\#Genes** **\#Ligurie** **\#Italie** **\#Calibre** **\#kDrive** **\#Culture Italie** **\#histoire**

### Suite / Pistes

1/ Importer les 3 epubs Genes (IDs 531549-531552) dans Calibre pour les indexer. 2/ Lire le PPTX Ligurie (ID:1185347) pour en extraire le contenu. 3/ Explorer 'Bella Italia' et 'Les guerres d'Italie' pour mentions de Genes. 4/ Rechercher 'Genes' dans le dossier Histoire (ID:503138) de Foxy.

---

# 01_Portainer - les explorations

Journal des recherches réalisées avec Claude Code sur le service **Portainer**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/152](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/152)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 02_Bookstack_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Bookstack**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/153](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/153)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 03_Homarr_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Homarr**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/154](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/154)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 04_Audiobookshelf_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Audiobookshelf**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/155](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/155)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 05_BentoPDF_les explorations

Journal des recherches réalisées avec Claude Code sur le service **BentoPDF**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/156](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/156)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 06_Cadvisor_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Cadvisor**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/157](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/157)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 07_Calibre-web_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Calibre-web**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/158](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/158)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 08_Dozzle_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Dozzle**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/159](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/159)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 09_FileBrowser_les explorations

Journal des recherches réalisées avec Claude Code sur le service **FileBrowser**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/160](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/160)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 10_FreshRSS_les explorations

---

## RCH-20260529-0002 — Articles Inkscape dans la categorie claude\_foss

<table id="bkmrk-date2026-05-29-servi-1"><tbody><tr><th style="width: 160px;">Date</th><td>2026-05-29</td></tr><tr><th>Service</th><td>FreshRSS</td></tr><tr><th>Contexte</th><td>Second passage apres creation de la categorie claude\_foss et ajout du flux Inkscape News. Verifier si des articles sur Inkscape sont desormais indexes.</td></tr><tr><th>Outils utilisés</th><td>API GReader FreshRSS directe — stream/contents/user/-/label/claude\_foss — search\_foss.py</td></tr><tr><th>Requête</th><td>`GET /reader/api/0/stream/contents/user/-/label/claude_foss?n=100&q=Inkscape`</td></tr></tbody></table>

### Résultats

100 articles retournes depuis la categorie claude\_foss (7 flux). 10 articles provenant du flux Inkscape News (feed/615) sont presents. Note : le parametre q= de l'API GReader ne filtre pas reellement par mot-cle — il retourne tous les articles du stream. Le filtrage Inkscape est donc a faire cote client.

### Points clés

- 10 articles Inkscape indexés depuis l'ajout du flux feed/615 (inkscape.org/news)
- Dernière release : Inkscape 1.4.4 (2026-05-06) — ameliorations performances et corrections crashes
- Inkscape soutient une pétition allemande pour la reconnaissance des bénévoles Open Source (2026-05-13)
- Interview artiste : court-métrage animé réalisé entièrement sous Inkscape (2026-04-02)
- L'API GReader q= ne filtre pas par mot-clé : retourne tous les articles du stream — filtrage client nécessaire
- Flux claude\_foss opérationnel : 7 sources (Inkscape, LinuxFr, Planet GNOME, Blender, LibreOffice, Libre Arts)

### Limites

Le parametre q= de l'API GReader FreshRSS ne filtre pas par mot-cle. Pour une recherche thematique precise, il faut recuperer tous les articles et filtrer cote client sur title + content. A corriger dans search\_foss.py.

### Localisation des ressources

<table id="bkmrk-urls%5B%22https%3A%2F%2Finksca"><tbody><tr><th style="width: 160px;">URLs</th><td>\["https://inkscape.org/news/2026/05/13/inkscape-supports-german-petition-to-recognize-ope/", "https://inkscape.org/news/2026/05/06/inkscape-144-boosts-performance-and-crushes-crashe/", "https://inkscape.org/news/2026/04/02/artist-interview-meet-jorge-who-made-a-short-film/", "https://inkscape.org/news/2026/03/02/inkscape-is-hiring-2026-1/", "https://inkscape.org/news/2025/12/26/bugs-banished-inkscape-143-is-out/", "https://inkscape.org/news/2025/10/12/indiafoss-2025/", "https://inkscape.org/news/2025/06/08/libre-graphics-meeting-2025/", "https://inkscape.org/news/2025/06/01/inkscape-summit-nuremberg/", "https://inkscape.org/news/2025/05/12/2-in-1-release-inkscape-142-is-out/", "https://inkscape.org/news/2025/02/05/inkscape-summit-frankfurt-2025/"\]</td></tr><tr><th style="width: 160px;">Chemins</th><td>—</td></tr><tr><th style="width: 160px;">IDs</th><td>\["feed/615 (Inkscape News)", "user/-/label/claude\_foss"\]</td></tr><tr><th style="width: 160px;">Auteurs / Source</th><td>\["Inkscape Project"\]</td></tr><tr><th style="width: 160px;">Métadonnées</th><td>{"articles\_inkscape": 10, "articles\_total\_stream": 100, "flux\_claude\_foss": 7, "derniere\_version": "Inkscape 1.4.4", "date\_derniere\_version": "2026-05-06", "periode\_couverte": "2025-02 a 2026-05"}</td></tr></tbody></table>

### Tags

**\#Inkscape** **\#logiciel-libre** **\#SVG** **\#dessin-vectoriel** **\#FOSS** **\#FreshRSS** **\#claude\_foss**

### Suite / Pistes

1/ Corriger search\_foss.py pour filtrer cote client sur title+content. 2/ Ajouter flux Libre Graphics Meeting et Planet Inkscape si existants. 3/ Relancer apres quelques jours pour capter les nouveaux articles. 4/ Croiser avec Kavita (livres SVG/Inkscape) et kDrive (tutoriels eventuels).

---

# 11_Gitea_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Gitea**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/162](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/162)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 12_Grafana_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Grafana**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/163](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/163)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 13_Immich_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Immich**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/164](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/164)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 14_Jellyfin_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Jellyfin**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/165](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/165)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 15_Joplin_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Joplin**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/166](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/166)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 16_Kavita_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Kavita**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/167](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/167)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 17_Komga_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Komga**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/168](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/168)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 18_Mealie_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Mealie**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/169](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/169)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 19_Navidrome_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Navidrome**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/170](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/170)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 20_NodeExporter_les explorations

Journal des recherches réalisées avec Claude Code sur le service **NodeExporter**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/171](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/171)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 21_Prometheus_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Prometheus**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/172](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/172)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 22_Readeck_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Readeck**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/173](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/173)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 23_Syncthing_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Syncthing**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/174](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/174)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 24_Yourls_les explorations

Journal des recherches réalisées avec Claude Code sur le service **Yourls**.  
Documentation technique : [https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/175](https://bookstack.juxjux.ovh/books/le-livre-de-claude/page/175)  
Chaque entrée est automatiquement enregistrée dans la table `recherches` (PostgreSQL Alteris, DB 35 Metabase).

---

## RCH-AAAAMMJJ-NNNN — \[Objet de la recherche\]

<table id="bkmrk-dateaaaa-mm-jj-servi"><tbody><tr><th style="width:160px">Date</th><td>AAAA-MM-JJ</td></tr><tr><th>Service</th><td>\[nom du service\]</td></tr><tr><th>Contexte</th><td>\[Pourquoi cette recherche — quelle question, quel besoin, quel problème\]</td></tr><tr><th>Outils utilisés</th><td>\[MCP utilisé / API directe / PowerShell / Python / recherche web...\]</td></tr><tr><th>Requête</th><td>`[query exacte, paramètres, filtres, commandes]`</td></tr></tbody></table>

### Résultats

\[Description des résultats obtenus — texte libre, liste, tableau selon le volume\]

### Points clés

- \[Insight 1 — ce qui est important ou surprenant\]
- \[Insight 2\]
- \[Insight 3\]

### Limites

\[Ce qui manque, erreurs rencontrées, données absentes, pistes non abouties\]

### Localisation des ressources

<table id="bkmrk-urls%5Bliens-directs-v"><tbody><tr><th style="width:160px">URLs</th><td>\[liens directs vers les ressources trouvées\]</td></tr><tr><th>Chemins</th><td>\[chemins fichiers, répertoires, arborescences\]</td></tr><tr><th>IDs</th><td>\[IDs containers, pages, assets, items...\]</td></tr><tr><th>Auteurs / Source</th><td>\[auteurs, éditeurs, provenance\]</td></tr><tr><th>Métadonnées</th><td>\[dates, formats, tailles, langues, coordonnées...\]</td></tr></tbody></table>

### Tags

**\#tag1** **\#tag2** **\#tag3**

### Suite / Pistes

\[Questions ouvertes, actions à entreprendre, recherches complémentaires à lancer\]

---

# 25_StirlingPDF

## RCH-20260822-0001 — Consommation mémoire de StirlingPDF à la compression d'un PDF de 129 Mo (validation de la chaîne Komga-PDF)

<table id="bkmrk-date2026-08-22-servi"><tbody><tr><th style="width:160px;">Date</th><td>2026-08-22</td></tr><tr><th>Service</th><td>StirlingPDF</td></tr><tr><th>Contexte</th><td>Test de bout en bout de la chaîne automatisée Komga-PDF depuis le poste Windows julie, entré dans le maillage Syncthing le 2026-08-10. Objectif secondaire : mesurer la marge réelle sous le plafond mémoire de 2 Go posé le 2026-08-02, jamais éprouvé sur un gros fichier.</td></tr><tr><th>Outils utilisés</th><td>plink SSH, journalctl -u komga-watch, docker stats stirling-pdf, API /api/v1/misc/compress-pdf (appelée par komga\_compress\_vps.py)</td></tr><tr><th>Requête</th><td>`Dépôt d'un PDF de 129,2 Mo dans D:\Syncthing\komga-pdf\ ; relevé de docker stats stirling-pdf toutes les 15 s jusqu'à la fin du traitement.`</td></tr></tbody></table>

### Résultats

Chaîne validée sans intervention manuelle : Syncthing dépose le fichier sur le VPS à 11:24:50 UTC, inotify déclenche, le script détecte le PDF à 11:24:53 après l'attente de 3 s, StirlingPDF rend le fichier compressé à 11:26:40 — 1 min 50 s au total, retour du fichier sur le poste julie dans la foulée. Compression : 129,2 Mo → 55,4 Mo, soit -57 %, taux identique à celui du numéro de juin 2026 du même magazine. Consommation du container : 701 Mio à t+15 s, 1001 Mio à t+30 s, pic à **1,069 Gio à t+60 s**, puis redescente et stabilisation vers 1,04 Gio jusqu'à la fin.

### Points clés

- Pic à 1,069 Gio sur le plafond de 2 Go : il reste environ 45 % de marge. Le plafond de 1 Go initialement envisagé le 2026-08-02 aurait provoqué un OOM kill sur ce traitement.
- La décision de porter la limite à 2 Go se trouve validée une seconde fois, pour une raison indépendante de celle qui l'avait motivée : elle avait été prise pour l'OCR (pic à ~894-969 Mio sur une page A4 300 dpi), elle sert ici à la compression d'un gros PDF.
- La consommation ne suit pas linéairement la taille du fichier : elle plafonne vers 1 Gio en une minute et s'y maintient. Le fichier de 129 Mo est pourtant le plus gros passé dans la chaîne à ce jour (précédent : 96,6 Mo le 2026-06-13).
- Une compression et un OCR lancés en parallèle dépasseraient les 2 Go. Ne pas enchaîner les deux simultanément, et ne pas redescendre la limite.
- Le taux de compression est reproductible d'un numéro à l'autre pour une même source éditoriale.

### Limites

Les logs de komga-watch partent uniquement dans journald, qui a été tourné depuis le démarrage du service le 2026-07-08 : tous les traitements de juin et juillet sont irrécupérables, journalctl ne montrait rien avant ce test. Aucun historique consultable des compressions passées. Un seul fichier mesuré, donc pas de courbe taille/mémoire — le point à 129 Mo est isolé. La qualité visuelle du PDF compressé n'a pas été contrôlée dans le cadre de ce test.

### Localisation des ressources

Procédure complète : page BookStack 220. Scripts VPS : /home/debian/komga\_compress\_vps.py et /home/debian/komga\_watch\_vps.sh. Service : komga-watch.service (systemd, actif depuis le 2026-07-08, PID 690). Dépôt : D:\\Syncthing\\komga-pdf\\ → /home/debian/Documents/komga-pdf/. Sortie : /home/debian/Documents/komga-compressed/. Stack StirlingPDF : ID 89, container stirling-pdf, JAVA\_TOOL\_OPTIONS=-Xmx512m, limits.memory=2g. Fichier de test : La Revue du Vin de France - Septembre 2026.pdf.

### Tags

**\#StirlingPDF** **\#compression** **\#memoire** **\#komga-pdf** **\#Syncthing** **\#VPS**

### Suite / Pistes

1/ Ajouter une redirection des logs vers un fichier dans komga\_watch\_vps.sh, pour conserver un historique des compressions au-delà de la rotation journald.  
2/ Mesurer un fichier nettement plus gros (200 Mo et au-delà) pour savoir si le plateau de 1 Gio tient ou si la consommation repart.  
3/ Contrôler la qualité visuelle du PDF compressé avant de généraliser le taux de -57 % comme acceptable sur ce type de source.

## RCH-20260802-0001 — Echec OCR sur images PNG — deux refus cumules d'ocrmypdf (canal alpha + DPI absent)

<table id="bkmrk-date2026-08-02-servi"><tbody><tr><th style="width:160px;">Date</th><td>2026-08-02</td></tr><tr><th>Service</th><td>StirlingPDF</td></tr><tr><th>Contexte</th><td>Julien signale une erreur HTTP 500 lors d'un OCR sur une image PNG via StirlingPDF. L'interface web n'affiche aucun detail exploitable, le diagnostic passe par les logs du container.</td></tr><tr><th>Outils utilisés</th><td>docker logs stirling-pdf, API /api/v1/misc/ocr-pdf, Pillow, tesseract --list-langs</td></tr><tr><th>Requête</th><td>`POST /api/v1/misc/ocr-pdf (multipart fileInput, languages=[fra], ocrType=Force-OCR) sur PNG RGBA, puis sur variantes aplaties et converties, avec mesure docker stats en parallele.`</td></tr></tbody></table>

### Résultats

Deux erreurs distinctes et cumulees dans ocrmypdf 17.4.0, revelees seulement dans les logs : (1) UnsupportedImageFormatError — The input image has an alpha channel ; (2) une fois l'alpha retire, DpiError — Input file is an image, but has no resolution (DPI) in its metadata. StirlingPDF ne transmet pas l'option --image-dpi a ocrmypdf, donc tout PNG sans DPI dans ses metadonnees echoue. Deux contournements valides en test : voie interface web (Convert &gt; Image to PDF puis OCR sur le PDF, HTTP 200) et voie scriptee (aplatissement de l'alpha sur fond blanc + DPI force a 300, HTTP 200). Texte reconnu restitue a l'identique sur une page de test en francais. Mesure memoire : pic a 894 Mio pour une seule page A4 300 dpi.

### Points clés

- L'interface web ne remonte pas la cause : le diagnostic exige docker logs stirling-pdf
- Les deux erreurs sont sequentielles — corriger l'alpha seul ne suffit pas, le DPI bloque ensuite
- Convertir l'image en PDF avant l'OCR neutralise les deux problemes sans outil local
- 6 langues tesseract installees : fra, eng, deu, por, chi\_sim, osd
- ocrmypdf et tesseract sont des process Python hors JVM : -Xmx ne les borne pas, seul le plafond cgroup du container s'applique
- La limite de 1 Go prevue pour l'allegement du 2026-08-02 aurait provoque un OOM kill pendant l'OCR — portee a 2 Go

### Limites

Mesure realisee sur une page A4 300 dpi generee synthetiquement ; un document multi-pages ou un scan haute resolution consommera davantage. Le pic de 894 Mio est un plancher, pas un maximum.

### Localisation des ressources

<table id="bkmrk-urls%5B%22https%3A%2F%2Fspdf.j"><tbody><tr><th style="width:160px;">URLs</th><td>\["https://spdf.juxjux.ovh", "https://spdf.juxjux.ovh/swagger-ui/index.html"\]</td></tr><tr><th style="width:160px;">Chemins</th><td>\["D:\\\\Syncthing\\\\Jux\_univers\\\\Jux-scripts\\\\Stirling-OCR\\\\ocr\_image.py", "D:\\\\Syncthing\\\\Jux\_univers\\\\Jux-scripts\\\\Stirling-OCR\\\\README.md", "/home/debian/stirling-compose-new.yml", "/home/debian/stirling-compose-new.yml.orig1g"\]</td></tr><tr><th style="width:160px;">IDs</th><td>\["stack Portainer 89", "container stirling-pdf", "page BookStack 211"\]</td></tr><tr><th style="width:160px;">Auteurs / Source</th><td>—</td></tr><tr><th style="width:160px;">Métadonnées</th><td>{"ocrmypdf": "17.4.0", "tesseract": "5.3.4", "endpoint\_ocr": "POST /api/v1/misc/ocr-pdf", "pic\_memoire\_ocr": "894 MiB / page A4 300 dpi", "limite\_memoire\_retenue": "2g"}</td></tr></tbody></table>

### Tags

**\#StirlingPDF** **\#OCR** **\#ocrmypdf** **\#tesseract** **\#PNG** **\#alpha** **\#DPI** **\#memoire** **\#Docker**

### Suite / Pistes

Verifier apres l'application du compose allege (2026-08-02 19h) que compress-pdf ET l'OCR fonctionnent toujours avec memory=2g et -Xmx512m.

---

## RCH-20260530-0001 — Mise en place API StirlingPDF pour compression PDF automatisée (workflow geo\_loud)

<table id="bkmrk-date2026-05-30-servi"><tbody><tr><th style="width:160px;">Date</th><td>2026-05-30</td></tr><tr><th>Service</th><td>StirlingPDF</td></tr><tr><th>Contexte</th><td>Étape 3 du workflow geo\_loud : automatiser la compression des 127 PDFs lourds (&gt;75 Mo) déplacés dans \\\\NASMAISON\\foxy\\geo\_loud\\. Objectif : appeler l'API StirlingPDF depuis le PC, écraser chaque fichier avec sa version compressée, mettre à jour la DB SQLite. Fichier de test : 000209\_L'inde.pdf (314 Mo).</td></tr><tr><th>Outils utilisés</th><td>StirlingPDF API REST (JWT Bearer) | curl.exe | plink (PuTTY) pour SSH nginx | Python 3.14 + requests | SQLite nas\_geographie.db</td></tr><tr><th>Requête API</th><td>`POST https://spdf.juxjux.ovh/api/v1/misc/compress-pdf — multipart/form-data champ fileInput, header Authorization: Bearer <token>`</td></tr></tbody></table>

### Résultats

Auth JWT résolue. nginx corrigé (client\_max\_body\_size 500M). Test de compression réussi sur 000209\_L'inde.pdf : 314 Mo → 311.7 Mo (0.7% de gain — PDF déjà optimisé en images JPEG). Script `nas_geo_compress.py` opérationnel pour traitement en batch de tous les fichiers.

### Points clés

- **Auth imposée :** malgré `DOCKER_ENABLE_SECURITY=false` dans la stack Docker, StirlingPDF impose un compte admin au premier lancement. Compte créé : **admin / Motdepasse18!**
- **Endpoint de login :** `POST /api/v1/auth/login` avec body JSON `{"username":"admin","password":"Motdepasse18!"}` → réponse : JWT dans `.session.access_token`, valable 24h
- **Utilisation du token :** header `Authorization: Bearer <token>` sur chaque appel API
- **nginx :** client\_max\_body\_size par défaut = 1 Mo → erreur 413 sur gros fichiers. Correction : ajout de `client_max_body_size 500M;` dans `/etc/nginx/sites-enabled/spdf.juxjux.ovh` (via plink/SSH), puis `sudo nginx -s reload`
- **Endpoint compression :** `POST /api/v1/misc/compress-pdf` — multipart avec champ `fileInput` — retourne le PDF compressé directement dans le corps de la réponse (binary)
- **Gain variable :** PDFs avec images JPEG déjà compressées → gain faible (&lt;1%). PDFs texte/vectoriel ou images PNG → gain potentiellement important (30–70%)
- **PowerShell inadapté aux gros fichiers :** concaténation de byte arrays → OutOfMemoryException sur 314 Mo. Utiliser curl.exe ou Python requests
- **Spec API :** `/v3/api-docs` retourne le HTML de la SPA React. Documentation disponible dans la Swagger UI interactive : `https://spdf.juxjux.ovh/swagger-ui/index.html` (après login)

### Limites

- Token JWT expire après 24h — pour des batchs très longs, prévoir un re-login automatique
- La compression StirlingPDF n'expose pas de paramètre de niveau dans cette version — niveau par défaut uniquement
- Le fichier transite en RAM sur le VPS pendant le traitement — fichiers &gt;500 Mo potentiellement problématiques selon la RAM disponible

### Script nas\_geo\_compress.py

**Emplacement :** `C:\Users\eliob\.claude\nas_geo_compress.py`  
**Lancement :** `py C:\Users\eliob\.claude\nas_geo_compress.py`  
**Dépendances :** `pip install requests` (sqlite3 et os natifs Python)

Le script ajoute automatiquement les colonnes `taille_compresse_octets` et `date_compression` à la table `fichiers` si elles n'existent pas encore.

```
"""
Étape 3 du workflow geo_loud : compression PDF via StirlingPDF.
- Lit les fichiers statut='deplace' dans nas_geographie.db
- Envoie chaque PDF à l'API StirlingPDF
- Écrase le fichier d'origine avec la version compressée
- Met à jour la DB (taille_compresse_octets, date_compression)
"""
import sqlite3
import requests
import os
from datetime import datetime

DB_PATH = r"C:\Users\eliob\Documents\nas_geographie.db"
GEO_LOUD = r"\\NASMAISON\foxy\geo_loud"
STIRLING_URL = "https://spdf.juxjux.ovh"
STIRLING_USER = "admin"
STIRLING_PASS = "Motdepasse18!"


def get_token():
    r = requests.post(
        f"{STIRLING_URL}/api/v1/auth/login",
        json={"username": STIRLING_USER, "password": STIRLING_PASS},
        timeout=30,
    )
    r.raise_for_status()
    return r.json()["session"]["access_token"]


def init_db_columns(conn):
    cur = conn.cursor()
    cols = {row[1] for row in cur.execute("PRAGMA table_info(fichiers)")}
    if "taille_compresse_octets" not in cols:
        cur.execute("ALTER TABLE fichiers ADD COLUMN taille_compresse_octets INTEGER")
    if "date_compression" not in cols:
        cur.execute("ALTER TABLE fichiers ADD COLUMN date_compression TEXT")
    conn.commit()


def get_pending(conn):
    cur = conn.cursor()
    cur.execute("""
        SELECT id, nom, chemin_geo_loud, taille_octets
        FROM fichiers
        WHERE statut = 'deplace'
          AND extension IN ('.pdf', '.PDF')
          AND (date_compression IS NULL)
        ORDER BY taille_octets DESC
    """)
    return cur.fetchall()


def compress_file(token, filepath):
    with open(filepath, "rb") as f:
        r = requests.post(
            f"{STIRLING_URL}/api/v1/misc/compress-pdf",
            headers={"Authorization": f"Bearer {token}"},
            files={"fileInput": (os.path.basename(filepath), f, "application/pdf")},
            timeout=600,
            stream=True,
        )
    r.raise_for_status()
    return r.content


def update_db(conn, file_id, taille_compresse):
    conn.execute("""
        UPDATE fichiers
        SET taille_compresse_octets = ?, date_compression = ?
        WHERE id = ?
    """, (taille_compresse, datetime.now().isoformat(), file_id))
    conn.commit()


def fmt_mo(octets):
    return f"{octets / 1_048_576:.1f} Mo"


def main():
    print("Connexion à StirlingPDF...")
    token = get_token()
    print("Token JWT OK")

    conn = sqlite3.connect(DB_PATH)
    init_db_columns(conn)
    pending = get_pending(conn)
    print(f"{len(pending)} fichier(s) PDF à compresser\n")

    if not pending:
        print("Rien à faire.")
        conn.close()
        return

    total_avant = sum(r[3] for r in pending)
    total_apres = 0
    ok = 0
    errors = []

    for i, (file_id, nom, chemin_geo_loud, taille_avant) in enumerate(pending, 1):
        filepath = chemin_geo_loud or os.path.join(GEO_LOUD, nom)
        if not os.path.exists(filepath):
            print(f"[{i}/{len(pending)}] ABSENT  {nom}")
            errors.append((nom, "fichier absent"))
            continue

        taille_reel_avant = os.path.getsize(filepath)
        print(f"[{i}/{len(pending)}] {nom}")
        print(f"    avant : {fmt_mo(taille_reel_avant)}", end=" ", flush=True)

        try:
            compressed = compress_file(token, filepath)
            taille_apres_compression = len(compressed)
            gain = (taille_reel_avant - taille_apres_compression) / taille_reel_avant * 100

            tmp = filepath + ".tmp"
            with open(tmp, "wb") as f:
                f.write(compressed)
            os.replace(tmp, filepath)

            update_db(conn, file_id, taille_apres_compression)
            total_apres += taille_apres_compression
            ok += 1
            print(f"-> après : {fmt_mo(taille_apres_compression)} (gain {gain:.1f}%)")

        except Exception as e:
            print(f"-> ERREUR : {e}")
            errors.append((nom, str(e)))
            tmp = filepath + ".tmp"
            if os.path.exists(tmp):
                os.remove(tmp)

    conn.close()

    print(f"\n{'='*50}")
    print(f"Terminé : {ok}/{len(pending)} compressés")
    if ok:
        gain_total = (total_avant - total_apres) / total_avant * 100
        print(f"Volume avant : {fmt_mo(total_avant)}")
        print(f"Volume après : {fmt_mo(total_apres)}")
        print(f"Gain total   : {gain_total:.1f}%  ({fmt_mo(total_avant - total_apres)} récupérés)")
    if errors:
        print(f"\nErreurs ({len(errors)}) :")
        for nom, msg in errors:
            print(f"  {nom} : {msg}")


if __name__ == "__main__":
    main()

```

### Localisation des ressources

<table id="bkmrk-urlshttps%3A%2F%2Fspdf.jux"><tbody><tr><th style="width:160px;">URLs</th><td>https://spdf.juxjux.ovh (UI) | https://spdf.juxjux.ovh/swagger-ui/index.html (API docs, après login)</td></tr><tr><th style="width:160px;">Chemins</th><td>Script : C:\\Users\\eliob\\.claude\\nas\_geo\_compress.py | DB : C:\\Users\\eliob\\Documents\\nas\_geographie.db | Fichiers source : \\\\NASMAISON\\foxy\\geo\_loud\\ | nginx vhost : /etc/nginx/sites-enabled/spdf.juxjux.ovh</td></tr><tr><th style="width:160px;">IDs</th><td>Stack Portainer : stirlingpdf (ID 89) | Container : stirling-pdf | Port interne : 8090</td></tr><tr><th style="width:160px;">Métadonnées</th><td>{"fichiers\_a\_traiter": 127, "volume\_total\_go": 13.577, "test\_fichier": "000209\_L-inde.pdf", "test\_avant\_mo": 314, "test\_apres\_mo": 311.7, "test\_gain\_pct": 0.7, "nginx\_max\_body": "500M", "token\_duree\_h": 24}</td></tr></tbody></table>

### Tags

**\#StirlingPDF** **\#compression** **\#PDF** **\#geo\_loud** **\#API** **\#JWT** **\#nginx** **\#Python** **\#NAS** **\#workflow**

### Suite / Pistes

1/ Lancer le script sur l'ensemble des 127 fichiers — surveiller le gain réel par catégorie de PDF.  
2/ Mettre à jour la page BookStack 210 avec les colonnes DB ajoutées (taille\_compresse\_octets, date\_compression) et le bilan de compression une fois le batch terminé.  
3/ Si le gain moyen est insuffisant, explorer d'autres niveaux de compression StirlingPDF ou un outil alternatif (Ghostscript direct).  
4/ Après compression de tous les fichiers : lancer l'étape 4 (restauration) via nas\_geo\_loud.py restaurer.