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
- Renommer
compose.yml.example→compose.ymlet.env.example→.env. - Choisir la base de données (
SQLITE,MYSQLouPOSTGRESdans.env). - Définir
BASE_URL,APP_PORTet unSECRET_KEYfort. - Configurer OIDC si vous avez un app-authentik ou Keycloak (sections dédiées dans
.env). - Activer Cloudflare Access (
CF_ACCESS_ENABLED=true) si vous êtes derriere un tunnel. - Premier démarrage : créer le compte admin, configurer le chemin de scan EPUB.
- Activer OPDS via
OPDS_ENABLED=trueet 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
- cat-books — Catégorie Books
- app-calibre — Alternative plus complète (mais plus lourde)
- app-kavita — Lecteur moderne avec OPDS, EPUB/CBZ
- app-authentik — SSO/OIDC à brancher
- recettes-docker-compose — Templates Docker