Files
wiki/Catalogue-Self-Hosted/apps/app-jelu.md
T
2026-06-09 18:40:21 +02:00

143 lines
5.5 KiB
Markdown

---
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](https://github.com/bachman/jelu) |
| **GitHub** | [https://github.com/bachman/jelu](https://github.com/bachman/jelu) |
| **License** | MIT |
| **Langage** | Kotlin (Spring Boot) |
| **Étoiles GitHub** | 30 ⭐ |
| **Dernière MAJ** | 2025-10 |
| **Catégorie** | [[cat-books\|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` :
```yaml
# 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)
```bash
# 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
1. Premier lancement : accéder à `http://localhost:8089`, créer le compte admin.
2. Paramétrer **JELU_BASE_URL** (URL publique HTTPS), **JELU_ACTIVITYPUB_ENABLED** (`true`), **JELU_OAUTH_ENABLED** (`true`).
3. Configurer le **reverse-proxy** (Caddy/Nginx) avec HTTPS et WebSocket (`/ws`).
4. (Optionnel) Activer les **sources de métadonnées** : Google Books, OpenLibrary.
5. Pour la **federation ActivityPub** : vérifier que le port 443/80 est joignable depuis Internet et que le fichier `/.well-known/host-meta` est 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_dump` régulier de la base (volume `jelu_db`)
- ⚠️ **Pas de 2FA** natif — coupler avec Authelia/Authentik
## Ressources
- [Dépôt GitHub](https://github.com/bachman/jelu)
- [Wiki / Documentation](https://github.com/bachman/jelu/wiki)
- [selfh.st — Books](https://selfh.st/apps/?tag=Books)
## 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