--- title: Inkheart created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, books, pdf, reader, rust, svelte, bibliotheque] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=books, https://gitlab.com/Nystik/inkheart] --- # 📖 Inkheart > **Lecteur et indexeur PDF minimaliste auto-hébergé** : parcourez, recherchez en plein texte, annotez et partagez vos PDFs en deep-link direct vers une page précise. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | [gitlab.com/Nystik/inkheart](https://gitlab.com/Nystik/inkheart) | | **GitLab** | [Nystik/inkheart](https://gitlab.com/Nystik/inkheart) | | **License** | MIT | | **Langage** | Rust (backend), Svelte (frontend), PDF.js | | **Étoiles** | ~150 ⭐ (GitLab) | | **Dernière MAJ** | 2026-05 (v1.3.0) | | **Catégorie** | [[cat-books]] | ## Description Inkheart est né d'un constat simple : la plupart des lecteurs PDF auto-hébergeables (Paperless-ngx, Calibre, etc.) sont **trop lourds** quand on veut juste **browsing + lecture + lien direct vers une page**. Le mainteneur Nystik voulait pouvoir **lier une page précise d'un PDF depuis Notion** et lire des PDF trop gros pour Google Drive — Inkheart est exactement ce petit outil chirurgical. L'indexation est **filesystem-based** (pas de base de données à gérer) avec un index full-text gardé en mémoire et persisté sur disque. Le rendu utilise **PDF.js** côté navigateur, ce qui garantit la compatibilité avec n'importe quel viewer moderne. Le tout en **Rust pour le backend** (performances, binaire unique) et **Svelte pour le frontend** (SPA légère). Inkheart supporte les **collections** (regroupements自定义), les **pinned folders** (raccourcis sidebar), la **recherche full-text** sur l'ensemble du contenu extrait de chaque PDF, le **deep-linking** vers une page précise (`/pdf/123#page=42`), le **sauvegarde de progression** automatique par fichier, et un **mode de visualisation configurable** (page simple, spreads pairs, spreads impairs). Authentification optionnelle via Firebase Auth avec whitelist. **Points forts** : binaire Rust très rapide, image Docker multi-arch (amd64 + arm64 pour Raspberry Pi), lecteur PDF.js fluide, recherche full-text, deep-linking utile, configuration TOML simple, telemetry Plausible désactivable. **Points faibles** : **PDF uniquement** (pas d'ePub, pas de Mobi), index full-text **en mémoire** donc à éviter au-delà de quelques milliers de PDFs, pas de métadonnées stockées (tout est filesystem), **bus factor 1** (un seul mainteneur), interface jeune. ## Installation ### Via Docker (recommandé) Image officielle `nobbe/inkheart` sur Docker Hub, multi-architecture (x86_64 + aarch64). ```yaml # docker-compose.yml services: inkheart: image: nobbe/inkheart:latest container_name: inkheart restart: unless-stopped network_mode: bridge ports: - "8080:8080" volumes: - /chemin/vers/pdfs:/media - ./covers:/covers - ./thumbnails:/thumbnails - ./config:/config environment: - MEDIA_DIR=/media - CONFIG_PATH=/config/inkheart.toml - BIND_ADDR=0.0.0.0 - TELEMETRY_ENABLED=false ``` > Créez les répertoires `covers/`, `thumbnails/` et `config/` **avant** le premier démarrage. ### Installation manuelle Voir `https://gitlab.com/Nystik/inkheart` : cloner, `cargo build --release --no-default-features` (sans telemetry), configurer `inkheart.toml`, lancer le binaire. ## Configuration 1. Monter vos PDFs dans `/media`. 2. Démarrer le conteneur ; le **premier scan** extrait le texte de chaque page (peut être long sur de grosses bibliothèques). 3. Accéder à `http://IP:8080`, créer la première collection. 4. Activer l'auth Firebase si vous voulez restreindre l'accès (whitelist par email). 5. Pour servir derrière un sous-chemin : `BASE_PATH=/pdfs` + reverse-proxy Nginx/Caddy. 6. Désactiver la télémétrie Plausible via `TELEMETRY_ENABLED=false` (sinon un ping anonymisé par page d'index). ## Alternatives ### Open source - [[app-stump]] — Comics/manga/LN, plus large mais aussi plus lourd - **Paperless-ngx** — GED complète (OCR, tags, correspondants) — surdimensionné pour juste lire - **Calibre** — Le monstre, EPUB/MOBI/PDF mais stack Python lourde - **Hammond** — Lecteur PDF auto-hébergé, plus minimal qu'Inkheart - **Docspell** — Idem Paperless, plus orienté archivage ### Propriétaires - **Google Drive** — Viewer PDF intégré, pas de deep-link public stable - **Readwise Reader** — Outil de lecture highlight multi-formats, freemium, pas self-hostable - **Zotero** — Gestionnaire biblio avec lecteur PDF intégré, freemium ## Sécurité - ⚠️ **Bus factor 1** : un seul mainteneur (Nystik), pas de roadmap publique large - ✅ **Auth optionnelle** via Firebase Auth (whitelist) - ⚠️ **Telemetry Plausible activée par défaut** — bien lire ce qui est collecté (compteur d'installations, version, taille de biblio bucketisée, pays) ; désactiver via env - ✅ Pas d'auth native = à mettre derrière un [[app-caddy]] + basic auth ou [[app-authentik]] si exposé - ⚠️ Index full-text **en RAM** : prévoir de la RAM proportionnelle à la taille de la bibliothèque - ⚠️ PDF peut contenir du JavaScript embarqué : PDF.js est sandboxé mais restez prudent ## Ressources - [GitLab Nystik/inkheart](https://gitlab.com/Nystik/inkheart) - [Docker Hub nobbe/inkheart](https://hub.docker.com/r/nobbe/inkheart) - [selfh.st Books](https://selfh.st/apps/?tag=books) ## Pages Liées - [[cat-books]] — Catégorie Books - [[app-stump]] — Lecteur comics/manga OPDS plus large - [[app-calibre]] — Géant EPUB/PDF, plus complet mais plus lourd - [[recettes-docker-compose]] — Templates Docker - [[app-caddy]] — Reverse-proxy HTTPS recommandé