5.5 KiB
title: Jelu created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, books, social, fediverse, kotlin, spring, lecture, partage] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Books, https://github.com/bachman/jelu]
📕 Jelu
La plateforme de lecture sociale auto-hébergée — catalogue de livres, suivi de lectures, critiques, et fédération ActivityPub pour partager vos avis avec Mastodon, BookWyrm et Pleroma.
| Métadonnée | Valeur |
|---|---|
| Site web | https://github.com/bachman/jelu |
| GitHub | https://github.com/bachman/jelu |
| License | MIT |
| Langage | Kotlin (Spring Boot) |
| Étoiles GitHub | 30 ⭐ |
| Dernière MAJ | 2025-10 |
| Catégorie | cat-books |
Description
Jelu (de l'auteur, basé sur Jelu en espéranto) est une plateforme de lecture sociale écrite en Kotlin / Spring Boot, conçue pour self-héberger un véritable Goodreads personnel et fédéré. C'est l'une des rares alternatives à supporter nativement ActivityPub, ce qui lui permet d'interagir avec BookWyrm, Mastodon, Pleroma et le reste du fediverse littéraire.
L'interface propose un catalogue de livres enrichi par les métadonnées (Google Books, OpenLibrary), un journal de lectures (lu, en cours, à lire, abandonné), des critiques (markup simple), des listes thématiques, des citations partageables, et un flux social des activités des comptes que vous suivez. Chaque action (note, critique, ajout) peut être publiée en ActivityPub sur votre timeline Mastodon.
Côté technique : Spring Boot 3, base PostgreSQL, frontend Vue.js servi depuis le JAR, OAuth2 pour la connexion via Mastodon, WebSocket pour les notifications temps réel, et Docker prêt à l'emploi. Le code est modulaire et bien testé.
Points forts : federation ActivityPub (rare pour une app livres), moderne (Kotlin), API REST documentée, déploiement simple, respect de la vie privée.
Points faibles : pas d'application mobile native, communauté encore petite (~30 étoiles), pas de lecteur EPUB intégré, l'instance solo reste un point de friction pour découvrir d'autres lecteurs (sauf via fediverse).
Installation
Via Docker (recommandé)
L'image officielle est publiée sur ghcr.io :
# docker-compose.yml
services:
jelu:
image: ghcr.io/bachman/jelu:latest
container_name: jelu
restart: unless-stopped
environment:
- JELU_DB_URL=jdbc:postgresql://db:5432/jelu
- JELU_DB_USERNAME=jelu
- JELU_DB_PASSWORD=change-me-strong
- JELU_BASE_URL=https://jelu.example.com
- JELU_ACTIVITYPUB_ENABLED=true
- JELU_OAUTH_ENABLED=true
- TZ=Europe/Paris
volumes:
- ./data:/app/data
- ./config:/app/config
ports:
- "8089:8080"
depends_on:
- db
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: jelu
POSTGRES_USER: jelu
POSTGRES_PASSWORD: change-me-strong
volumes:
- jelu_db:/var/lib/postgresql/data
volumes:
jelu_db:
Installation manuelle (JAR)
# Cloner et compiler
git clone https://github.com/bachman/jelu.git
cd jelu
./gradlew bootJar
# Lancer
java -jar build/libs/jelu-*.jar \
--spring.datasource.url=jdbc:postgresql://localhost:5432/jelu \
--spring.datasource.username=jelu \
--spring.datasource.password=changeme
Prérequis : JDK 17+, PostgreSQL 13+, 2 Go de RAM minimum.
Configuration
- Premier lancement : accéder à
http://localhost:8089, créer le compte admin. - Paramétrer JELU_BASE_URL (URL publique HTTPS), JELU_ACTIVITYPUB_ENABLED (
true), JELU_OAUTH_ENABLED (true). - Configurer le reverse-proxy (Caddy/Nginx) avec HTTPS et WebSocket (
/ws). - (Optionnel) Activer les sources de métadonnées : Google Books, OpenLibrary.
- Pour la federation ActivityPub : vérifier que le port 443/80 est joignable depuis Internet et que le fichier
/.well-known/host-metaest servi correctement.
Alternatives
Open source
- app-bookwyrm — Référence fediverse livres, plus mature
- app-neodb — Catalogue social type Letterboxd pour livres
- app-mastodon — Pour la partie microblogage généraliste
- app-funkwhale — Federation audio (autre type de média)
- OpenReads — Suivi local sans réseau social
Propriétaires
- Goodreads — Le géant Amazon, tracking publicitaire
- StoryGraph — Moderne, freemium, pas self-hostable
- Babelio — Francophone, propriétaire
Sécurité
- ✅ Authentification : email + mot de passe (bcrypt), OAuth2 (Mastodon)
- ✅ HTTPS obligatoire (HSTS)
- ✅ CSRF + CORS configurables
- ✅ Modération : blocage de comptes, signalements
- ⚠️ Activité ActivityPub : un compte public attire les bots Mastodon
- ⚠️ Sauvegardes :
pg_dumprégulier de la base (volumejelu_db) - ⚠️ Pas de 2FA natif — coupler avec Authelia/Authentik
Ressources
Pages Liées
- cat-books — Catégorie parente
- app-bookwyrm — Alternative fediverse plus mature
- app-neodb — Catalogue social type Letterboxd
- recettes-docker-compose — Templates Docker
- app-caddy — Reverse-proxy HTTPS