Installer Kavita avec Docker

Guide d'installation de Kavita sous Docker.

Installer Kavita avec Docker
kavita docker

Au sommaire :

  • 1-Qu'est-ce que Kavita ?
  • 2-Prérequis
  • 3-Installation
  • 4-Configuration
  • 6-Configuration Traefik

1-Qu'est-ce que Kavita ?

Kavita est une application qui va vous permettre de lire vos mangas, webtoons et comics au format CBR/CBZ/ZIP/RAR/RAR5/7Z/RAW ainsi que vos livres au format EPUB/PDF sur smartphone, tablette ou ordinateur.

Il propose également un mode sombre, un moteur de recherche. différentes méthodes de regroupement et une gestion des utilisateurs et des accès.

Petit bémol, la recherche de métadonnées est disponible uniquement avec Kavita+ (payant) et ça c'est pas très cool.

Pour ma part, j'utilise déjà Calibre-web pour administrer ma riche bibliothèque virtuelle, surtout que ce dernier ne vous demande pas de payer pour télécharger les images et les métadonnées.

Installer Calibre-web avec Docker
Guide d’installation de Calibre-web sous Docker.

Mais la gestion des mangas, webtoons et comics laisse vraiment à désirer dessus et justement, Kavita excelle dans l'affichage de ce type de contenu.

Il excelle tellement bien que la lecture de mangas sur ma tablette m'ont couper l'envie lire les versions papiers alors que je suis pas du tout fan des "scans", c'est pour vous dire à quel point je prend un grand plaisir à lire.

Donc pour ma part, Kavita sert uniquement à cet usage et tourne en permanence sur mon serveur.

Note : pensez bien a activer la lecture de haut en bas en glissant du doigt, vous allez redécouvrir certains de vos mangas et comics, je vous le garantis.

2-Prérequis

Il vous faudra une machine virtuelle sous Ubuntu Server 22.04 LTS.

Voici le guide pour ceux qui veulent repartir de zéro.

Virtualiser Ubuntu Server 22.04 LTS sur Proxmox VE
Guide d’installation de Ubuntu Server 22.04 LTS sur Proxmox VE avec mes meilleurs réglages.

Si vous voulez gagner du temps, utilisez un template cloud-init.

Initialiser vos machines virtuelles avec Cloud-init sur Proxmox VE
Guide d’installation de Cloud-Init qui va vous permettre d’automatiser vos déploiements

Ensuite, suivez ce guide pour installer Docker, Docker Compose et préparer vos variables d'environnement.

Installer Traefik avec Docker
Guide d’installation de Traefik.

3-Déploiement

Commencez par créer un dossier "docker" à la racine du dossier utilisateur"

mkdir -p ~/docker

Créez un fichier nommé "compose.yml"

touch ~/docker/compose.yml

Ouvrez le fichier "compose.yml" et copiez cette configuration.

version: "3.9"

networks:
# Docker Bridge Network
  default:
    driver: bridge

  kavita:
    image: lscr.io/linuxserver/kavita:latest
    container_name: kavita
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - ${APPDATA}/kavita:/config
      - ${MEDIAS}/manga:/mangas
      - ${MEDIAS}/books:/books
      - ${MEDIAS}/comics:/comics
    networks:
      - default
    ports:
      - 5000:5000
    restart: unless-stopped

Pour les options communes :

  • image : l'image officielle de Kavita dans sa dernière version
  • container_name : le nom du conteneur
  • environment : indiquez les variables de base des applications Linuxserver.io comme le PUID (utilisateur), le PGID (groupe) et la TZ (timezone)
  • network : le réseau par défaut en local
  • ports : 5000
  • volumes : indiquez le chemin pour le stockage des données de l'application (${APPDATA}/kavita) et les chemins menant vers vos contenus (mangas, comics, livres)
  • restart : unless-stopped

Téléchargez l'image et créez le conteneur.

docker compose pull && docker compose create

Puis démarrez le conteneur.

docker start kavita

4-Configuration

Accédez à l'applications en tapant l'adresse IP suivi du numéro de port (5000).

Ensuite, indiquez les informations suivantes pour créer un compte utilisateur :

  • Nom d'utilisateur
  • Adresse mail
  • Mot de passe

Lorsque vous aurez fini, cliquez sur "Register".

Puis indiquez vos identifiants et cliquer sur "Submit".

Vous devriez tomber sur cette page.

On va commencer par ajouter du contenu. Faites en sorte d'ajouter vos fichiers dans les dossiers manga, comics et books.

Si vous avez des séries complètes, faites en sorte que tout les tomes se trouve dans le même dossier avec une structure identique sinon le scan ne va pas s'effectuer correctement.

Exemple avec la série "Akira".

Cliquez sur l'engrenage.

Allez dans "Library" puis ajouter un de vos dossiers (mangas pour l'exemple).

Indiquez le nom que vous souhaitez et le type de contenus (Manga, Comic, Book, Images).

Indiquez le chemin du dossier en cliquant sur "Browse for Media Folders".

(Optionnel) Vous pouvez ajouter une icône pour customiser votre librairie.

Laissez les options par défaut. Kavita ajoutera les contenus au format compressé, EPUB, PDF et les formats images, gérera les collections, les listes de lecture, surveillera les modifications, etc.

Cliquez sur "Save" et admirez le résultat.

Note : pour les paramètres SMTP, pensez à créer une adresse mail spécifiquement dédié à cet usage et à ne pas mettre la votre.

  • Adresse SMTP : le serveur SMTP de Outlook ou Gmail (smtp-mail.outlook.com ou smtp.gmail.com)
  • Host Name : le nom de domaine de votre instance Kavita (https://domaine_name). Pensez à cliquer sur "Gmail" ou "Outlook" pour remplir automatiquement les cases "Host" et "Port"
  • Sender Address : l'adresse mail de celui qui va recevoir le mail "test"
  • Host : le serveur SMTP de Outlook ou Gmail (ou n'importe quel autre)
  • Port : 587 (Use SSL on Email Server est coché automatiquement)
  • Username : votre adresse mail
  • Password : le mot de passe de votre adresse mail

Cliquez sur "Save" et puis sur "Test". Vous devriez recevoir un mail à l'adresse que vous avez indiqué dans "Sender Address". Cela vous servira notamment pour envoyer des mails d'invitation aux utilisateurs qui vont accéder à votre instance.

L'onglet "Statistics" affiche les statistiques de votre instance avec différentes informations utiles.

Rien à modifier dans l'onglet "General". Si vous ajoutez un reverse proxy, la case "Host Name" se remplira automatiquement.

Enfin, cliquez sur l'onglet "Users" pour ajouter des utilisateurs qui pourront accéder à votre instance.

Indiquez l'adresse mail de l'utilisateur, les rôles qu'il aura (cochez Login et Read Only c'est suffisant, Download si vous souhaitez également), à quelle section de la librairie il aura accès (Mangas pour ma part) et chose très utile, vous pouvez également restreindre les contenus selon l'âge de la personne donc si vous souhaitez donner un accès à des enfants c'est très utile.

Cliquez sur "Invite".

Kavita va vous générer un lien d'invitation mais comme vous pouvez le voir, celui affiché sur l'image indique une adresse IP donc la personne ne pourra pas ouvrir le lien donc pensez bien à ajouter un reverse proxy (Traefik dans tout mes tutoriels), un nom de domaine valide et à configurer la partie SMTP).

Cliquez sur "Setup user's account".

Et remplissez comme pour le premier compte le nom d'utilisateur et le mot de passe (utilisez l'extension Bitwarden sur Chrome pour générer un mot de passe suffisamment robuste).

Cliquez sur "Register" et le compte sera actif.

5-Configuration Traefik

Si vous souhaitez exposer votre application sur l'internet public, suivez mon guide sur le reverse proxy Traefik.

Installer Traefik avec Docker
Guide d’installation de Traefik.

On va ajouter les labels habituels ainsi que le middleware "basic-auth" pour protéger un minimum l’accès à l'application.

version: "3.9"

networks:
  web:

services:

  traefik:
    container_name: traefik
    image: traefik:latest
    restart: always
    network:
      web:
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ${APPDATA}/traefik/logs:/logs
      - ${APPDATA}/traefik/traefik.yml:/traefik.yml
      - ${APPDATA}/traefik/dynamic.yml:/dynamic.yml
      - ${APPDATA}/traefik/letsencrypt/acme.json:/acme.json
    labels:
      - traefik.enable=true
      - traefik.http.routers.traefik-dash.entrypoints=websecure
      - traefik.http.routers.traefik-dash.rule=Host(`traefik.<votredomaine>.ovh`)
      - traefik.http.routers.traefik-dash.service=api@internal
      - "traefik.http.routers.traefik.middlewares=middlewares-basic-auth@file"

  kavita:
    image: lscr.io/linuxserver/kavita:latest
    container_name: kavita
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - ${APPDATA}/kavita:/config
      - ${MEDIAS}/manga:/manga
      - ${MEDIAS}/books:/books
      - ${MEDIAS}/comics:/comics
    networks:
      - t2_proxy
#    ports:
#      - 5000:5000
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.kavita.entrypoints=websecure
      - traefik.http.routers.kavita.rule=Host(`domain_name`)
      - traefik.http.routers.kavita.service=kavita-svc
      - traefik.http.services.kavita-svc.loadbalancer.server.port=5000
      - traefik.http.routers.kavita.tls.certresolver=letsencrypt

Enregistrez le fichier "compose.yml" et déployez les conteneurs.

docker compose create && docker start traefik kavita