Synchronisation de clients FreeTube

FreeTube est un client lourd pour accéder aux contenus de YouTube. La protection de la vie privée est un élément clé de la conception de FreeTube. Il permet de lire les vidéos sans la publicité, de gérer ses abonnements, etc.

Contraitement à YouTube, il n'est pas nécesssaire d'avoir un compte pour gérer ses abonnements. Toutes les données sont stockées localement dans des fichiers textes (profils et abonnements, listes de lecture, historique, etc.). Si vous utilisez plusieurs ordinateurs, la seule méthode supportée pour synchroniser les données est un export/import des fichiers depuis FreeTube. De mon coté, je ne trouve pas ça pratique et encore moins automatisable. En conséquence, on ne peut pas faire évoluer ces données depuis plusieurs ordinateurs facilement.

En attendant que l'équipe de FreeTube propose une solution, j'ai travaillé sur un outil qui essaye de résoudre le problème : FT-Sync. Il est écrit en GO sous licence AGPLv3.

FT-Sync logo

FT-Sync n'est pas maintenu par l'équipe de FreeTube. Ce projet est encore expérimental et des problèmes peuvent apparaître. Je ne pourrai pas être tenu comme responsable si vous perdez des données.

Ceci étant dit, n'hésitez pas à ouvrir un ticket si vous rencontrez des problèmes 🙂

Avant d'utiliser FT-Sync, faites une sauvegarde de vos données :

  • ~/.config/FreeTube/history.db
  • ~/.config/FreeTube/profiles.db
  • ~/.config/FreeTube/playlists.db

Quels sont les prérequis ?

FT-Sync implique que le serveur soit accessible par toutes les machines où tourne FreeTube, comme dans un réseau local, à travers un VPN ou sur Internet. Veillez cependant à sécuriser les accès en configurant un pare-feu si le serveur est exposé.

Comment ça fonctionne ?

Le rôle du serveur est de stocker l'historique, les playlists et les profils des instances de FreeTube (clients).

Après avoir démarré le serveur, chaque client doit initialiser ses données locales sur le serveur. Cette action ne doit être effectuée qu'une seule fois. Chaque fois que vous souhaitez utiliser FreeTube, vous devez d'abord récupérer les données depuis le serveur. Un watcher enverra les mises à jour au serveur lorsque votre historique, vos playlists ou vos profils sont mis à jour. Lorsque FreeTube est redémarré, l'historique, les playlists et les profils seront synchronisés.

sequenceDiagram
    participant Client
    participant Server

    Note over Client, Server: Only once
    Client->>+Server: Send initial history, playlists, profiles<br>ftsync-client init
    Server-->>-Client: Response OK/KO

    Note over Client, Server: Before launching FreeTube
    Client->>+Server: Pull update to date history, playlists, profiles<br>ftsync-client pull
    Server-->>-Client: Response datas
    Client->>+Client: Update databases

    Note over Client, Server: While FreeTube is running
    loop Watch local db updates<br>ftsync-client watch
        Client->>+Server: Send updated history, playlists, profiles
        Server-->>-Client: Response OK/KO
    end

Toute la procédure d'installation est décrite dans les sources du projet : 📗 Comment l'utiliser ?.

Dans les prochains changements, je souhaite permettre de démarrer le serveur via docker afin faciliter son déploiement. J'aimerais également réaliser des statistiques sur le contenu que je consomme via des métriques type Prometheus.

J'utilise FT-Sync depuis quelques jours maintenant et il fonctionne vraiment bien. J'ai maintenant les mêmes abonnements, les mêmes listes de lecture et le même historique quelque soit l'ordinateur que j'utilise (modulo un redémarrage). C'est vraiment agréable !

Si vous avez des remarques, des suggestions ou n'importe quoi d'autre à remonter, le projet est ouvert aux contributions sous toutes leurs formes 😉

Vus : 91
Publié par Simon Vieille : 144