Files
2026-06-09 18:40:21 +02:00

5.5 KiB


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
GitHub https://github.com/calvinbui/comic-opds
License MIT
Langage Python 3 (Flask)
Étoiles GitHub 1
Dernière MAJ 2023-12
Catégorie cat-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)

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

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 :
comics.example.com {
    basicauth {
        user $2a$14$hashed_password
    }
    reverse_proxy localhost:8091
}
  1. Ajouter l'URL OPDS dans votre liseuse : https://comics.example.com/opds.
  2. 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

Pages Liées