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

5.9 KiB


title: BookHaven created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, books, epub, reader, opds, python, oidc, rbac] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=books, https://github.com/HrBingR/BookHaven]

📚 BookHaven

Lecteur EPUB browser-based avec gestion de bibliothèque : scannez votre dossier local d'EPUBs, lisez et téléchargez depuis n'importe quel device, avec support OPDS et OIDC.

Métadonnée Valeur
Site web github.com/HrBingR/BookHaven
GitHub HrBingR/BookHaven
License GPL-3.0
Langage Python (backend), TypeScript/Vue (frontend)
Étoiles 115
Dernière MAJ 2025-11 (v1.7.x)
Catégorie cat-books

Description

BookHaven est un gestionnaire/lecteur de bibliothèque EPUB développé comme alternative minimale aux solutions type Calibre-Web ou Kavita. L'auteur (HrBingR) voulait quelque chose de plus simple à déployer et plus moderne côté UI. Le pari est tenu : stack légère (Python + Vue), DB au choix (SQLite/MySQL/PostgreSQL), cache Redis, image Docker officielle.

L'application scanne automatiquement un dossier local d'EPUBs (intervalle configurable + scan manuel), extrait les métadonnées (titre, auteur, série, couverture) sans toucher aux fichiers originaux — toutes les modifications sont stockées en base. C'est un choix architectural important : BookHaven est non-destructif.

Côté fonctionnalités : lecteur EPUB dans le navigateur (basé sur Readium ou epub.js), téléchargement direct, recherche plein texte (auteur, titre, série), filtres par statut (favoris, terminés, en cours), page auteur avec grille alphabétique, uploads utilisateurs (avec correction de métadonnées post-upload), RBAC basique (admin, editor, user), requêtes de livres (les users peuvent demander l'ajout d'un titre), OIDC pour l'authentification centralisée, OPDS pour la lecture depuis des apps e-reader (KOReader, Moon+ Reader, etc.), et support Cloudflare Access pour bypass le login.

Points forts : non-destructif (métadonnées en DB, fichiers intacts), OIDC + RBAC + Cloudflare Access prêts à l'emploi, OPDS fonctionnel, image Docker officielle, README clair, install Docker en 4 étapes.

Points faibles : EPUB uniquement (pas de PDF, MOBI, AZW3), bus factor 1 (un seul mainteneur), rythme de release lent (~1 release majeure/an), stack Python + Node à maintenir pour le build frontend, projets plus complets et matures (Calibre-Web, Kavita) existent.

Installation

Via Docker (recommandé)

L'image hrbingr/bookhaven est sur Docker Hub. La stack officielle inclut MySQL + Redis (mais SQLite fonctionne aussi).

# docker-compose.yml
services:
  bookhaven:
    image: hrbingr/bookhaven:latest
    container_name: bookhaven
    restart: unless-stopped
    ports:
      - "5000:5000"
    env_file: .env
    volumes:
      - ./data:/app/data
      - /chemin/vers/epubs:/library
    depends_on:
      - mysql
      - redis

  mysql:
    image: mysql:8-alpine
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: bookhaven
      MYSQL_USER: bookhaven
      MYSQL_PASSWORD: change-me
      MYSQL_ROOT_PASSWORD: change-me-root
    volumes:
      - bookhaven_db:/var/lib/mysql

  redis:
    image: redis:7-alpine
    restart: unless-stopped

volumes:
  bookhaven_db:

Installation manuelle

Cloner le dépôt, cp compose.exmaple.yml compose.yml (sic, le repo contient une coquille), cp .env.example .env, lancer la stack.

Configuration

  1. Renommer compose.yml.examplecompose.yml et .env.example.env.
  2. Choisir la base de données (SQLITE, MYSQL ou POSTGRES dans .env).
  3. Définir BASE_URL, APP_PORT et un SECRET_KEY fort.
  4. Configurer OIDC si vous avez un app-authentik ou Keycloak (sections dédiées dans .env).
  5. Activer Cloudflare Access (CF_ACCESS_ENABLED=true) si vous êtes derriere un tunnel.
  6. Premier démarrage : créer le compte admin, configurer le chemin de scan EPUB.
  7. Activer OPDS via OPDS_ENABLED=true et donner l'URL à votre liseuse / app reader.

Alternatives

Open source

  • app-calibre — Monstre sacré, EPUB/PDF/MOBI/AZW3, stack Python lourde
  • Calibre-Web — Front web pour une DB Calibre existante, mature
  • Kavita — Lecteur comics/manga/LN avec OPDS, interface moderne
  • app-stump — Alternative Rust à Kavita
  • LibreShelves — Outil minimaliste, EPUB/PDF, plus jeune que BookHaven

Propriétaires

  • Calibre (desktop, gratuit mais pas self-hostable en tant que serveur) — Le modèle historique
  • BookFusion — Lecteur EPUB en ligne, freemium
  • Tolino — Liseuse + écosystème cloud propriétaire

Sécurité

  • OIDC supporté (déléguer l'auth à Keycloak/Authentik)
  • RBAC (admin/editor/user) — limiter qui peut uploader ou demander
  • ⚠️ Bus factor 1 : mainteneur unique, pas d'organisation derrière
  • Pas d'auth native par défaut → mettre derrière HTTPS via app-caddy ou app-traefik
  • ⚠️ Uploads utilisateurs : attention aux EPUB vérolés (XSS via EPUB malformé)
  • Métadonnées stockées en DB = fichiers originaux intacts (rollback trivial)
  • ⚠️ Releases peu fréquentes : rester attentif aux CVE Python/Node

Ressources

Pages Liées