Initial vault setup
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user