136 lines
5.5 KiB
Markdown
136 lines
5.5 KiB
Markdown
---
|
|
title: MyBibliotheca
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, books, library, php, personnel, gestionnaire]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Books, https://github.com/petterek/MyBibliotheca]
|
|
---
|
|
|
|
# 📖 MyBibliotheca
|
|
|
|
> **Le gestionnaire de bibliothèque personnelle en PHP** — catalogue de livres, prêts, emprunteurs et étiquettes, dans la lignée directe de Tellico, conçu pour un usage familial ou associatif.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | [https://github.com/petterek/MyBibliotheca](https://github.com/petterek/MyBibliotheca) |
|
|
| **GitHub** | [https://github.com/petterek/MyBibliotheca](https://github.com/petterek/MyBibliotheca) |
|
|
| **License** | GPL-3.0 |
|
|
| **Langage** | PHP (8.0+), SQLite / MySQL |
|
|
| **Étoiles GitHub** | 34 ⭐ |
|
|
| **Dernière MAJ** | 2025-11 |
|
|
| **Catégorie** | [[cat-books\|Books]] |
|
|
|
|
## Description
|
|
|
|
MyBibliotheca est un **catalogue de livres personnel** écrit en PHP, pensé pour gérer une collection domestique ou associative. Inspiré de Tellico (l'outil KDE), il offre une interface web sobre qui tourne aussi bien sur un Raspberry Pi que sur un NAS Synology. Pas de Node.js, pas de Java : juste **PHP + SQLite** par défaut, et le tour est joué.
|
|
|
|
L'application gère les **livres** (titre, auteur, ISBN, édition, année, langue, couverture, résumé), les **auteurs**, les **éditeurs**, les **catégories/étagères**, et surtout le **prêt** : vous savez en un coup d'œil qui a emprunté quoi, depuis quand, et la date de retour prévue. Un système d'**étiquettes** libres, de **notes personnelles** et d'**historique de lecture** complète le tableau.
|
|
|
|
Fonctionnalités phares : **scan ISBN** via webcam, **import/export CSV** et **ONIX**, **statistiques** de lecture (livres lus par an, par genre), **recherche full-text**, **import Goodreads**, **multi-utilisateurs** (avec rôles admin/membre), et **thèmes** sombres/clairs. Le code est **léger** (quelques Mo de RAM), ce qui en fait un candidat idéal pour un hébergement modeste.
|
|
|
|
**Points forts** : simplicité d'installation, base SQLite embarquée, pas de dépendance lourde, communauté francophone et anglophone active.
|
|
|
|
**Points faibles** : interface un peu datée, pas de lecteur EPUB intégré, pas d'OPDS, statistiques encore basiques, et le rythme de développement reste lent (1-2 releases par an).
|
|
|
|
## Installation
|
|
|
|
### Via Docker (recommandé)
|
|
|
|
L'image officielle n'est pas publiée sur Docker Hub ; on utilise l'image `php:8.2-apache` avec un Dockerfile minimal.
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
services:
|
|
mybibliotheca:
|
|
image: ghcr.io/petterek/mybibliotheca:latest
|
|
container_name: mybibliotheca
|
|
restart: unless-stopped
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
volumes:
|
|
- ./data:/var/www/html/data
|
|
- ./config:/var/www/html/config
|
|
ports:
|
|
- "8088:80"
|
|
```
|
|
|
|
### Installation manuelle (LAMP / LAMP-Stack)
|
|
|
|
```bash
|
|
# Cloner le dépôt
|
|
git clone https://github.com/petterek/MyBibliotheca.git
|
|
cd MyBibliotheca
|
|
|
|
# Configurer Apache
|
|
cp config/config.sample.php config/config.php
|
|
$EDITOR config/config.php # ajuster DB et URL
|
|
|
|
# Permissions
|
|
chown -R www-data:www-data .
|
|
chmod -R 755 . data config
|
|
|
|
# Init base
|
|
php install/install.php
|
|
```
|
|
|
|
Prérequis : **PHP 8.0+** avec extensions `pdo_sqlite`, `gd`, `mbstring`, `zip` ; **Apache** avec `mod_rewrite` ou **Nginx** ; **SQLite 3** (par défaut) ou MySQL 8.
|
|
|
|
## Configuration
|
|
|
|
1. Accéder à `http://localhost:8088` et créer le compte administrateur.
|
|
2. Paramétrer les **chemins de scan** pour les couvertures, configurer le fuseau horaire (`TZ=Europe/Paris`).
|
|
3. Activer le **module de prêt** et créer les comptes membres (rôle `user`).
|
|
4. Importer un premier fichier **CSV** (colonnes : `title,author,isbn,publisher,year`) depuis **Outils > Import**.
|
|
5. Activer le **cron** interne pour la mise à jour automatique des statistiques (`cron/daily_stats.php`).
|
|
|
|
### Reverse-proxy HTTPS
|
|
|
|
Exemple Caddy :
|
|
|
|
```caddy
|
|
bibliotheca.example.com {
|
|
reverse_proxy localhost:8088
|
|
}
|
|
```
|
|
|
|
## Alternatives
|
|
|
|
### Open source
|
|
- [[app-komga]] — Lecteur + catalogue, plus moderne, mais plus lourd (Java)
|
|
- [[app-kavita]] — Lecteur rapide multi-formats (C#/.NET)
|
|
- [[app-calibre-web]] — Basé sur Calibre, orienté lecture numérique
|
|
- [[app-librum-books]] — Lecteur EPUB avec synchronisation cloud
|
|
- **Tellico** — L'ancêtre KDE, application locale (non web)
|
|
|
|
### Propriétaires
|
|
- **Goodreads** — Réseau social + catalogue, mais tracking publicitaire
|
|
- **LibraryThing** — Freemium, catalogue riche, pas self-hostable
|
|
- **Babelio** — Francophone, social, propriétaire
|
|
|
|
## Sécurité
|
|
|
|
- ✅ **Authentification** : mot de passe + sel, sessions PHP sécurisées
|
|
- ✅ **CSRF tokens** sur tous les formulaires
|
|
- ✅ **Rôles** : `admin` / `user` pour cloisonner les actions
|
|
- ✅ **HTTPS** obligatoire (HSTS via reverse-proxy)
|
|
- ⚠️ **Base SQLite** : sauvegarder régulièrement `data/mybibliotheca.db` (cron + rsync)
|
|
- ⚠️ **Pas d'authentification 2FA** native — utiliser un reverse-proxy SSO (Authelia)
|
|
- ⚠️ **Upload ISBN** : valider la taille et le type MIME côté serveur
|
|
|
|
## Ressources
|
|
|
|
- [Dépôt GitHub](https://github.com/petterek/MyBibliotheca)
|
|
- [Wiki officiel](https://github.com/petterek/MyBibliotheca/wiki)
|
|
- [selfh.st — Books](https://selfh.st/apps/?tag=Books)
|
|
|
|
## Pages Liées
|
|
|
|
- [[cat-books]] — Catégorie parente
|
|
- [[app-calibre-web]] — Alternative orientée lecture numérique
|
|
- [[app-komga]] — Lecteur moderne multi-formats
|
|
- [[recettes-docker-compose]] — Templates Docker
|
|
- [[app-caddy]] — Reverse-proxy HTTPS
|