Skip to content

Kavita Docker : ton lecteur ebooks auto-hébergé (alternative à Calibre)

Brandon
Published date:

💡 TL;DR

  • Kavita est un serveur de lecture ebooks auto-hébergé qui gère EPUB, PDF, CBZ/CBR, images et manga
  • Tu le déploies en 5 minutes avec Docker Compose, interface web moderne et responsive
  • Alternative open-source (GPL-3.0) à Calibre-Web, plus rapide et plus agréable à utiliser
  • Docker Compose complet, tableau comparatif et astuces de config inclus ci-dessous

Pourquoi un serveur d’ebooks auto-hébergé ?

T’as une bibliothèque numérique qui ressemble à un champ de bataille. Des EPUB achetés sur diverses plateformes, des PDF de documentation technique, des mangas en CBZ téléchargés légalement (ou pas), et des scans de vieux magazines. Le tout éparpillé sur ton NAS, ton laptop, ton téléphone et trois applications différentes qui ne se parlent pas.

Calibre Desktop ? C’est un outil puissant, mais l’interface ressemble à Windows 95 et la synchronisation entre appareils relève du parcours du combattant. Calibre-Web est mieux, mais il reste visuellement daté et certaines opérations demandent encore de passer par le backend Calibre. Quant aux solutions commerciales comme Kindle Cloud, elles te lient à un écosystème fermé où tes livres ne t’appartiennent pas vraiment.

Tu as besoin d’un serveur de lecture qui :

Kavita répond à tous ces besoins. C’est un projet open-source développé en C# avec .NET, sous licence GPL-3.0, avec plus de 10 900 stars sur GitHub. L’image Docker officielle jvmilazz0/kavita est maintenue activement et supporte amd64, arm64 et armv7. Si tu cherches à compléter ton homelab avec un service média dédié aux ebooks, Kavita s’intègre parfaitement à côté de ton Jellyfin pour les films ou ta galerie PhotoPrism.

Qu’est-ce que Kavita exactement ?

Kavita n’est pas un simple indexeur de fichiers. C’est un serveur de lecture complet avec une interface web moderne, pensée pour la consommation de contenus longs.

Voici ce qu’il propose concrètement :

Le tout tourne dans un seul conteneur Docker léger, sans base de données externe nécessaire (Kavita utilise SQLite par défaut). Si tu débutes avec Docker, commence par mon guide sur les services essentiels à auto-héberger pour bien poser les bases avant d’ajouter Kavita à ta stack.

Prérequis

Kavita est extrêmement léger. Un Raspberry Pi 4 avec 2 Go de RAM suffit pour servir une bibliothèque de plusieurs milliers de titres à plusieurs utilisateurs simultanés. Pour un usage confortable avec de gros PDF, un petit VPS de 1 cœur / 2 Go est largement suffisant.

Déploiement Kavita avec Docker Compose

Crée un dossier dédié et un fichier docker-compose.yml :

mkdir -p ~/kavita && cd ~/kavita

Voici le Docker Compose complet et prêt à l’emploi :

version: "3.8"

services:
  kavita:
    image: jvmilazz0/kavita:latest
    container_name: kavita
    environment:
      - TZ=Europe/Paris
    volumes:
      - ./kavita-data:/kavita/config
      - /chemin/vers/ta/bibliotheque:/books:ro
    ports:
      - "5000:5000"
    restart: unless-stopped

Explications ligne par ligne :

Lancement :

docker compose up -d

Attends 10-20 secondes que le conteneur initialise sa base de données, puis ouvre http://IP_DE_TON_SERVEUR:5000 dans ton navigateur.

Configuration initiale

La première fois que tu te connectes, Kavita te demande de créer un compte administrateur. Renseigne un email, un mot de passe solide, et valide.

Une fois dans le dashboard, voici les étapes essentielles :

1. Créer une bibliothèque

Va dans Settings > Libraries > Add Library. Choisis un type :

Dans le champ folder, indique /books (ou le sous-dossier correspondant si tu as monté plusieurs répertoires).

2. Lancer le premier scan

Kavita scanne automatiquement les fichiers et extrait les métadonnées. Selon la taille de ta bibliothèque, ça peut prendre de quelques secondes à plusieurs minutes. Les couvertures apparaissent au fur et à mesure.

3. Paramétrer le scan automatique

Dans Settings > Libraries > Edit (ta bibliothèque), active l’option “Watch Folder” si tu veux que Kavita détecte les nouveaux fichiers en temps réel. Sinon, un scan périodique toutes les 24 heures est configuré par défaut.

4. Créer des utilisateurs (optionnel)

Dans Account > Users, tu peux créer des comptes avec des accès restreints à certaines bibliothèques. Pratique si tu partages ton serveur avec ta famille et que tu veux séparer les mangas des PDF techniques.

Scanner et organiser ta bibliothèque

L’organisation de tes fichiers influence directement la qualité du scan. Kavita est assez intelligent, mais quelques conventions aident énormément :

Kavita reconnaît les séries et numéros de tome dans les noms de fichiers. Si tu utilises un outil comme ComicTagger ou Mylar pour renseigner les métadonnées ComicInfo.xml dans tes CBZ, Kavita les exploite nativement.

Pour les EPUB, les métadonnées internes (titre, auteur, série, langue) sont lues directement. Pas besoin de renommer parfaitement si l’EPUB est bien fait.

Si tu cherches aussi une solution pour gérer tes fichiers sur le même serveur, j’ai un guide sur File Browser Docker qui te permettra d’organiser et transférer tes ebooks facilement avant de les scanner avec Kavita.

Tableau comparatif : Kavita vs Calibre-Web vs Komga

Tu hésites entre plusieurs solutions ? Voici le match réel :

CritèreKavitaCalibre-WebKomga
LicenceGPL-3.0GPL-3.0AGPL-3.0
Formats ebooksEPUB, PDF, CBZ, CBR, imagesEPUB, PDF, CBZ, CBR, TXTCBZ, CBR, PDF, EPUB (limité)
InterfaceModerne, responsive, fluideFonctionnelle mais datéeModerne, orientée comics/manga
Lecture webNative, mode nuit, paginationNative mais basiqueExcellente, mode manga optimisé
Base de donnéesSQLite intégrée (simple)Nécessite Calibre DesktopSQLite intégrée
OPDS✅ Oui✅ Oui✅ Oui
Multi-utilisateurs✅ Oui, permissions granulaires✅ Oui✅ Oui
Position de lecture✅ Oui, cross-device✅ Oui✅ Oui
Lecture hors ligne✅ Téléchargement❌ Non❌ Non
Extraction métadonnéesAutomatique (couvertures, séries)Dépend de Calibre DesktopAutomatique (Komga exploite ComicInfo.xml)
RessourcesTrès légèreLégère mais nécessite CalibreLégère
Manga mode✅ Lecture droite-gauche❌ Basique✅ Exemplaire

Verdict :

Mon avis perso : Kavita fait 90% du job des deux autres réunis, avec une interface bien plus agréable et aucune dépendance externe. Pour un homelab, c’est le choix le plus simple et le plus propre.

Astuces et bonnes pratiques

Renommer proprement avant d’importer

Même si Kavita lit les métadonnées internes, un nommage cohérent améliore la détection des séries. Utilise un outil comme Calibre (desktop) pour retoucher les métadonnées EPUB, ou ComicTagger pour les CBZ, avant de les balancer dans Kavita.

Séparer les types de contenu

Crée des bibliothèques distinctes : une pour les ebooks, une pour les mangas, une pour les PDF techniques. Ça évite d’avoir “Le Guide Docker” à côté de “One Piece Tome 94” dans la même grille.

Activer la compression des images

Dans Settings > Media, Kavita propose de compresser les images à la volée pour accélérer le chargement. À activer si tu accèdes depuis l’extérieur ou si ta connexion montante est faible.

Utiliser un reverse proxy pour HTTPS

N’expose jamais Kavita en HTTP sur Internet. Utilise Caddy, Traefik ou Nginx Proxy Manager pour obtenir un certificat Let’s Encrypt. Si tu utilises Caddy, j’ai un guide complet sur la configuration qui te montrera comment sécuriser ton homelab en quelques minutes.

Sauvegarder régulièrement

Le dossier ./kavita-data contient tout : base de données, utilisateurs, caches, paramètres. Sauvegarde ce dossier avec Duplicati ou rsync. La bibliothèque d’ebooks elle-même est en lecture seule, donc pas besoin de la sauvegarder depuis Kavita si tu l’as déjà ailleurs.

Mise à jour

Pour mettre à jour Kavita :

cd ~/kavita
docker compose pull
docker compose up -d

Kavita gère automatiquement les migrations de base de données au démarrage. Tu ne perds jamais tes données en mettant à jour.

Reverse proxy et HTTPS

Pour un accès sécurisé avec un nom de domaine, ajoute ce bloc à ton Caddyfile (si tu utilises Caddy) :

ebooks.tondomaine.com {
    reverse_proxy localhost:5000
}

Ou avec Traefik, ajoute ces labels au service Kavita dans ton Docker Compose :

    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.kavita.rule=Host(`ebooks.tondomaine.com`)"
      - "traefik.http.routers.kavita.entrypoints=websecure"
      - "traefik.http.routers.kavita.tls.certresolver=letsencrypt"

Si tu n’as pas encore de reverse proxy en place, Caddy est de loin la solution la plus simple pour un homelab. Un fichier Caddyfile de 5 lignes et tu as du HTTPS auto-renouvelé sans toucher à Certbot.

Sauvegarde et mise à jour

Sauvegarde : le seul dossier critique est ./kavita-data. Tu peux le copier avant chaque mise à jour :

cp -r ~/kavita/kavita-data ~/backups/kavita-data-$(date +%Y%m%d)

Ou mieux, automatise avec un cron qui envoie ça vers un serveur distant ou un stockage cloud.

Mise à jour : Kavita publie des mises à jour régulières avec des corrections de bugs et des améliorations de performances. La procédure est toujours la même :

cd ~/kavita
docker compose pull && docker compose up -d

Puis vérifie les logs pour t’assurer que la migration s’est bien passée :

docker logs --tail 50 kavita

Conclusion

Kavita est l’un de ces outils qui rendent l’auto-hébergement si satisfaisant. En une dizaine de minutes, tu passes d’une collection d’ebooks éparpillée et mal organisée à un serveur de lecture propre, rapide et accessible de partout. L’interface est moderne, la lecture est fluide, et la gestion multi-utilisateurs te permet de partager ta bibliothèque sans compromis.

Si tu as déjà un homelab avec Jellyfin pour les films, PhotoPrism pour les photos et peut-être BookStack pour ta documentation, Kavita complète parfaitement cet écosystème. C’est le dernier maillon qui manquait à ton infrastructure média personnelle.

Et n’oublie pas : tes ebooks restent sur ton serveur. Pas de dépendance à un cloud, pas de DRM qui te bloquent l’accès, pas d’interface encombrée par de la publicité. Juste toi, tes livres, et un serveur qui fait son boulot.

Next
BookStack Docker : wiki pour équipes