5.7 KiB
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 |
| GitLab | 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).
# 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/etconfig/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
- Monter vos PDFs dans
/media. - Démarrer le conteneur ; le premier scan extrait le texte de chaque page (peut être long sur de grosses bibliothèques).
- Accéder à
http://IP:8080, créer la première collection. - Activer l'auth Firebase si vous voulez restreindre l'accès (whitelist par email).
- Pour servir derrière un sous-chemin :
BASE_PATH=/pdfs+ reverse-proxy Nginx/Caddy. - 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
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é