Vue normale

Reçu aujourd’hui — 27 août 2025

ListSync : un bel outil avec WebUI pour gérer et connecter ses listes avec Overseerr/Jellyseerr

Par :Aerya
27 août 2025 à 12:56

Quelles listes ? Quasi tout ce qui existe : IMDb, Trakt, MDBList, Letterboxd, Steven Lu


ListSync de Woahai321 permet de gérer de manière simple, complète et franchement belle, des listes de contenus multimédia à télécharger. Listes synchronisées avec Overseerr et/ou Jellyseerr pour automatiser les demandes et téléchargements via les *arrs.

L’application est développement très actif.

🔄 Synchronisation automatique

🎬 Prise en charge de plusieurs plateformes de watchlist

🖥 Compatible avec Overseerr et Jellyseerr

⚡ Installation simplifiée avec Docker

📊 Suivi en temps réel – Barres de progression et mises à jour instantanées

📋 Gestion intuitive des listes – Ajoutez, modifiez et organisez vos listes facilement

📈 Analyses complètes – Taux de réussite, indicateurs de performance et données historiques

⚙ Configuration via le web – Gérez tous les paramètres depuis le tableau de bord

🎨 Interface moderne et responsive – Parfaitement adaptée aux ordinateurs, tablettes et mobiles

🌙 Thèmes clair/sombre – Détection automatique des préférences système

Pour cet article, j’installe une instance locale. Mais selon les besoins, le compose et le .env ne sont pas les mêmes. Pour une utilisation/configuration plus poussée, je vous invite à suivre la documentation.

Je place le docker-compose.yml et le .env dans /home/aerya/docker/list-sync. Je n’indique aucune liste dans l’environnement, je ne me servirai que de l’interface Web.

J’utilise la version :main qui est la stable. J’ai ajouté la MàJ automatique du docker via un label Watchtower comme à mon habitude. Et j’ai mis en dur la timzeone mais ça marche aussi via le .env

Le compose

services:
  listsync-full:
    image: ghcr.io/woahai321/list-sync:main
    container_name: listsync
    ports:
      # Frontend (Next.js Dashboard) 
      - "3222:3222"
      # Backend API (FastAPI)
      - "4222:4222"
    environment:
      # Timezone Configuration (set to Europe/London for BST/GMT, change as needed)
      - TZ=Europe/Paris
      
      # Overseerr Configuration 
      - OVERSEERR_URL=${OVERSEERR_URL}
      - OVERSEERR_API_KEY=${OVERSEERR_API_KEY}
      - OVERSEERR_USER_ID=${OVERSEERR_USER_ID:-1}
      - SYNC_INTERVAL=${SYNC_INTERVAL:-24}
      - AUTOMATED_MODE=true
      - OVERSEERR_4K=${OVERSEERR_4K:-false}
      
      # List Configuration (comma-separated)
      - IMDB_LISTS=${IMDB_LISTS}
      - TRAKT_LISTS=${TRAKT_LISTS}
      - LETTERBOXD_LISTS=${LETTERBOXD_LISTS}
      - MDBLIST_LISTS=${MDBLIST_LISTS}
      - STEVENLU_LISTS=${STEVENLU_LISTS}
      - TRAKT_SPECIAL_LISTS=${TRAKT_SPECIAL_LISTS}
      - TRAKT_SPECIAL_ITEMS_LIMIT=${TRAKT_SPECIAL_ITEMS_LIMIT}      

      # Optional Discord webhook
      #- DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL}
      
      # Internal API URL for frontend
      - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL:-http://0.0.0.0:4222/api}
      
      # Docker-specific settings
      - RUNNING_IN_DOCKER=true
      - NO_SANDBOX=1
      - DISPLAY=:99
    volumes:
      # Persist data directory
      - /home/aerya/docker/list-sync/data:/usr/src/app/data
      # Mount environment file
      - /home/aerya/docker/list-sync/.env:/usr/src/app/.env
      # Optional: Mount logs for debugging
      - /home/aerya/docker/list-sync/logs:/var/log/supervisor
    restart: always
    labels:
      - com.centurylinklabs.watchtower.enable=true
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4222/api/system/health", "&&", "curl", "-f", "http://localhost:3222"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s
    # Note: Complete ListSync application with:
    # - Core sync service (python -m list_sync)
    # - FastAPI backend (port 4222)
    # - Next.js frontend (port 3222)
    # All managed by supervisor for reliability 


Et le .env avec les variables. Donc me concernant uniquement l’URL d’Overseerr et ma clé API. Je ferai le reste depuis la WebUI.

#=======================================================================
# ListSync Full Local Deployment Environment Configuration
# This file contains all variables needed for complete local deployment
# Copy this to .env and configure your values
#=======================================================================

# === Core Required Configuration ===
# Your Overseerr/Jellyseerr API key (REQUIRED)
OVERSEERR_API_KEY=xxxMQ==

# Your Overseerr/Jellyseerr URL (REQUIRED)
OVERSEERR_URL=https://demande.domain.tld

# === Optional Discord Notifications ===
# Discord webhook URL for notifications (leave blank to disable)
DISCORD_WEBHOOK_URL=

# Timezone (set to your local timezone)
TZ=UTC+2

#=======================================================================

# === Local Development Domains ===
# Frontend domain (Next.js Dashboard) 
FRONTEND_DOMAIN=http://localhost:3222
# Backend API domain (FastAPI Server)
BACKEND_DOMAIN=http://localhost:4222

# === API Configuration ===
# This will be used by the frontend to call the API
NEXT_PUBLIC_API_URL=http://localhost:4222/api

# === CORS Configuration ===
# Allow frontend domain to access backend API
CORS_ALLOWED_ORIGINS=http://localhost:3222,http://0.0.0.0:3222,http://127.0.0.1:3222

#=======================================================================

# === List Configuration ===
# Configure which lists to sync (comma-separated)

# IMDb Lists (examples: "top", "popular", or specific list IDs)
IMDB_LISTS=

# Trakt Lists (specific list IDs)
TRAKT_LISTS=

# Trakt Special Lists (trending, collected, watched)
TRAKT_SPECIAL_LISTS=
TRAKT_SPECIAL_ITEMS_LIMIT=20

# Letterboxd Lists
LETTERBOXD_LISTS=

# MDBList Lists
MDBLIST_LISTS=

# Steven Lu Lists
STEVENLU_LISTS=

# === Sync Configuration ===
# User ID in Overseerr (usually 1 for admin)
OVERSEERR_USER_ID=1

# Sync interval in hours (24 = once per day)
SYNC_INTERVAL=24

# Enable automated mode (true/false)
AUTOMATED_MODE=true

# Enable 4K requests (true/false)
OVERSEERR_4K=false

#=======================================================================
# NOTE: This is the FULL LOCAL DEPLOYMENT configuration
# - Web UI will be available at http://localhost:3222
# - API server will run at http://localhost:4222
# - Core sync functionality will run automatically
# - All services managed by Docker Compose
#======================================================================= 

listsync2

Les options sont sommaires mais suffisantes

listsync3

Je peux ajouter une liste de test. Attention, les listes peuvent être pratiques mais risquent également d’ajouter un paquet de fichiers en téléchargement d’un coup voire lors d’une mise à jour (toutes les 24h ici).
Je teste ça avec Decypharr et le cache d’AllDebrid donc je ne crains rien (hormis indexer des trucs qui ne m’intéressent pas plus que ça) mais il faut faire attention si on télécharge réellement des .torrents, encore plus sur des trackers privés. Idem avec des indexeurs Usenet où on est parfois limité en API hit ou téléchargement, c’est un coup à tuer le quota mensuel en 3 minutes.

listsync13

J’utilise une top liste du super MDBList.com. Une petite « liste « Top Movies of the week » de 10 items pour tester.

listsync4

Et je l’exécute maintenant, je vais attendre 24h pour terminer ce tuto

listsync7

Et là… entre l’ajout à Overseerr, l’envoie à Radarr, la rechercher sur Prowlarr, le DL simulé par Decypharr (donc la recherche dans le cache d’AllDebrid), la validation dans Radarr, l’ajout dans Plex et la mise à jour des jaquettes par Kometa, ça a pris environ 3 minutes. LA VACHE !
J’en avais déjà certains, quand même.

listsync6
listsync8
listsync9
listsync10

Oui. Alors là on visualise bien pourquoi je ne suis pas fan des listes « des autres » pour ma consommation personnelle. Je vais clairement virer Dragons, Elio, KPop et Bad Guys… Chacun ses goûts.
En revanche, pour partager ça avec d’autres, c’est pratique de prendre des listes Netflix, Disney, Apple, HBO etc, surtout avec des jaquettes et collections par Kometa. Mais je ne m’aventure pas sur ce terrain là, mon plaisir est de découvrir, tester et partager des « retex ».

listsync11

De retour sur SyncList, on peut visualiser l’état des synchronisations et les déclencher manuellement (global ici ou par liste sur l’onglet Lists)

listsync14

Et on profite de quelques stats

listsync15

Un bel outil pour qui aime les listes.

Loading

❌