Installation

Choisissez le script correspondant à votre plateforme. Une installation native crée l'environnement Python dans .dailies-delivery/runtime/ et conserve configuration, données, médias, journaux et sauvegardes dans le même répertoire technique.

Fédération

Une instance peut fonctionner seule, comme membre d'une fédération, ou avec un Federation Master séparé. Les administrateurs peuvent aussi publier une Bibliothèque fédérée de ressources en lecture seule ; consultez le guide de la Fédération pour la configurer.

Docker

Les volumes persistants doivent être conservés hors de l'image.

📁 Données et bases de données

Federation Master (optionnel)

Le Federation Master est un plan de contrôle (identité, clés publiques, enrôlement, présence, révocation). Il ne transporte ni média ni donnée métier. Dailies Delivery fonctionne parfaitement sans Master, en mode autonome.

Deux façons de l'obtenir : intégré (mode « Master + Dailies », un seul serveur, recommandé pour la plupart des cas), ou en processus séparé (Docker ou manuel, pour un cluster à plusieurs Masters).

Mode intégré « Master + Dailies » (recommandé)

Depuis la version 1.1.6, choisir « Master + Dailies » dans Préférences › Fédération DailiesDelivery fait tourner le Master dans le même processus, sur le même port que Dailies Delivery — aucun conteneur, aucun service, aucun port supplémentaire à ouvrir.

  1. Préférences › Fédération DailiesDelivery, sélectionnez « Master + Dailies », enregistrez.
  2. Les jetons du Master sont générés automatiquement et stockés localement — vous n'avez rien à saisir.
  3. Redémarrez Dailies Delivery (le montage se fait au démarrage). Un bandeau dans le panneau l'indique tant que ce n'est pas fait.
  4. Après redémarrage : un bloc « 🧭 Master intégré » apparaît, avec son état (élection du leader en quelques secondes), un bouton « 🔑 Générer un code d'enrôlement », et un lien vers sa console (/federation-master/admin).

Un autre Dailies Delivery s'enrôle avec l'URL https://VOTRE-SERVEUR:9999/federation-master (le même port que Dailies, avec le suffixe /federation-master) et le code généré.

Former un cluster de plusieurs Masters intégrés (haute disponibilité)

Depuis la version 1.1.7, plusieurs Dailies Delivery en mode « Master + Dailies » peuvent se regrouper en un seul cluster Raft, sans jamais partager de secret à la main :

  1. Sur le premier serveur (déjà en mode Master + Dailies, déjà redémarré) : bouton « 🔗 Inviter un autre serveur » → un code apparaît (valable 10 minutes, usage unique).
  2. Sur un second serveur neuf (jamais activé en mode Master auparavant) : bouton « ➕ Rejoindre un cluster existant », renseignez l'URL du premier serveur (https://serveur-1:9999/federation-master), le code, et l'URL publique de ce second serveur.
  3. Redémarrez le second serveur : il rejoint comme Learner (non votant) et rattrape l'état existant par réplication réelle.
  4. Une fois rattrapé, promouvez-le en votant depuis la console du premier serveur (/federation-master/admin → section Cluster Raft → « Promouvoir un Learner », avec son identifiant affiché dans le panneau Fédération du second serveur).
  5. Pour retirer un membre plus tard : la liste des membres apparaît directement dans le bloc « Master intégré » de chaque serveur du cluster, avec un bouton « Retirer » sur chaque membre (sauf le leader lui-même, qui ne peut pas se retirer depuis son propre panneau — retirez-le depuis un AUTRE membre du cluster). Retirer un membre ne l'éteint pas : arrêtez-le séparément sur son propre serveur si besoin.
  6. Au-delà de 2 serveurs : le même code d'invitation peut servir à ajouter un 3e, 4e serveur, etc. Validé avec 4 serveurs réels (A, B, C, D) dans cette version.
  7. Garde-fou à connaître : une fois qu'un cluster atteint 3 votants ou plus, il ne peut plus jamais redescendre sous 3 votants en une seule opération de retrait — même si le membre à retirer est déjà hors service. C'est volontaire : un cluster à 2 votants n'offre aucune meilleure tolérance aux pannes qu'un seul serveur (perdre l'un des deux fait perdre le quorum). Pour retirer un membre mort d'un cluster à 3, ajoutez d'abord un remplaçant (il passe à 4), puis retirez le membre mort (retour à 3) — exactement le même geste qu'au-dessus.

Limite connue : un serveur qui a déjà son propre historique de Master local ne peut pas rejoindre un autre cluster (l'adhésion est refusée) — cela évite de mélanger deux historiques incompatibles. Changer de mode, ou rejoindre un cluster, nécessite toujours un redémarrage ; il n'y a pas de bascule à chaud.

Mode séparé (Docker ou manuel) — pour un cluster à plusieurs Masters

Utile si vous voulez plusieurs Masters répliqués (Raft) pour la tolérance de panne, indépendamment du cycle de vie d'un Dailies Delivery précis.

Où se trouve-t-il ?

Le point d'entrée du Master est la commande python -m videohub_federation.app (c'est aussi ce que lance son image Docker).

Démarrage pour un test (sans Docker)

Prérequis : Python 3.12 (la version utilisée par l’image Docker). Depuis le dossier federation-master (ou .dailies-delivery/master) :

Linux / macOS :

python3 -m venv venv && . venv/bin/activate
pip install -r requirements.txt
export VFP_DATA_DIR=./data
export VFP_MASTER_ADMIN_TOKEN="choisissez-un-long-jeton-admin"
export VFP_MASTER_CLUSTER_TOKEN="choisissez-un-long-jeton-cluster"
export VFP_RAFT_NODE_ID=master-1
export VFP_PORT=8443
python -m videohub_federation.app

Windows (PowerShell) :

py -m venv venv; .\venv\Scripts\Activate.ps1
pip install -r requirements.txt
$env:VFP_DATA_DIR=".\data"
$env:VFP_MASTER_ADMIN_TOKEN="choisissez-un-long-jeton-admin"
$env:VFP_MASTER_CLUSTER_TOKEN="choisissez-un-long-jeton-cluster"
$env:VFP_RAFT_NODE_ID="master-1"
$env:VFP_PORT="8443"
python -m videohub_federation.app

Vérifier qu'il fonctionne

curl http://127.0.0.1:8443/health

La réponse doit contenir "status":"ok" et, après quelques secondes, "role":"leader". La console d'administration est disponible sur http://ADRESSE:8443/admin (saisissez le jeton admin).

Enrôler un Dailies Delivery auprès du Master

  1. Créez un code d'enrôlement (valable 15 minutes) :
    curl -X POST -H "Authorization: Bearer VOTRE_JETON_ADMIN" \
      "http://ADRESSE:8443/api/v1/master/enrollment-codes?ttl_seconds=900"
  2. Dans Dailies Delivery, ouvrez le panneau « Fédération DailiesDelivery » des Préférences, renseignez l'URL du Master (http://ADRESSE:8443) et le code, puis cliquez sur « 🔑 Enrôler ».

Le Master (port 8443 par défaut) et un Dailies Delivery natif (port 9999) peuvent tourner sur la même machine sans conflit.

Démarrage avec Docker

Pour installer ensemble Dailies Delivery et le Federation Master à partir des images publiées, suivez le guide Docker illustré.

Dans federation-master/ : copiez .env.example en .env, remplacez les deux jetons CHANGE_ME_…, placez vos certificats dans ./tls/ (server.crt, server.key, ca.crt), puis lancez docker compose up -d --build. Le fichier fourni active par défaut TLS et le certificat client (mTLS) : sans ces certificats, le conteneur refuse de démarrer.

Vérification : le démarrage manuel ci-dessus a été exécuté et validé (état de santé, élection du leader, création d'un code d'enrôlement) sur Linux. Le démarrage Docker est décrit d'après les fichiers fournis ; la version Windows en PowerShell n'a pas été exécutée.

Certificat auto-signé (Master ou pair en HTTPS)

Si votre Master (ou un autre Dailies Delivery fédéré) utilise un certificat auto-signé, un Dailies Delivery qui essaie de le joindre en HTTPS refuse la connexion par défaut (erreur CERTIFICATE_VERIFY_FAILED) — c'est la vérification normale d'un certificat non reconnu, pas un dysfonctionnement.

Dans Préférences › Fédération DailiesDelivery, bloc « 🔒 Certificat auto-signé » : bouton « Récupérer le certificat » (le certificat présenté par l'URL du Master saisie juste au-dessus est téléchargé et son empreinte SHA-256 affichée — comparez-la à celle du serveur distant), puis « Faire confiance à ce certificat ». Cette confiance s'ajoute au magasin de certificats standard, elle ne le remplace pas : un Master avec un certificat public reconnu continue de fonctionner sans aucun réglage.

Accès réseau Windows

Le serveur natif écoute sur le réseau local sur le port 9999 et utilise HTTPS. Depuis une autre machine, utilisez https://ADRESSE-IP-DU-PC:9999/. L’installation Windows crée automatiquement une règle de pare-feu pour le port 9999 sur les profils Domaine et Privé.

Important : https://localhost:9999/ désigne uniquement le PC serveur. Pour un accès depuis Internet, il faut en plus une règle de pare-feu/routeur et une redirection de port (NAT). Le certificat auto-signé doit aussi être accepté ou remplacé par un certificat reconnu.