130 lines
5.5 KiB
Markdown
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
|