Installer Kavita avec Docker
Guide d'installation de Kavita sous 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.
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.
Si vous voulez gagner du temps, utilisez un template cloud-init.
Ensuite, suivez ce guide pour installer Docker, Docker Compose et préparer vos variables d'environnement.
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.
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