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¶
-
Setup bidirectionnel pas-à-pas
-
HMAC-SHA256, Fernet, domaines de dérivation
-
Guide complet pour les apps tierces avec exemples Python et cURL