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