Files
BloomFeed-RSS/README.md
T
2026-07-04 20:22:16 +02:00

6.9 KiB

BloomFeed

Un agrégateur RSS personnel et auto-hébergé, avec lecture approfondie intégrée.
A personal, self-hosted RSS aggregator with a built-in reader.

Page d'accueil de BloomFeed

Qu'est-ce que BloomFeed ?

BloomFeed centralise vos flux RSS/Atom préférés dans une interface simple. Quand un article vous intéresse, BloomFeed récupère la page source, en extrait le contenu principal et l'affiche directement dans l'application — plus besoin d'ouvrir le site d'origine.

BloomFeed est pensé pour être auto-hébergé par une personne ou un foyer : le premier compte créé devient le compte propriétaire, qui peut ensuite inviter des proches (création directe de comptes) ou ouvrir les inscriptions publiques depuis le menu Paramètres.

Fonctionnalités

  • Ajout de flux RSS/Atom, suivi des non-lus, favoris.
  • Lecture approfondie intégrée : extraction du contenu principal (via Readability) converti en Markdown, sans quitter BloomFeed.
  • Catalogue de flux façon "market" : une sélection de flux embarquée avec l'application (resources/data/bloomflux.json), à ajouter en un clic.
  • Multi-comptes : le propriétaire crée des comptes ou ouvre/ferme les inscriptions d'un clic.
  • Notifications personnelles : chaque utilisateur configure ses propres alertes Discord ou webhook générique, pour tous ses flux ou seulement certains.
  • Interface disponible en français, anglais, espagnol et allemand (sélecteur en haut de page, préférence mémorisée par utilisateur).
  • Récupération périodique des flux via une tâche planifiée.
  • Thème clair/sombre.

Aperçu

Tableau de bord Lecteur intégré
Tableau de bord Lecteur intégré
Catalogue de flux Notifieurs
Catalogue de flux Notifieurs
Mode sombre
Mode sombre

Stack technique

  • Laravel 13 (PHP 8.4)
  • MariaDB
  • CSS/JS écrits à la main, sans étape de build (pas de Node/Vite/Tailwind)
  • Docker Compose pour le déploiement

Installation (auto-hébergement)

Prérequis

  • Un serveur Linux avec Docker et le plugin Docker Compose.
  • Le port 7081 libre (modifiable dans docker-compose.yml).
  • Optionnel : un nom de domaine + reverse proxy (Nginx, Caddy, Traefik…) pour le HTTPS — l'application détecte automatiquement les en-têtes X-Forwarded-*.

Étapes

git clone https://git.eldorianet.work/esteban/BloomFeed-RSS bloomfeed
cd bloomfeed
bash scriptsite.sh

Le script de déploiement :

  1. libère le port 7081 si nécessaire ;
  2. clone ou met à jour le code dans /opt/bloomfeed ;
  3. crée le .env depuis .env.example s'il n'existe pas, et y génère les secrets manquants (APP_KEY, DB_PASSWORD, DB_ROOT_PASSWORD) — ils ne sont jamais régénérés ensuite ;
  4. construit les images et démarre les conteneurs (application, planificateur, MariaDB) ;
  5. attend que les migrations de l'entrypoint soient terminées et vérifie que l'application répond.

Ouvrez ensuite http://votre-serveur:7081 et créez le compte propriétaire — les inscriptions publiques se referment automatiquement après.

Mise à jour

Relancez simplement bash scriptsite.sh : il récupère les derniers changements et reconstruit la stack sans toucher à vos données.

Réinitialisation

Pour repartir d'une instance vierge (efface comptes, flux, articles et notifieurs) sans toucher au code, au .env ni aux images Docker :

bash reset.sh          # confirmation interactive requise
bash reset.sh --yes    # sans confirmation

Désinstallation

bash uninstall.sh              # arrête et supprime les conteneurs (données conservées)
bash uninstall.sh --purge      # supprime aussi la base de données et le storage (confirmation demandée)
bash uninstall.sh --purge --purge-source   # supprime aussi /opt/bloomfeed et le .env

Configuration

Comptes et inscriptions

Le compte propriétaire dispose d'un menu Paramètres dans la barre de navigation :

  • Créer un compte directement (nom, e-mail, mot de passe) pour un proche, sans rien ouvrir au public ;
  • Ouvrir / fermer les inscriptions publiques d'un clic — quand elles sont ouvertes, le bouton "Créer un compte" réapparaît sur la page d'accueil et la page de connexion.

Langue

Chaque visiteur ou utilisateur choisit sa langue (FR, EN, ES, DE) via le sélecteur en haut de page. Le choix est mémorisé en session pour les visiteurs et enregistré sur le profil pour les utilisateurs connectés. La langue par défaut de l'instance se règle avec APP_LOCALE dans .env.

Variables d'environnement principales

Variable Rôle Défaut
APP_URL URL publique de l'instance (importante derrière un reverse proxy HTTPS) http://localhost:7081
APP_LOCALE Langue par défaut (fr, en, es, de) fr
DB_* Connexion MariaDB (générés par le script)

Catalogue de flux

L'onglet Catalogue propose une sélection de flux pré-faits (actualités, tech, développement, IT/sysadmin, sécurité, sciences…) à ajouter en un clic. La liste vit dans resources/data/bloomflux.json, versionnée avec le code : pour l'enrichir, éditez le fichier et redéployez — aucun service externe n'est nécessaire.

{ "title": "Nom du flux", "url": "https://exemple.com/rss.xml", "category": "Tech", "lang": "fr", "description": "Courte description." }

Notifications (Discord / webhook)

Chaque utilisateur configure ses propres notifieurs depuis le menu Notifieurs :

  • Discord : collez l'URL d'un webhook de salon Discord (Paramètres du salon → Intégrations → Webhooks) ; BloomFeed envoie un embed (titre, lien, extrait) à chaque nouvel article.
  • Webhook générique : n'importe quelle URL recevant un POST JSON { "event": "article.created", "feed": "...", "article": { "title", "url", "excerpt", "published_at" } }.

Chaque notifieur a une portée : tous les flux de l'utilisateur, ou une sélection précise de flux. Un bouton "Tester" envoie une notification factice pour valider l'URL avant de compter dessus.

Développement local

Prérequis : PHP 8.3+ et Composer.

composer install
cp .env.example .env
# Passer DB_CONNECTION=sqlite dans .env pour un dev local sans MariaDB
touch database/database.sqlite
php artisan key:generate
php artisan migrate
php artisan serve

Licence

MIT.