--- 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