stream-fusion-better/RELEASE_NOTES_V3.md
2026-03-30 18:35:06 +02:00

11 KiB

StreamFusion V3.0.0 — Notes de version

⚠️ Version majeure — Changements non rétrocompatibles Une mise à jour des variables d'environnement et une migration de base de données sont obligatoires avant de démarrer cette version.


Introduction

Après deux ans sans release majeure, StreamFusion revient avec une version 3.0.0 profondément remaniée. Cette version est le fruit d'un travail collectif intense : refonte complète de l'interface d'administration, nouvelle infrastructure de cache debrid multi-couches (Redis + PostgreSQL), vérification de cache AllDebrid en temps réel, partage de cache entre instances, support de quatre nouveaux indexeurs privés français, sécurité renforcée sur tous les endpoints, et de nombreuses améliorations de performance.

Il s'agit d'une version breaking : des changements de configuration et une migration de base de données sont requis.


⚠️ Breaking Changes — Migration V2 → V3

Checklist de migration (dans l'ordre)

  • Sauvegarder la base de données PostgreSQL
  • Mettre à jour l'image Docker vers v3.0.0
  • Supprimer les variables d'environnement obsolètes (voir ci-dessous)
  • Mettre à jour les variables modifiées
  • Ajouter les nouvelles variables si nécessaire
  • Lancer les migrations BDD : alembic upgrade head
  • Vérifier le démarrage et l'interface admin

Variables supprimées — à retirer de votre configuration

Variable Raison
SHAREWOOD_ENABLE Sharewood définitivement supprimé
SHAREWOOD_URL idem
SHAREWOOD_PASSKEY idem
SHAREWOOD_MAX_WORKERS idem
SHAREWOOD_UNIQUE_ACCOUNT idem
PUBLIC_CACHE_URL Le cache public tiers a été supprimé
ALLOW_ANONYMOUS_ACCESS Remplacé par ALLOW_PUBLIC_KEY_REGISTRATION

Variables modifiées — comportement par défaut changé

Variable Ancienne valeur par défaut Nouvelle valeur par défaut Action si usage local/Docker
ZILEAN_HOST zilean zileanfortheweebs.midnightignite.me Ajouter ZILEAN_HOST=zilean
ZILEAN_SCHEMA http https Ajouter ZILEAN_SCHEMA=http
ZILEAN_PORT 8181 (implicite) None (auto) Ajouter ZILEAN_PORT=8181 si nécessaire

Migrations de base de données obligatoires

Quatre nouvelles tables sont créées automatiquement :

Table Description
debrid_cache Cache L2 PostgreSQL pour la disponibilité debrid (persistant entre redémarrages)
peer_keys Clés d'authentification pour le partage inter-instances
metadata_mappings Correspondances IMDb/TMDB personnalisées via l'interface admin
alembic upgrade head

Suppression de Sharewood

Le tracker Sharewood a été entièrement supprimé de la codebase (API, service, modèles). Si vous utilisiez Sharewood, il n'existe pas d'équivalent direct — consultez les nouveaux indexeurs supportés ci-dessous.


Nouveautés

Quatre nouveaux indexeurs privés

Quatre trackers UNIT3D et Torznab rejoignent StreamFusion :

Indexeur URL Variables à configurer
ABN (Abnormal) abn.lol ABN_API_KEY, ABN_PASSKEY
G3MINI (Gemini Tracker) gemini-tracker.org G3MINI_API_KEY, G3MINI_PASSKEY
TheOldSchool theoldschool.cc THEOLDSCHOOL_API_KEY, THEOLDSCHOOL_PASSKEY
Generation Free generation-free.org GENERATIONFREE_API_KEY, GENERATIONFREE_PASSKEY

Ces indexeurs sont activés par défaut (_ENABLE=true). Ils n'interrogent le serveur que si des credentials sont fournis, ou si *_UNIQUE_ACCOUNT est configuré côté serveur.


Infrastructure de cache debrid entièrement repensée

Cache Redis partagé entre tous les providers Tous les résultats de disponibilité debrid (RealDebrid, AllDebrid, TorBox…) sont désormais mis en cache dans Redis avec un TTL de 7 jours (fichiers disponibles) ou 1 heure (fichiers non disponibles). Les vérifications redondantes sont évitées à l'échelle de l'instance.

Cache L2 PostgreSQL persistant Un second niveau de cache est maintenu en base de données. Les informations de disponibilité survivent aux redémarrages de l'application, ce qui accélère considérablement les premières requêtes après un restart.

Vérification AllDebrid en temps réel (bulk upload/delete) AllDebrid dispose désormais d'une vérification de cache réelle via upload en masse et suppression immédiate des magnets temporaires. Les faux positifs sont éliminés, les résultats sont fiables. Les magnets invalides (MAGNET_INVALID_URI) sont mis en cache comme non-disponibles (TTL 1h) pour éviter les re-tentatives inutiles.

RealDebrid via API directe La vérification de disponibilité RealDebrid passe désormais par l'API RD directe, sans intermédiaire StremThru (le fallback reste disponible si StremThru est configuré).


Partage de cache inter-instances (Peer-to-Peer)

Deux instances StreamFusion peuvent désormais partager leur cache debrid de façon sécurisée. L'instance "peer" expose ses données de disponibilité via une clé d'authentification dédiée.

Nouvelles variables d'environnement (optionnelles) :

PEER_STREAMFUSION_URL=https://votre-instance-peer.exemple.com
PEER_STREAMFUSION_KEY_ID=<key_id fourni par l'instance peer>
PEER_STREAMFUSION_SECRET=<secret 256-bit hex fourni par l'instance peer>

La gestion des clés peer se fait depuis le nouvel interface d'administration.


Interface d'administration entièrement redessinée

L'ancienne interface admin a été remplacée par une UI complète en Jinja2 :

  • Dashboard — Vue d'ensemble de l'instance
  • Clés API — Gestion des utilisateurs et de leurs clés d'accès
  • Clés Peer — Gestion des autorisations inter-instances
  • Mappings metadata — Correspondances IMDb/TMDB manuelles (pour corriger des métadonnées incorrectes)
  • Recherche par hash — Vérification directe de disponibilité debrid
  • Recherche TMDB — Recherche et visualisation de métadonnées
  • Maintenance — Actions de maintenance et nettoyage
  • Configuration — Page de config avec encodage en temps réel

Page d'inscription publique

Une page /register permet aux utilisateurs de générer eux-mêmes leur clé API, sans intervention de l'administrateur.

  • Désactivée par défaut
  • Rate limiting Redis intégré contre les abus
  • Templates Jinja2 (page active + page désactivée)
ALLOW_PUBLIC_KEY_REGISTRATION=true

Sécurité

Chiffrement Fernet des tokens de configuration Les tokens de configuration encodés dans les URLs d'addon peuvent désormais être chiffrés avec une clé Fernet. Sans cette clé, le fallback est l'encodage Base64 (comportement V2).

CONFIG_SECRET_KEY=<clé Fernet générée via Fernet.generate_key()>

⚠️ Changer cette clé invalide toutes les URLs d'addon existantes.

Protection CSRF L'endpoint POST /api/config/encode est protégé contre les attaques CSRF.

Rate limiting sur la lecture Les requêtes de playback sont limitées par utilisateur pour prévenir les abus :

PLAYBACK_LIMIT_REQUESTS=60   # requêtes max par fenêtre (défaut : 60)
PLAYBACK_LIMIT_SECONDS=60    # taille de la fenêtre en secondes (défaut : 60)

Clés de cache hashées Les clés de cache Redis pour le playback sont désormais hashées (plus d'informations sensibles en clair dans Redis).

Avertissement session key Au démarrage, un warning est émis si SESSION_KEY utilise la valeur par défaut non sécurisée. Pensez à définir une valeur unique :

SESSION_KEY=<chaîne aléatoire de 64 caractères>

Redaction des secrets dans les logs Tous les tokens, clés API et secrets sont automatiquement masqués dans les logs.


Contrôle des téléchargements debrid

Nouvelle variable pour les instances publiques — masque les streams non-cachés (téléchargements debrid directs) dans les résultats Stremio :

ALLOW_DEBRID_DOWNLOAD=false

Par défaut à true (comportement V2 conservé).


StremThru SDK

L'intégration StremThru repose désormais sur le SDK officiel. L'ancien fichier stremthru.py custom a été remplacé. L'URL par défaut est https://stremthru.13377001.xyz (configurable via STREMTHRU_URL).


Recherche & Filtrage

  • Phases de recherche configurables par indexeur (primaire, secondaire, fallback)
  • Optimisation RealDebrid dans le flux de recherche
  • Préférence TorBox pour les indexeurs français (configurable)
  • Amélioration du service C411 — meilleure gestion des logs et des requêtes
  • Refactoring asyncio avec asyncio.to_thread pour les opérations de filtrage (non-bloquant)
  • Parallelisation de certaines opérations de cache et de recherche

Logs & Observabilité

  • Nouveau niveau TRACE pour les logs très verbeux (en dessous de DEBUG)
  • Logs info dégradés en debug/trace — moins de bruit en production
  • Meilleure redaction des secrets dans tous les appels sortants

TMDB

Nouvelle variable pour forcer la langue des métadonnées TMDB :

TMDB_LANGUAGE=fr-FR   # défaut

Récapitulatif des nouvelles variables d'environnement

Variable Défaut Description
CONFIG_SECRET_KEY None Clé Fernet pour chiffrer les tokens de config dans les URLs
ALLOW_DEBRID_DOWNLOAD true false pour masquer les streams non-cachés (instances publiques)
ALLOW_PUBLIC_KEY_REGISTRATION false Activer la page d'inscription publique /register
PLAYBACK_LIMIT_REQUESTS 60 Requêtes max par utilisateur par fenêtre de rate limit
PLAYBACK_LIMIT_SECONDS 60 Taille de la fenêtre de rate limit (secondes)
TMDB_LANGUAGE fr-FR Langue pour les appels TMDB
PEER_STREAMFUSION_URL "" URL de l'instance peer pour le partage de cache
PEER_STREAMFUSION_KEY_ID "" Key ID émise par l'instance peer
PEER_STREAMFUSION_SECRET "" Secret 256-bit hex de l'instance peer
GENERATIONFREE_API_KEY None Clé API Generation Free
GENERATIONFREE_PASSKEY None Passkey Generation Free
ABN_API_KEY None Clé API ABN (Abnormal)
ABN_PASSKEY None Passkey ABN
G3MINI_API_KEY None Clé API G3MINI (Gemini Tracker)
G3MINI_PASSKEY None Passkey G3MINI
THEOLDSCHOOL_API_KEY None Clé API TheOldSchool
THEOLDSCHOOL_PASSKEY None Passkey TheOldSchool

Contributeurs

Un grand merci à toutes les personnes qui ont rendu cette version possible :

  • LimeDrive — Créateur du projet et développeur principal de cette V3 : architecture, sécurité, infrastructure debrid, interface admin, indexeurs, performance
  • HyPnoTiiK — Refonte de la page d'inscription (/register) et redesign de la page de configuration admin
  • laster13 — Améliorations de la recherche, vérification de cache AllDebrid, intégrations debrid et corrections diverses

Merci également à Telkaoss et Elfbot (ElfHosted) pour leurs contributions passées qui ont servi de base à cette version.

Et bien sûr, merci à toute la communauté pour les retours, les tests et le soutien.


StreamFusion est un projet open source à but éducatif, distribué sous licence MIT.