Aller au contenu

Stack torrents (*arr)

Rôle

Téléchargement automatisé de films et séries en VOSTFR/VO. Jellyseerr sert d'interface de demande grand public.

Accès

LXC 109 — 192.168.1.60
Stack Docker Compose — /opt/torrents/docker-compose.yml

Services et ports

Service Port local URL publique Rôle
qBittorrent 8080 — Client torrent
Prowlarr 9696 — Agrégateur d'indexeurs
Sonarr 8989 — Gestion des séries
Radarr 7878 — Gestion des films
Bazarr 6767 — Sous-titres automatiques
Jellyseerr 5055 vod.2h15.fr Interface de demande
FlareSolverr 8191 — Bypass Cloudflare

Image Docker

Jellyseerr utilise l'image seerr/seerr:latest (projet renommé de fallenbagel/jellyseerr → seerr-team/seerr en 2025). Config dans /opt/torrents/config/jellyseerr/, propriétaire 1000:1000.

Clés API

Service Clé
Prowlarr e871a34f8cfd484fa43732313262827c
Sonarr 91708ec441a5437b8a6b4efbea6d7853
Radarr 2954ef32254242399df659a04711f567
Bazarr cecc8e001d35f19f7d0f87cdcccc8403
Jellyseerr MTc4MDI1MjgwODI2NDgyNzBmMzViLTVlYmItNDQ3Zi1hMzE2LWNhNjk4MzliZDBlMQ==

Indexeurs (Prowlarr)

ID Nom Type Notes
1 YTS Public Films HD
2 1337x Public Cloudflare → tag flaresolverr
3 The Pirate Bay Public Direct
4 EZTV Public Cloudflare → tag flaresolverr
5 C411 Privé FR apikey: d10f96e890ebfd0f2f9f4eee26722af354ebe7aea253b33e707ffc640427d4ac
6 LimeTorrents Public Direct
7 showRSS Public Direct
8 Nyaa Public Anime

FlareSolverr

FlareSolverr est configuré comme Indexer Proxy dans Prowlarr (Settings → Indexer Proxies). Il s'applique aux indexeurs via un système de tags : l'indexeur et le proxy doivent partager le même tag.

  • Tag utilisé : flaresolverr (ID 1)
  • Proxy : http://flaresolverr:8191/ (réseau Docker interne)
  • Indexeurs liés : 1337x, EZTV

Nouvel indexeur Cloudflare-protected

FlareSolverr ne s'applique pas automatiquement. Pour chaque nouvel indexeur bloqué par Cloudflare, assigner manuellement le tag flaresolverr dans Prowlarr UI → Indexeurs → éditer → champ Tags.

Dépannage si DOWN

Si 1337x ou EZTV repassent en échec :

# Vérifier que le tag est bien présent sur l'indexeur
pct exec 109 -- python3 -c "
import sqlite3, json
conn = sqlite3.connect('/opt/torrents/config/prowlarr/prowlarr.db')
for r in conn.execute('SELECT Id, Name, Tags FROM Indexers WHERE Id IN (2,4)').fetchall():
    print(r[0], r[1], 'tags:', r[2])
"

# Effacer le statut d'échec et redémarrer
pct exec 109 -- python3 -c "
import sqlite3
conn = sqlite3.connect('/opt/torrents/config/prowlarr/prowlarr.db')
conn.execute('DELETE FROM IndexerStatus WHERE ProviderId IN (2,4)')
conn.commit()
"
pct exec 109 -- docker restart prowlarr sonarr radarr

Profils qualité

Deux profils disponibles, utilisables au choix dans Jellyseerr lors d'une demande.

Profil ID Qualité Cutoff Langue préférée
VOSTFR / VO 7 720p → Bluray-2160p Bluray-2160p VOSTFR +1000, VO +100, VF -1000
VF 8 720p → Bluray-2160p Bluray-2160p VF +1000, MULTI +1000, fallback VO/VOSTFR
  • Remux-2160p désactivé dans les deux profils (fichiers 50-100 Go)
  • Upgrade activé : si une meilleure qualité est indexée plus tard, elle remplace le fichier existant

Custom Formats (ID identiques Radarr et Sonarr)

ID Nom Regex (Radarr) Regex (Sonarr)
1 VOSTFR VOSTFR (?i)VOST(FR)?\|SUBFRENCH
2 VO \bVO\b (?i)(^|[^A-Z])VO([^A-Z]|$)(?!STFR)
3 VF \bVF\b\|FRENCH\|\bMULTI\b (?i)(^|[^A-Z])VF([^A-Z]|$)\|\bVFF\b\|\bVFQ\b\|\bFRENCH\b\|\bMULTI\b

MULTI

MULTI dans le CF VF capture les releases bi-audio FR+EN (très courant sur les sites FR). Sans ce tag, ces releases scoreaient 0 dans le profil VF et pouvaient être ignorées.

Stockage

/mnt/ext/          (→ /dev/sdb2, partagé avec Jellyfin LXC 114)
  ├── Series/      (Sonarr)
  ├── Films/       (Radarr)
  ├── Perso/
  └── downloads/   (qBittorrent)
  • Import mode : HardLink (zéro copie entre downloads/ et Series/ ou Films/)
  • removeCompletedDownloads activé dans Sonarr + Radarr

Sous-titres (Bazarr)

  • Sonarr + Radarr connectés, only_monitored: true
  • Profil langues : FR + EN
  • Providers actifs (10) : gestdown, supersubtitles, embeddedsubtitles, podnapisi, subf2m, yifysubtitles, tvsubtitles, soustitreseu, subsynchro, subdl
  • opensubtitlescom retiré : nécessite un abonnement VIP pour un usage depuis Bazarr
  • subf2m : user-agent configuré dans config.yaml (requis, sinon throttlé 12h)
  • subdl : compte valouplop sur subdl.com, clé API dans config.yaml

Notifications

  • Sonarr et Radarr envoient une notification ntfy après chaque import
  • Le lien de clic ouvre directement l'app Jellyfin

Suppression de médias

Jellyseerr détecte les suppressions automatiquement via la connexion Jellyfin. Pour forcer une mise à jour immédiate dans Jellyseerr :

curl -X DELETE https://vod.2h15.fr/api/v1/media/<id> \
  -H "X-Api-Key: MTc4MDI1MjgwODI2NDgyNzBmMzViLTVlYmItNDQ3Zi1hMzE2LWNhNjk4MzliZDBlMQ=="