--- 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