Aller au contenu

Peering inter-instances

Le peering permet à plusieurs instances Stream Fusion de partager leurs torrents privés de manière sécurisée et chiffrée. L'instance source exporte les torrents de sa base privée (PostgreSQL), et l'instance cible les insère dans sa base publique (Meilisearch) — enrichissant ainsi son catalogue pour tous ses utilisateurs sans compromettre la sécurité des données sources.


Concept

graph LR
 A["Instance A<br/>Cache: torrents FR"] <-->|" HMAC + Fernet"| B["Instance B<br/>Cache: torrents VO"]

 style A fill:#311b92,color:#fff
 style B fill:#1b5e20,color:#fff

Chaque instance peut à la fois exporter son cache (via une PeerKey) et importer le cache des autres (via une PeerInstance).


Modèle de données

PeerKey (authentification entrante)

Une PeerKey autorise une instance distante à interroger votre cache.

Propriété Description
key_id UUID unique identifiant la clé
secret Secret 256-bit hex (affiché une seule fois)
name Nom descriptif
is_active Si la clé est active
rate_limit Max requêtes par fenêtre
rate_window Durée de la fenêtre (s)
expires_at Date d'expiration (optionnelle)

PeerInstance (connexion sortante)

Une PeerInstance configure la connexion vers une instance distante.

Propriété Description
name Nom descriptif
url URL de l'instance distante
key_id UUID de la PeerKey distante
secret_encrypted Secret distant chiffré au repos (Fernet)
is_active Si la connexion est active
sync_enabled Si la sync automatique est activée
sync_cron Horaire de synchronisation

Flux de données

sequenceDiagram
 participant B as Instance B
 participant A as Instance A

 Note over B,A: 1. Admin B crée une PeerKey sur A
 Note over B,A: 2. Admin B configure une PeerInstance vers A

 loop Sync périodique (cron)
 B->>A: POST /api/peer/private/export<br/>HMAC-SHA256 signed
 A-->>B: Payload Fernet chiffré
 Note over B: Déchiffrement + indexation dans Meilisearch (base publique)<br/>hash_source="Peer - Nom"
 end

Avantages

  • Couverture étendue

    Les torrents d'une instance deviennent accessibles aux autres

  • Sécurité cryptée

    HMAC-SHA256 + Fernet (AES-128) + protection anti-rejeu

  • Sync incrémentale

    Seul le delta (nouveaux items) est transféré

  • Rate limiting

    Chaque clé a ses propres limites configurables

  • Bidirectionnel

    Chaque instance peut exporter et importer


Sections détaillées