Files
2026-06-09 18:40:21 +02:00

6.1 KiB


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
GitHub https://github.com/meeb/tubesync
License AGPL-3.0
Langage Python + Go (worker)
Étoiles 166
Dernière MAJ 2025-12
Catégorie cat-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é)

# 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

Pages Liées