Installer Jellyseer avec Docker
Tutoriel d'installation de Jellyseer sous Docker, une application qui va vous permettre de gérer les requêtes de contenus des utilisateurs de votre instance Plex ou Jellyfin.

Au sommaire :
- 1-Qu'est-ce que Jellyseerr ?
- 2-Prérequis
- 3-Déploiement
- 4-Configuration
- 5-Exposer son instance avec Traefik
1-Qu'est-ce que Jellyseerr ?
Jellyseerr est un fork de Overseer qui va permettre aux utilisateurs de votre instance (Plex, Emby et Jellyfin) d'effectuer des requêtes de films et séries.
Pour ma part, avec des collègues on s'est dis que ce serait cool de récupérer la plupart des films cultes (et aussi des nanars) des années 80/90 donc avec Jellyseerr, ils pourront chercher les films (ou séries) et m'envoyer des requêtes de contenus à télécharger.
En acceptant une requête, Jellyseerr va ajouter le film ou la série à Radarr/Sonarr et télécharger automatiquement le contenu souhaité.
2-Prérequis
Pour déployer Jellyseerr, vous devez disposer d'une machine virtuelle fonctionnant sous Ubuntu Server.
Création de la machine virtuelle :
Virtualisation avec Proxmox VE : Si vous partez de zéro, suivez mon guide détaillé pour virtualiser Ubuntu sur Proxmox VE avec des réglages optimisés.

Automatisation avec Cloud-Init : Pour gagner du temps lors de la configuration, utilisez un template Cloud-Init. Cela permet d'automatiser et de simplifier l'initialisation de vos machines virtuelles. Retrouvez les instructions dans ce guide.

Installation des outils nécessaires :
Docker et Docker Compose : Une fois la machine virtuelle prête, installez Docker et Docker Compose, indispensables pour gérer et orchestrer vos conteneurs. Ce guide vous accompagnera dans l'installation.

Exposition de l'application :
Proxy inverse avec Traefik : Pour exposer vos applications sur Internet de manière sécurisée, configurez un proxy inverse. Traefik est une solution recommandée. Suivez ce guide pour l'installation.

Instance Plex, Jellyfin, Radarr ou Sonarr nécessaire
Enfin, pour que Jellyseer fonctionne correctement, vous devrez disposer d'une instance de Plex, Jellyfin, Radarr ou Sonarr. Nous recommandons l’utilisation de Jellyfin pour sa gratuité et son caractère open source. Vous trouverez ici les guides pour installer ces outils sous Docker.



3-Déploiement
Commencez par créer un dossier "docker" à la racine du dossier utilisateur"
mkdir -p ~/docker
Créez un fichier nommé "compose.yml"
touch ~/docker/compose.yml
Ouvrez le fichier "compose.yml" et copiez cette configuration.
networks:
# Docker Bridge Network
default:
driver: bridge
services:
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
volumes:
- ${APPDATA}/jellyseerr:/app/config
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
ports:
- 5055:5055
restart: unless-stopped
- services : c'est là qu'il faudra ajouter les configuration de vos conteneurs
- image : nom du registry suivi du nom de l'application et du tag "latest" (lscr.io/linuxserver/jellyseerr)
- container_name : le nom du conteneur, sinon Docker en choisira un de manière aléatoire
- environment : indiquez les variables de base des applications Linuxserver.io comme le PUID (utilisateur), le PGID (groupe) et la TZ (timezone)
- volumes : variable ${APPDATA) (/home/user_name/appdata) suivi du nom de l'application (/app_name)
- ports : le port d'écoute pour accéder à l'interface web
- restart : unless-stopped par défaut. Le daemon de Docker redémarrera automatiquement le conteneur sauf si vous l’arrêtez, il faudra le démarrer manuellement
Enregistrez le fichier "compose.yml" et déployez le conteneur.
docker compose up -d
4-Configuration
Accédez à l'interface web puis choisissez la langue de votre choix en cliquant sur l'icône en haut à droite.

Authentifiez-vous en cliquant en cliquant sur "Sign In" si vous avez une instance Plex (Plex centralise tout les identifiants).

Si vous avez Emby ou Jellyfin, indiquez les informations suivantes :
- Jellyfin URL : l'adresse web de votre instance Emby ou Jellyfin
- Email Address : votre adresse mail
- Username : l'identifiant de votre compte Emby ou Jellyfin
- Password : Le mot de passe de votre compte Emby ou Jellyfin


Cliquez sur "Sync Librairies" et activez celles que vous souhaitez. Sur mon instance j'en est 3 :
- Documentaires
- Films
- Collection (regroupement des films d'une même série)

Cliquez sur "Start Scan" vu que c'est la première fois que vous lancez Jellyseerr.
Normalement, il ne sera exécuté qu'une fois toutes les 24 heures. Jellyseerr vérifiera plus agressivement les ajouts récents de votre serveur Jellyfin. Si c'est la première fois que vous configurez Jellyseerr, un scan manuel complet de la bibliothèque est recommandé !


Cliquez sur "Continue".

Il va falloir configurer Radarr et Sonarr.

Ajoutez les informations suivantes :
- Server Name : mettez respectivement Radarr et Sonarr
- Server Name : l'adresse IP locale de votre machine virtuelle
- API Key : la clé API que vous trouverez dans Settings/General/API Key

Cliquez sur "Test" et vous devriez avoir ce message.

Pour finaliser, indiquez les informations suivantes :
- Quality Profile : HD-1080p
- Root Folder : /movies pour Radarr et /tv pour Sonarr
- Language Profile (uniquement Sonarr) : mettez "Deprecated" (option inutile)

N'oubliez pas de cocher "Default" puis cliquez sur "Finish Setup".

Tout en haut apparaîtront les contenus récemment ajoutés qui se trouvent sur votre instance Jellyfin (uniquement visible de l'administrateur) puis les contenus tendances, populaires, etc.

Option sympathique, si je clique sur un des films, j'ai juste à cliquer sur "Play on jellyfin" pour le visionner sur Jellyfin.

Dans "Users", vous pouvez créer des utilisateurs locaux ou carrément importer les utilisateurs de votre instance Jellyfin.

Ensuite, l'utilisateur devra choisir un film ou une série (L'impasse, film culte des années 90 que je vous recommande VIVEMENT).

Il doit cliquer sur "Request".

Puis il pourra choisir le profil (HD-1080p par défaut) puis en cliquant sur "Request", le film sera ajouté immédiatement sur Radarr.
Pour l'exemple je vais effectuer la requête au nom de l'utilisateur, ce qui va automatiquement ajouter le film sur Radarr en mode "Monitoring" (téléchargement automatique).


Je retrouve le film dans les requêtes.

Et également sur Radarr où ce dernier va le télécharger automatiquement.

Par contre si c'est l'utilisateur qui en fait directement la demande, je le retrouve en liste d'approbation et personnellement ça m'arrange car j'ai juste besoin de savoir quels sont les contenus demandés par les utilisateurs, pour le reste je me débrouille.

Dans Settings/Services, on retrouve bien les deux instances Radarr et Sonarr (vous pouvez en ajouter d'autres).

Dans "Settings/Jellyfin", indiquez les informations suivantes :
- Internal URL : l'adresse IP locale de votre instance suivi du numéro de port
- External URL : l'adresse web de votre instance

Dans "Settings/Notifications", vous pouvez configurer le protocole SMTP.

Dans "Settings/Users", vous pouvez modifiez les droits des utilisateurs (la configuration par défaut me va très bien).
J'ai juste coché "Recently Added" pour que lorsque des nouveaux contenus apparaissent, les utilisateurs n'auront qu'à cliquer pour visualiser sur Jellyfin.

Option intéressante dans dans "Setting/General Settings", vous pouvez sélectionner la langue et la région de vos contenus.

5-Exposer son instance avec Traefik
networks:
# default network
default:
driver: bridge
# Traefik network
web:
name: web
driver: bridge
services:
traefik:
container_name: traefik
image: traefik:v2
restart: always
networks:
- web
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${APPDATA}/traefik/traefik.yml:/traefik.yml
- ${APPDATA}/traefik/dynamic.yml:/dynamic.yml
- ${APPDATA}/traefik/letsencrypt/acme.json:/acme.json
- ${APPDATA}/traefik/shared:/shared
labels:
- traefik.enable=true
- traefik.http.routers.traefik.entrypoints=websecure
- traefik.http.routers.traefik.rule=Host(`traefik.<domain_name>`)
- traefik.http.routers.traefik.service=api@internal
- "traefik.http.routers.traefik.middlewares=middlewares-basic-auth@file"
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
volumes:
- ${APPDATA}/jellyseerr:/app/config
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
networks:
- web
# ports:
# - 5055:5055
restart: unless-stopped
labels:
- traefik.enable=true
- traefik.http.routers.jellyseerr.entrypoints=websecure
- traefik.http.routers.jellyseerr.rule=Host(`jellyseerr.<domain_name>`)
- traefik.http.routers.jellyseerr.service=jellyseerr-svc
- traefik.http.services.jellyseerr-svc.loadbalancer.server.port=5055
- traefik.http.routers.jellyseerr.tls.certresolver=letsencrypt