Files
2026-06-09 18:40:21 +02:00

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

  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

Pages Liées