# ============================================================================ # LooStream — configuration (copiez ce fichier en .env : cp .env.example .env) # ============================================================================ # Ces variables sont des VALEURS PAR DÉFAUT. Chaque utilisateur Stremio peut # fournir ses propres clés (TMDB, MediaFlow) dans la page /configure ; sa config # personnelle a alors priorité. Les définir ici rend l'addon fonctionnel dès # l'installation, sans que chacun ait à saisir quoi que ce soit. # # Chargé par docker-compose (env_file: .env). Après modif : docker compose up -d # ---------------------------------------------------------------------------- # --- ESSENTIEL -------------------------------------------------------------- # Clé API TMDB (v3). Sert à résoudre un IMDB/TMDB id → titre+année. # Gratuite : https://www.themoviedb.org/settings/api # Si vide, chaque utilisateur devra mettre la sienne dans /configure. TMDB_API_KEY= # Port d'écoute (host + conteneur). Défaut 7002. PORT=7002 # MODE : modes de livraison PROPOSÉS dans /configure (et autorisés). Liste # séparée par ; ou , parmi DIRECT, MFP, LOCAL. Vide = les trois. # - DIRECT : Stremio lit depuis les CDN, 0 bande passante serveur (le direct # est de toute façon TOUJOURS prioritaire ; le mode ne choisit que le repli # des flux non-directables : MFP / proxy local / rien pour DIRECT seul). # - MFP : repli via MediaFlow. LOCAL : repli via ce serveur. # Exemples : MODE=DIRECT (que le direct) ; MODE=DIRECT;MFP (pas de proxy local) ; # MODE=DIRECT;MFP;LOCAL (tous). Un config demandant un mode non autorisé est # ramené au 1er de la liste (le défaut de /configure = 1er élément). MODE= # --- PROXY (recommandé : MediaFlow) ----------------------------------------- # LooStream ne diffuse pas la vidéo lui-même : il passe par un proxy. # # Option A (recommandée) — MediaFlow. Deux sous-options : # # A1) Instance externe existante : mettez son URL publique + mot de passe. # # A2) MediaFlow BUNDLÉ (le plus simple) : lancez # docker compose --profile mediaflow up -d # Ça démarre un conteneur MediaFlow à côté de l'addon. Ensuite : # - reverse-proxy : mediaflow.votredomaine -> http://127.0.0.1:${MEDIAFLOW_PORT} # - MEDIAFLOW_URL = https://mediaflow.votredomaine (URL PUBLIQUE, requise # pour que les flux se lisent sur un client distant) # - MEDIAFLOW_PASSWORD = un secret au hasard (partagé avec le conteneur) # (Test 100% local sur la même machine : MEDIAFLOW_URL=http://127.0.0.1:${MEDIAFLOW_PORT}) MEDIAFLOW_URL= MEDIAFLOW_PASSWORD= # Port hôte du MediaFlow bundlé (profil mediaflow). Défaut 8888. MEDIAFLOW_PORT=8888 # Option B — proxy local intégré : mettez USE_LOCAL_PROXY=true et laissez les # deux champs MediaFlow vides. ⚠️ Toute la bande passante passe par CE serveur. USE_LOCAL_PROXY=false # --- WHITELIST DES DOMAINES ------------------------------------------------- # Le proxy n'autorise que les domaines listés dans config/allowed-domains.json # (protection anti-SSRF). Quand une source change de CDN, son domaine est bloqué # jusqu'à ce qu'on l'ajoute. # # AUTO_WHITELIST=true : apprend tout seul les CDN de vos sources, au lieu de les # bloquer. Alternative au bot Telegram pour les self-hosters. L'apprentissage se # fait UNIQUEMENT côté serveur, à deux endroits sûrs : # - à l'extraction (le domaine sort de notre pipeline, pas d'un client) ; # - dans les manifestes HLS déjà autorisés (hôtes de segments/variantes) — # couvre la rotation de CDN de segments. # Une requête /proxy?url=... d'un client n'ajoute JAMAIS de domaine : pas de # proxy ouvert. Le blocage des IP privées (127.x, 10.x, 169.254.x…) reste # toujours actif. Recommandé pour un self-host solo ; sur un hôte public exposé, # le bot Telegram donne plus de contrôle (validation manuelle). AUTO_WHITELIST=false # --- CLÉ D'ACCÈS (optionnel) ------------------------------------------------ # # ACCESS_KEY : protège tout l'addon (install + streaming + proxy) derrière une # clé partagée. Vide/absente = libre accès (comportement par défaut). # Renseignée = manifest/stream/subtitles renvoient 401 sans la bonne clé, et le # proxy/netmirror/moviebox/nabistream renvoient 403 sans ?k= valide. # La clé se renseigne dans configure.html (champ « Clé d'accès ») → elle entre # dans l'URL d'install. File-la à tes proches ; fuite = change cette valeur # (invalide toutes les URLs d'un coup). Les /api/* (bot Telegram) et /configure # restent ouverts — bloque /api en externe côté reverse-proxy si besoin. ACCESS_KEY= # Tableau de bord /admin (stats, santé des sources). Laissez vide pour le # désactiver (il renverra 503). Définissez les DEUX pour l'activer. ADMIN_USER= ADMIN_PASS= # Signe les cookies de session admin. Si vide, une clé aléatoire est générée à # chaque démarrage (les sessions admin sont alors invalidées à chaque restart). # Fixez une valeur pour des sessions persistantes : openssl rand -hex 32 SESSION_SECRET= # --- BOT TELEGRAM (optionnel, profil "telegram") ---------------------------- # Utilisé seulement avec : docker compose --profile telegram up -d TELEGRAM_BOT_TOKEN= TELEGRAM_CHAT_ID= # --- AVANCÉ (ne touchez pas sauf besoin précis) ----------------------------- # Domaines netfree de NetMirror — à surcharger seulement s'ils tournent et que # les valeurs par défaut ne répondent plus. # NETMIRROR_API_BASE=https://net52.cc # NETMIRROR_HLS_BASE=https://tv.imgcdn.kim # Chemins de fichiers (défauts OK avec le montage ./config du docker-compose). # CACHE_DB_PATH=/app/config/cache.db # DOMAINS_CONFIG=/app/config/allowed-domains.json # EXTRACTOR_DOMAINS_CONFIG=/app/config/extractor-domains.json # MOVIX_ENDPOINTS_CONFIG=/app/config/movix-endpoints.json # FRENCHSTREAM_ENDPOINTS_CONFIG=/app/config/frenchstream-endpoints.json