Créée le 12/11/2026 à 14h00 · modifiée le 13/11/2026 à 22h30
KiosKe.fr : veille des médias indépendants et voix LGBTQIA+¶
Qu'est-ce que c'est ?¶
Le KiosKe.fr (disponible sur github) est une veille automatisée des médias indépendants et des luttes, en particulier les voix LGBTQIA+ qu'on n'entend pas assez. Contrairement aux agrégateurs de géants, c'est un ensemble de ~1035 pages HTML statiques générées toutes les 30 minutes, sans API distante, sans JavaScript qui appelle le serveur, sans cookie de traçage.
- Page d'accueil : toutes les sources rangées par catégorie
- 7 pages de catégories : articles mélangés et triés par date
- Pages RSS par catégorie : flux à jour automatiquement
- Page de découverte des flux : lister les sources par catégorie avec icônes décorées aux couleurs du drapeau trans
Aucun JavaScript qui appelle une API distante. Pas de publicité, pas de pistage, pas de dépendance à un géant du web. Les images sont hébergées en local : tout vient de kioske.fr.
Mots-clés : veille, médias indépendants, LGBTQIA+, RSS, Twitch, informatique libre, PWA, statique.
Les principes¶
- Statique : pages HTML régénérées toutes les 30 minutes, servies en pur HTML (pas d'exécution serveur)
- Auto-hébergée : sur mon serveur Debian, derrière nginx, sans dépendance externe
- Sans pistage : pas de cookies de traçage, pas d'analytics, pas de services tiers, rien que tu cliques n'est enregistré
- PWA : installable sur téléphone et ordinateur, fonctionne hors ligne (service worker v14), notification native possible
- Minimaliste : HTML, CSS, et JavaScript limité (pas de framework)
- Accessible : choix des thèmes, taille de police réglable, respects des préférences de contraste
Fonctionnement¶
Sources¶
Le KiosKe suit trois types de flux (fichiers texte, édités à la main) :
- Flux RSS : médias indépendants, sites de luttes, blogs LGBTQIA+
- Fichier
sources/RSS_feeds.txt: URL du flux + catégorie - Chaînes Twitch : créateur·rice·s et streamer·euse·s LGBTQIA+
- Fichier
sources/Twitch_feeds.txt: ID de chaîne + catégorie - Utilise
yt-dlppour récupérer les infos (titre, durée, vignette) - Flux corrigés : ajustements locaux
- Fichier
sources/flux_corrige_main.txt: ignorer un flux (!"URL"), changer son nom affichéé ("URL" | Nom)
Mise à jour automatique (toutes les 30 minutes)¶
Un timer systemd lance le build complet sur le serveur :
- Récupération réseau : articles RSS, vidéos Twitch, aperçus Open Graph
- Stockage : tout va dans une base SQLite locale (
data/historique.db) + un cache local d'images - Génération : la page d'accueil, 7 pages de catégories, ~1028 pages d'articles (une par article)
- Flux RSS dynamiques : rss.xml (tous les articles) + 7 rss/catégorie.xml
- Publication : copie uniquement les fichiers modifiés vers
/var/www/kioske.fr
Chaque page contient tout (texte, image, date) : aucun JavaScript n'appelle le serveur.
La page d'accueil¶
- Navbar sticky en haut : logo + stats à gauche, barre de recherche au centre, cœur ♡ (favoris) + menu ≡ à droite
- Bloc immuable : cagnotte, lien Discord, code de conduite — jamais modifié par le build
- Galerie : 12 derniers articles avec image, scroll horizontal, clic pour ouvrir
- Étiquettes des sources : rangées par catégorie, cliquables pour ouvrir un panneau
Pages de catégories¶
- Articles mélangés : tous les articles de la catégorie, triés par date (pas de groupement par source)
- Grille paginée : 30 articles par page, pagination JS
- Navigation hiérarchique : bouton retour en haut à gauche (vers l'accueil)
Pages d'articles¶
- Contenu du flux : titre, image, description, date (en heure de Paris)
- Lien original : redirection vers l'article sur le site source
- Navigation : Précédent/Suivant pour circuler entre articles, cœur ♡ pour ajouter aux favoris
- Navigation hiérarchique : retour vers la catégorie parent
Favoris et recherche¶
- Cœur ♡ : cliquable dans la barre de navigation, violet quand en favori, stockage local (localStorage)
- Panneau Mes favoris : dans le menu ≡, voir tous les favoris, exporter/importer en JSON
- Barre de recherche : cherche dans titres, descriptions, sources, dates ; crée un panneau de résultats avec cartes cliquables
Thèmes¶
Deux thèmes au choix (+ possibilité d'en ajouter) :
- Voie Lactée : fond noir étoilé avec bande galactique
- Pluie : matricielle trans (bleu, rose, blanc)
Tous deux respectent les couleurs du drapeau trans, contraste accessible, et sélectionnables avec CSS pur (pas de cookie, choix par visite).
PWA et hors ligne¶
Le site est installable sur téléphone (ajouter à l'écran d'accueil) et ordinateur (menu Installer). Un service worker v14 cache les assets statiques, donc : - Les pages téléchargées une fois restent visibles hors ligne - Les asset (CSS, fonts, images) ne rechargent qu'en cas de changement - À jour automatiquement sans actions de l'utilisateur·rice
Architecture¶
| Fichier / dossier | Rôle |
|---|---|
kioske/ |
Paquet Python : config.py (chemins + settings), sources.py, flux.py, twitch.py, apercus.py (Open Graph), images.py, historique.py (SQLite), rendu.py (accueil), rendu_statique.py (pages d'articles/catégories), themes.py, rss.py, construction.py, publication.py, etc. + feuilles de style (style.css, pluie.css). |
sources/ |
RSS_feeds.txt, Twitch_feeds.txt, flux_corrige_main.txt — listes éditées à la main. |
data/ |
immuable.json (empreinte du bloc immuable, suivi par git), historique.db (SQLite, tous les articles/vidéos récupérés), cache/ (images téléchargées), build.lock (verrou), tous locaux jamais publiés. |
build/ |
Le site généré (hors git, jamais édité à la main) : index.html (accueil), articles/{id}-{slug}/index.html (~1028), categories/{slug}/index.html (7), rss.html (découverte), rss.xml + rss/{slug}.xml (feeds par catégories), img/veille/ (images téléchargées), copie de static/, robots.txt, sitemap.xml. |
bin/ |
Points d'entrée : build_site.py, publier_public.py, garde_immuable.py. Quelques lignes chacun. |
deploy/ |
Scripts serveur : kioske.sh (point d'entrée), installer_serveur.sh, deployer_nginx.sh, verifier_serveur.sh, lib_config.sh, systemd/ (timer + service), fail2ban/ (jails). |
accueil/ |
bloc_immuable.html — source du bloc en haut de l'accueil, jamais modifié par le build. |
static/ |
Assets publiés tels quels : favicon.svg, apple-touch-icon.png, preview.png, fonts/. |
kioske.cfg |
Tous les réglages : domaine, nom, thèmes, veille (nombre articles par source, délai Twitch), serveur (chemin web, intervalle timer). Lu par Python et par les scripts bash. |
requirements.txt |
Dépendances Python : feedparser (RSS), yt-dlp (Twitch), legacy-cgi (query strings). |
Dépendances¶
Python : juste trois paquets essentiels (+ stdlib) :
feedparser # Lecture des flux RSS
yt-dlp # Récupération des infos Twitch
legacy-cgi # Parsage des query strings
Aucun framework web, aucune base distante, aucun CDN.
Pour qui ?¶
Pour toi si tu veux :
- Rester informé·e sur les luttes, l'indépendance numérique, les voix LGBTQIA+ qu'on oublie
- Découvrir des médias qu'on ne voit pas à la télé ni dans les algorithmes des géants
- Avoir une source fiable, sans passer par un agrégateur propriétaire ou un réseau social
- Contrôler tes données : chaque clic sur kioske.fr reste chez toi, rien n'est enregistré
- Installer une app sur ton téléphone ou ton ordi, et l'utiliser hors ligne
Réalisation technique¶
Le projet s'est construit progressivement :
- Séparation de gauchiasses.fr (2026-11-11) : KiosKe devient autonome
- Réorganisation (2026-11-11) : code + site + déploiement regroupés
- Navbar sticky + panneaux JS (2026-11-13 nuit) : refonte complète de la navigation
- Panneaux de catégories (2026-11-13 nuit) : afficher les articles de chaque catégorie
- Favoris refondue (2026-11-13 nuit) : stockage des métadonnées complètes, export JSON
- Pages statiques (2026-11-13 matin) : navigation hiérarchique entre articles et catégories
- Corrections de liens (2026-11-13 nuit) : les slugs utilisent maintenant les titres des previews
- PWA consolidée (v14, 2026-11-13) : service worker stable, installation native
Limites connues¶
- Sources manuelles : les ajouter/retirer demande d'éditer des fichiers texte (pas de panneau admin pour l'instant)
- Taille des flux : limité à N articles par source (configurable) pour tenir la page légère et la requête réseau rapide
- Dépendance Twitch : si une chaîne disparaît, les vidéos ne sont plus trouvées ;
yt-dlppeut être bloqué par les changements de l'API - Heures Paris : tous les timestamps sont affichés en CET/CEST ; pas de fuseau personnalisable (volontaire : c'est mon point de vue)
Pourquoi ces choix ?¶
- Donner de la visibilité à des voix qu'on n'entend pas assez, sans subvention ni pub
- Rester maître du code, de la structure, des données
- Zéro tracker : chaque lecteur·rice maîtrise ce qu'iel voit et ce qu'iel partage
- Une seule machine : pas de service tiers, pas de facture d'hébergement cloud, juste mon serveur Debian
- Que ce soit simple à maintenir et à modifier : c'est juste un script Python + des pages statiques
C'est mon petit geste pour les médias indépendants et la communauté LGBTQIA+, sans prétendre résoudre le problème de l'information. Ça reste une veille personnelle, pas un média en soi.
Commentaires
Aucun commentaire pour l’instant.
Laisser un commentaire