← English documentation · Français

Installation and Federation Master

Choose the installer for your platform. Native installs create the Python environment in .dailies-delivery/runtime/ and keep configuration, data, media, logs, and backups in the same technical directory.

Federation options

An instance can run independently, join a federation, or host a separate Federation Master. The Master is a control plane for identity, public keys, enrollment, presence, and revocation. It does not carry media or project data. Dailies Delivery works without a Master. Administrators can also publish a read-only Federated Library of shared resources; see the Federation guide for setup instructions.

The Master can run integrated with Dailies Delivery (“Master + Dailies”, recommended for most setups) or as a separate process for a multi-Master cluster.

Integrated “Master + Dailies” mode

In versions 1.1.6 and later, selecting “Master + Dailies” under Preferences → DailiesDelivery Federation runs the Master in the same process and on the same port as Dailies Delivery. No extra container, service, or port is required.

  1. In Preferences → DailiesDelivery Federation, select “Master + Dailies” and save.
  2. Master tokens are generated and stored locally; no manual token entry is needed.
  3. Restart Dailies Delivery. The mode activates at startup; the panel shows a notice until restart.
  4. After restart, the “🧭 Integrated Master” panel shows its status, an enrollment-code button, and a link to the console at /federation-master/admin.

Another Dailies Delivery instance enrolls using https://YOUR-SERVER:9999/federation-master and the generated code.

High availability with an integrated Raft cluster

Since version 1.1.7, multiple integrated Masters can join one Raft cluster without manually sharing secrets:

  1. On the first server, select “🔗 Invite another server”. The one-time code is valid for 10 minutes.
  2. On a fresh second server that has never hosted a Master, select “➕ Join an existing cluster”. Enter the first server URL (https://server-1:9999/federation-master), the code, and the second server's public URL.
  3. Restart the second server. It joins as a non-voting Learner and catches up through replication.
  4. After catch-up, promote it from the first server's console: /federation-master/admin → Raft Cluster → “Promote Learner”. Use the ID shown in the second server's Federation panel.
  5. To remove a member, use the “Remove” control in the Integrated Master panel. A leader cannot remove itself; remove it from another cluster member. Removing a member does not stop its service.
  6. The same invitation flow can add more members. The release documentation reports validation with four servers.
  7. Quorum safeguard: once a cluster reaches three or more voters, one removal cannot reduce it below three. To replace a failed member in a three-voter cluster, add a replacement first, then remove the failed member.

Known limitation: a server with its own existing local Master history cannot join another cluster. Changing modes or joining a cluster requires a restart; there is no hot switch.

Separate Master (Docker or manual)

This is useful for several replicated Masters (Raft) managed independently from any one Dailies Delivery instance. The source archive contains payload/federation-master/. Native installers copy it to .dailies-delivery/master/. Installers do not start this separate Master automatically.

Manual test setup (no Docker)

Requires Python 3.12. From the federation-master directory, create and activate a virtual environment, install requirements.txt, then set VFP_DATA_DIR=./data, non-empty VFP_MASTER_ADMIN_TOKEN and VFP_MASTER_CLUSTER_TOKEN, VFP_RAFT_NODE_ID=master-1, and VFP_PORT=8443. Start it with python -m videohub_federation.app.

Check status and enroll a server

Check http://127.0.0.1:8443/health. The response should report "status":"ok" and then "role":"leader". The admin console is at http://SERVER:8443/admin.

Create a 15-minute code with POST /api/v1/master/enrollment-codes?ttl_seconds=900 using an Authorization Bearer token. In Dailies Delivery, open Preferences → DailiesDelivery Federation, enter the Master URL and code, then select “🔑 Enroll”. The default Master port is 8443; a native Dailies Delivery instance can use port 9999 on the same host.

Docker images and certificates

To install Dailies Delivery and the Federation Master together from published images, use the illustrated Docker guide. For a separately managed multi-Master cluster, see payload/federation-master/PRODUCTION_DEPLOYMENT.md; that Compose setup uses TLS and mutual TLS for cluster traffic by default and requires certificates.

Self-signed HTTPS certificates are not trusted automatically. In Preferences → DailiesDelivery Federation, use “🔒 Self-signed certificate” → “Retrieve certificate”, verify the SHA-256 fingerprint with the remote administrator, then select “Trust this certificate”. Publicly trusted certificates need no extra setting.

Windows network access

The native server listens on port 9999 over HTTPS. From another machine, open https://SERVER-PC-IP:9999/. The Windows installer creates a firewall rule for port 9999 on Domain and Private profiles.

Note: https://localhost:9999/ refers only to the server PC. Internet access additionally requires firewall/router rules and port forwarding (NAT). Accept the self-signed certificate or replace it with a trusted certificate.

📁 Data and storage · Troubleshooting