Files
wiki/Catalogue-Self-Hosted/apps/app-comicopds.md
T
2026-06-09 18:40:21 +02:00

130 lines
5.5 KiB
Markdown

---
title: ComicOPDS
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, books, comics, opds, python, cbr, cbz, liseuse]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=Books, https://github.com/calvinbui/comic-opds]
---
# 🦸 ComicOPDS
> **Le mini-serveur OPDS pour comics** — exposez vos fichiers CBR/CBZ sur le réseau pour les lire depuis n'importe quelle liseuse compatible OPDS (Kavita, Moon+ Reader, KyBook…).
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | [https://github.com/calvinbui/comic-opds](https://github.com/calvinbui/comic-opds) |
| **GitHub** | [https://github.com/calvinbui/comic-opds](https://github.com/calvinbui/comic-opds) |
| **License** | MIT |
| **Langage** | Python 3 (Flask) |
| **Étoiles GitHub** | 1 ⭐ |
| **Dernière MAJ** | 2023-12 |
| **Catégorie** | [[cat-books\|Books]] |
## Description
ComicOPDS est un **mini-serveur OPDS** écrit en **Python / Flask** dont la fonction est on ne peut plus simple : **scanner un dossier rempli de CBR/CBZ** et exposer un **flux OPDS 1.2** que n'importe quelle liseuse compatible sait consommer. Pas de base de données à monter, pas d'interface web : juste un endpoint HTTP/XML.
Concrètement, vous montez votre dossier de comics (typiquement `~/comics/`), vous lancez le serveur, et votre liseuse (Android avec **Moon+ Reader**, **KyBook 3** ou **Calibre Companion**, ou même **Kavita** et **Komga** comme clients OPDS) voit instantanément une **bibliothèque OPDS** navigable par titre, série, auteur, année. Le serveur lit les métadonnées depuis les fichiers eux-mêmes (ComicInfo.xml dans les CBZ, ou par parsing du nom de fichier).
Le projet vise explicitement les **liseuses OPDS légères** : vous avez une grosse collection de comics (centaines de Go) sur un NAS, vous voulez y accéder depuis une **app Android** sans passer par Plex/Komga qui sont plus lourds. ComicOPDS reste **dans les airs** : moins de 100 Mo de RAM, démarrage en 1 seconde, dépendances minimales (Flask, lxml, comicapi).
**Points forts** : zéro base de données, ultra-léger, OPDS standard, sert de **pont** entre un NAS et une liseuse, parfait pour les setups minimalistes.
**Points faibles** : **1 seule étoile** sur GitHub, maintenance quasi-arrêtée (dernier commit 2023), pas de gestion des utilisateurs ni d'authentification native, pas d'interface web, pas de métadonnées enrichies (pas de ComicVine), et le projet n'est **pas recommandé pour une exposition publique** sans reverse-proxy authentifiant. À considérer comme un **hack utile** plutôt qu'un produit fini.
## Installation
### Via Docker (image communautaire)
```yaml
# docker-compose.yml
services:
comicopds:
build: https://github.com/calvinbui/comic-opds.git
container_name: comicopds
restart: unless-stopped
environment:
- COMICS_DIR=/comics
- PORT=8080
volumes:
- /srv/comics:/comics:ro # montage en lecture seule
ports:
- "8091:8080"
```
### Installation manuelle (Python)
```bash
git clone https://github.com/calvinbui/comic-opds.git
cd comic-opds
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
export COMICS_DIR=/srv/comics
python app.py
```
Prérequis : **Python 3.9+**, **Flask**, **lxml**, **comicapi** (parsing CBZ/CBR).
## Configuration
1. Placer vos comics dans le dossier monté (`/srv/comics` sur l'hôte).
2. Définir la variable `COMICS_DIR` ou éditer `config.py`.
3. (Recommandé) Mettre derrière un **reverse-proxy HTTPS** avec auth :
```caddy
comics.example.com {
basicauth {
user $2a$14$hashed_password
}
reverse_proxy localhost:8091
}
```
4. Ajouter l'URL OPDS dans votre liseuse : `https://comics.example.com/opds`.
5. Les métadonnées sont extraites au démarrage ; **relancer le conteneur** pour rescanner.
## Alternatives
### Open source
- [[app-komga]] — Le standard OPDS pour comics/manga/BDs, complet
- [[app-kavita]] — Lecteur comics/manga très rapide avec OPDS
- [[app-stump]] — Lecteur Rust moderne pour comics
- **Ubooquity** — Serveur OPDS comics/BDs (Java, abandonné)
- **ComicRack** — Lecteur Windows historique, pas self-hosté
### Propriétaires
- **Plex** — Sert les comics via son agent, mais fermé
- **Google Play Livres** — Upload de comics limité, fermé
- **Chunky Reader** — App iOS premium, pas self-hostable
- **YACReader** — Lecteur multi-plateforme, serveur optionnel et payant
## Sécurité
-**Aucune dépendance base de données** (surface d'attaque minimale)
-**Pas d'auth par défaut** = pas de mot de passe à fuiter
-**HTTPS** via reverse-proxy recommandé (Caddy/Nginx)
- ⚠️ **Pas d'authentification native** : **obligatoire** d'ajouter une couche (BasicAuth, Authelia) avant exposition
- ⚠️ **CBR** : extraction de RAR via `unar` ou `unrar` — risque sur archives corrompues
- ⚠️ **Confiance projet** : 1 ⭐, archivé potentiellement — **fork obligatoire** pour usage long terme
- ⚠️ **Logs** : aucune rotation par défaut, configurer `logrotate` ou `journald`
## Ressources
- [Dépôt GitHub](https://github.com/calvinbui/comic-opds)
- [Spécification OPDS 1.2](https://specs.opds.io/opds-1.2)
- [ComicInfo.xml (Anansi Project)](https://anansi-project.github.io/docs/comicinfo/documentation)
- [selfh.st — Books](https://selfh.st/apps/?tag=Books)
## Pages Liées
- [[cat-books]] — Catégorie parente
- [[app-komga]] — Référence OPDS comics/manga, plus complète
- [[app-kavita]] — Lecteur moderne multi-formats
- [[recettes-docker-compose]] — Templates Docker
- [[app-caddy]] — Reverse-proxy HTTPS avec BasicAuth