Initial vault setup
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user