--- title: Obskurnee created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, books, book-club, social, votes, goodreads, dotnet, vue] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=books, https://github.com/zblesk/obskurnee] --- # 📖 Obskurnee > **Compagnon pour club de lecture** : proposez des livres, votez pour le suivant, notez et critiquez, avec intégration Goodreads. Pas pour self-host isolé, mais pour animer un groupe. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | [obskurnee.zblesk.net](https://obskurnee.zblesk.net/) (démo) | | **GitHub** | [zblesk/obskurnee](https://github.com/zblesk/obskurnee) | | **License** | AGPL-3.0 | | **Langage** | C# (.NET 8) backend, Vue 3 frontend | | **Étoiles** | 27 ⭐ | | **Dernière MAJ** | 2026-05 (active) | | **Catégorie** | [[cat-books]] | ## Description ⚠️ **Note importante** : Obskurnee **n'est PAS un lecteur ni un gestionnaire de bibliothèque**. C'est un **compagnon pour club de lecture** — outil de gouvernance collective pour décider quel livre lire ensuite, partager les critiques, suivre les lectures du groupe. Le tag « Books » de selfh.st lui correspond bien dans la catégorie élargie, mais ne vous attendez pas à un Calibre-Web : ici pas d'EPUB, pas d'upload de fichiers, juste de l'organisation sociale autour de livres. Le workflow est précisément défini : un **modérateur** ouvre un **« voting round »** quand le groupe est prêt pour un nouveau livre. Tous les membres proposent des titres. Une fois la phase de proposition fermée, un **sondage est auto-généré** et évalué après clôture. Le livre gagnant est **mis en avant sur la home page** comme « current book ». Variante : les **topic rounds** (deux étapes — d'abord voter sur un thème/genre, puis sur les livres correspondant au thème gagnant). Fonctionnalités principales : **voting rounds** (votes directs OU thèmes), **book shelf** avec **rate & review**, **recommandations** (suggérer des livres hors round), **intégration Goodreads** (scraping d'URL pour auto-remplir, sync des « currently reading »), **Markdown** dans les textes longs (avec syntaxe `::ceci est un spoiler::`), **user profiles** avec historique de critiques, **modération** des utilisateurs, **home page** avec current book et ongoing activities. **Limitation explicite des créateurs** : la feature set a été sciemment gardée petite. « On voulait implémenter le workflow qu'on utilise, pas couvrir tous les cas. » **Points forts** : workflow club de lecture vraiment pensé, intégration Goodreads originale, UI propre (.NET + Vue), matrix room pour le support, démo en ligne accessible, licence AGPL-3.0. **Points faibles** : **très niche** (clubs de lecture uniquement, pas de gestion de bibliothèque), **bus factor 1** (Ladislav Benc / zblesk), **27 étoiles** seulement, base installée extrêmement faible, pas de sync avec Calibre ou autre, pas d'upload de fichiers, **usage personnel uniquement** (non-commercial), projet jeune. ## Installation ### Via Docker (recommandé) L'image `zblesk/obskurnee` est sur Docker Hub. ⚠️ Important : **Obskurnee n'a pas de HTTPS intégré** — il faut OBLIGATOIREMENT le mettre derrière un reverse-proxy (Nginx, Caddy, Traefik) avec gestion WebSocket (SignalR). ```yaml # docker-compose.yml services: obskurnee: image: zblesk/obskurnee:latest container_name: obskurnee restart: unless-stopped ports: - "8080:8080" volumes: - ./data:/obskurnee/data environment: - SiteName=Mon Club de Lecture - BaseUrl=https://obskurnee.mondomaine.fr - DefaultCulture=fr - SymmetricSecurityKey=CHANGE_ME_LONG_RANDOM_KEY_32_CHARS_MIN - MailerType=mailgun - Mailgun__EndpointUri=https://api.mailgun.net/v3/ - Mailgun__SenderEmail=Club - Mailgun__SenderDomainName=mondomaine.fr - Mailgun__ApiKey=key-mailgun ``` ### Installation manuelle Cloner, .NET 8 SDK, Node 18, `dotnet build` + `npm run build`, configurer `appsettings.json`, lancer. ## Configuration 1. Générer un `SymmetricSecurityKey` fort (32+ caractères aléatoires). 2. Configurer un service mail (Mailgun par défaut, SMTP possible) — les notifications de round sont envoyées par mail. 3. Lancer le conteneur, naviguer sur `/setup`, créer le **premier utilisateur** (qui devient automatiquement modérateur). 4. **Activer le HTTPS via reverse-proxy** (Nginx + certbot, ou [[app-caddy]]). 5. Configurer la **whitelist des domaines email** pour limiter qui peut s'inscrire. 6. Inviter les membres du club, ouvrir le premier voting round. ## Alternatives ### Open source - [[app-bookwyrm]] — Réseau social lecteurs fédéré (ActivityPub), plus généraliste mais sans voting rounds - **BookwormClub** — Petit projet similaire, encore moins étoilé - **Bookture** — Outil de proposition/vote, plus mort que vivant - **Letterboxd-clone apps** — Pour films, structure similaire ### Propriétaires - **Goodreads** (Amazon) — Clubs de lecture Amazon, tracking publicitaire - **Fable** — Réseau social lecteurs, clubs intégrés, freemium - **The StoryGraph** — Moderne, plus privacy-friendly, pas de clubs natifs - **Libib** — Gestionnaire de bibliothèque familiale, freemium ## Sécurité - ⚠️ **Bus factor 1** : zblesk seul aux commandes - ⚠️ **HTTPS obligatoire** : pas de TLS natif, reverse-proxy indispensable - ⚠️ **WebSocket** (SignalR) : la conf Nginx doit gérer le `Upgrade` header - ✅ **AGPL-3.0** : tout fork doit rester open source - ⚠️ **Usage non-commercial uniquement** selon la license - ⚠️ **27 étoiles** : projet jeune, ne pas miser une association dessus - ⚠️ **Scraping Goodreads** : peut casser si Goodreads change son HTML - ⚠️ Pas d'OAuth/OIDC natif : auth locale uniquement ## Ressources - [GitHub zblesk/obskurnee](https://github.com/zblesk/obskurnee) - [Démo en ligne](https://obskurnee.zblesk.net/) - [Matrix room #obskurnee:zble.sk](https://matrix.to/#/#obskurnee:zble.sk) - [selfh.st Books](https://selfh.st/apps/?tag=books) ## Pages Liées - [[cat-books]] — Catégorie Books - [[app-bookwyrm]] — Réseau social lecteurs plus généraliste, fédéré - [[app-caddy]] — Reverse-proxy HTTPS + WebSocket - [[app-traefik]] — Alternative reverse-proxy - [[recettes-docker-compose]] — Templates Docker