--- title: TubeSync created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, downloads, youtube, media-server, sync, go, yt-dlp] confidence: high contested: false sources: [https://selfh.st/apps/?tag=downloads, https://github.com/meeb/tubesync] --- # 📺 TubeSync > Synchronise vos chaînes et playlists YouTube vers un répertoire local et **met à jour automatiquement votre serveur média** (Jellyfin, Plex, Emby) une fois les médias téléchargés. Le "Plex AutoPilot" des chaînes YouTube. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | [https://tubesync.com](https://tubesync.com) | | **GitHub** | [https://github.com/meeb/tubesync](https://github.com/meeb/tubesync) | | **License** | AGPL-3.0 | | **Langage** | Python + Go (worker) | | **Étoiles** | 166 ⭐ | | **Dernière MAJ** | 2025-12 | | **Catégorie** | [[cat-downloads\|Downloads]] | ## Description **TubeSync** répond à une question simple : "comment suivre 30 chaînes YouTube sans avoir à lancer manuellement `yt-dlp` chaque semaine ?". C'est un **agrégateur de chaînes YouTube** qui ajoute des sources (chaînes, playlists, chaînes d'utilisateurs), les **scrute périodiquement**, et **télécharge automatiquement** les nouvelles vidéos dans une arborescence propre, prête à être **scannée par Jellyfin/Plex/Emby** comme n'importe quelle médiathèque locale. Chaque **source** a sa propre configuration : dossier de destination, format (`video` / `audio` / `custom`), résolution max, fréquence de synchronisation, "days to keep" (rotation), et tâches post-téléchargement (déplacer, hardlink, déclencher un webhook). TubeSync supporte aussi les **cookies YouTube** montées en volume pour contourner les limitations de rate-limit imposées aux non-connectés, ainsi que **SponsorBlock** et **metadata JSON** à côté de chaque fichier. Côté architecture : back-end **Django 4 (Python)**, worker **Go** pour le téléchargement via `yt-dlp` (le plus rapide à cet usage), base **SQLite** par défaut (PostgreSQL possible), interface web soignée exposant un dashboard temps réel des tâches. Le tout est publié en image **Docker** unique (multi-stage) et tourne sur un Raspberry Pi 4 sans sourciller pour quelques dizaines de chaînes. **Points forts** : UI claire, granularité par source, support natif de Jellyfin/Plex, AGPL-3.0. **Points faibles** : pas d'application mobile, mono-instance (pas de multi-utilisateurs natif), scraping YouTube de plus en plus fragile (rotations de tokens, parfois il faut régénérer les cookies). ## Installation ### Via Docker (recommandé) ```yaml # docker-compose.yml services: tubesync: image: ghcr.io/meeb/tubesync:latest container_name: tubesync restart: unless-stopped environment: - TZ=Europe/Paris - PUID=1000 - PGID=1000 - SECRET_KEY=change-me-long-random-string - ALLOWED_HOSTS=* - DB_ENGINE=sqlite volumes: - ./config:/app/config - ./downloads:/downloads # bibliothèque YouTube - ./cache:/app/cache ports: - "4848:4848" ``` ### Installation manuelle Python 3.10+, `yt-dlp` récent, `ffmpeg`. Cloner le dépôt, `pip install -r requirements.txt`, lancer `python src/manage.py migrate` puis `gunicorn` ou `daphne` pour la partie ASGI. Le worker Go se compile avec `go build ./cmd/worker`. ## Configuration 1. Accéder à `http://localhost:4848`, créer le compte admin au premier lancement. 2. **Ajouter une source** : URL de chaîne ou playlist YouTube → TubeSync résout la liste des vidéos existantes. 3. **Choisir le type de média** : `video` (par défaut, format MKV/MP4), `audio` (extraction en MP3/Opus), ou `custom` (arguments `yt-dlp` bruts). 4. **Cookies YouTube** (recommandé) : exporter `cookies.txt` depuis un navigateur connecté, monter dans `./config/cookies.txt` → contourne le rate-limit "Sign in to confirm you're not a bot". 5. **Webhook Jellyfin/Plex** : URL `http://jellyfin:8096/Library/Refresh` → déclenchée après chaque import. 6. **Days to keep** : supprime automatiquement les vidéos > X jours (utile pour les chaînes d'actu). 7. **Reverse proxy** : `tubesync.example.com` via Traefik/Caddy, idéalement derrière Authelia (l'UI permet de déclencher des downloads manuels). ## Alternatives ### Open source - [[app-ytdl-sub]] — basé sur `yt-dlp` + config YAML, plus orienté "subscriptions" - [[app-pinchflat]] — interface moderne, conçu pour le téléchargement YouTube à la demande - [[app-hometube]] — pont YouTube ↔ Jellyfin avec player intégré - [[app-metube]] — clone léger de NewPipe côté serveur (UI web pour `yt-dlp`) - **ytdl-material** — fork UI Material, aujourd'hui peu maintenu - **youtube-dl-server** — wrapper minimal, abandonné ### Propriétaires - **Plex Watch Later** — fermé, lié à un compte Plex - **Jellyfin YouTube Plugin** — recherche/lecture, **pas de download persistant** - **iCloud + YouTube Premium** — hors sujet mais illustre le "synchro cloud propriétaire" ## Sécurité - ⚠️ **Cookies YouTube** : critique,泄露 = vol de compte Google. Monter en **read-only**, permissions 0400. - ⚠️ **SECRET_KEY Django** : régénérer absolument avant l'exposition Internet. - ✅ **HTTPS obligatoire** via Traefik/Caddy + HSTS. - ✅ **Authentification** : compte unique + SSO (Authelia/Authentik) recommandé. - ⚠️ **Rate-limit YouTube** : espacer les sources, sinon YouTube bloque l'IP pendant 24h. - ⚠️ **Espace disque** : 1 chaîne très active (Veritasium, etc.) = 1 To/an. Surveiller. - ⚠️ **Sauvegardes** : `./config` contient la DB et les sources, à inclure dans le backup. ## Ressources - [Site officiel](https://tubesync.com) - [Documentation](https://github.com/meeb/tubesync#readme) - [Wiki](https://github.com/meeb/tubesync/wiki) - [selfh.st — Downloads](https://selfh.st/apps/?tag=downloads) ## Pages Liées - [[cat-downloads]] — Catégorie parente - [[app-pinchflat]] — Concurrent YouTube downloader - [[app-ytdl-sub]] — Concurrent orienté subscriptions - [[app-jellyfin]] — Media server cible typique - [[app-plex]] — Media server cible alternatif - [[recettes-docker-compose]] — Templates Docker - [[securisation-home-lab]] — Bonnes pratiques