Ubuntu 20.04 – Installation de Radarr avec Docker et Traefik
Radarr est une application multi-plateforme dédiée aux utilisateurs BitTorrent et Usenet permettant de rechercher et d’automatiser le téléchargement de vos films préférées libres de droits.
Son interface web vous permet d’ajouter le film recherché en précisant la qualité et la langue souhaitées et Radarr recherchera celui-ci via vos indexers configurés. Si le film est trouvé, Radarr l’ajoutera automatiquement dans votre client BitTorrent (Transmission, Deluge, etc.) ou Usenet (SABnzbd, NZBGet, etc.).
Radarr est capable d’ajouter un téléchargement dès la sortie du film recherché grâce à son calendrier intégré. Il s’intègre aussi parfaitement avec Plex et Kodi (notifications, mise à jour des librairies et metadata).
Radarr sera accessible depuis l’extérieur via Traefik utilisé comme reverse proxy et sera sécurisé grâce à un certificat SSL/TLS délivré par Let’s Encrypt.
1 – Prérequis
- Vous devez disposer d’Ubuntu 20.04 en version Desktop, Server ou ARM (Raspberry Pi). Si vous disposez d’une version antérieure, vous pouvez mettre à jour votre système en suivant cette procédure.
- Votre utilisateur doit avoir accès à sudo.
-
Les paquets curl et software-properties-common doivent être installés sur votre système. Dans le doute, tapez la commande suivante :
sudo apt-get install -y curl software-properties-common
-
Vos dépôts APT doivent être à jour. Dans le doute, tapez la commande suivante :
sudo apt-get update
2 – Installation de Docker & Docker Compose
-
Installez Docker :
sudo apt-get install -y docker.io
-
Vérifiez que Docker est correctement installé avec la commande :
docker -v Docker version 19.03.8, build afacb8b7f0
La commande doit retourner la version installée de Docker.
Si vous êtes sous Ubuntu 20.04 Desktop / Server (versions classiques pour PC)
-
Téléchargez Docker Compose avec la commande suivante en modifiant la version si besoin avec la dernière release du repository officiel de Docker :
sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
-
Ajoutez les droits d'exécution sur le binaire de Docker Compose :
sudo chmod +x /usr/local/bin/docker-compose
-
Vérifiez l'installation de Docker Compose avec la commande :
docker-compose -v docker-compose version 1.27.4, build 8a1c60f6
Si l'installation s'est correctement effectuée, cette commande doit vous renvoyer la version de Docker Compose.
Si vous êtes sous Ubuntu 20.04 ARM (versions pour Raspberry Pi)
-
Installez les dépendances requises pour Docker Compose :
sudo apt install -y python3-pip libffi-dev
-
Installez Docker Compose :
sudo pip3 install docker-compose
-
Vérifiez l'installation de Docker Compose avec la commande :
docker-compose -v docker-compose version 1.27.4, build 8a1c60f6
Si l'installation s'est correctement effectuée, cette commande doit vous renvoyer la version de Docker Compose.
3 – Droits Unix : un utilisateur dédié radarr
Il est recommandé, pour des raisons de sécurité, de créer un utilisateur dédié à la gestion du volume Radarr et de ne pas le lancer sous votre super-utilisateur.
-
Créez un utilisateur radarr :
sudo adduser radarr
-
Ajoutez-le au groupe docker :
sudo adduser radarr docker
4 – Création du volume Radarr
-
Connectez-vous sous l’utilisateur radarr :
su radarr
-
Déplacez-vous dans le répertoire personnel de cet utilisateur :
cd
-
Créez le fichier /home/radarr/docker-compose.yml et modifiez les lignes en surbrillance en fonction de votre configuration :
version: '3.7' services: radarr: image: linuxserver/radarr:latest container_name: radarr restart: always ports: - 7878:7878 environment: - PUID=1001 - PGID=1001 - TZ=Europe/Paris volumes: - /home/radarr/config:/config - /home/radarr/downloads:/downloads - /home/radarr/movies:/movies
-
PUID et GUID : ces deux variables représentent respectivement l’identifiant et le groupe de votre utilisateur radarr. Ces valeurs peuvent être différentes d’un système à l’autre. Tapez la commande suivante pour obtenir le PUID et GUID de votre utilisateur radarr :
Dans cet exemple, le uid correspond au PUID et le gid correspond au PGID.id radarr uid=1001(radarr) gid=1001(radarr) groups=1001(radarr),999(docker)
- /home/radarr/config:/config : chemin absolu des répertoires partagés entre votre système et le container docker. La première partie /home/radarr/config (avant le séparateur « : ») représente le chemin où le fichier de configuration sera stocké sur votre système. Si vous choisissez un chemin autre que celui-ci, assurez-vous que l’utilisateur radarr ait les droits de lecture et d’écriture dans le répertoire spécifié. La deuxième partie /config représente le chemin du fichier de configuration à l’intérieur du container docker. Cette dernière ne doit pas être modifiée.
- /home/radarr/downloads:/downloads : même principe mais pour l’emplacement de vos fichiers téléchargés.
- /home/radarr/movies:/movies : même principe mais pour l’emplacement de vos films.
-
PUID et GUID : ces deux variables représentent respectivement l’identifiant et le groupe de votre utilisateur radarr. Ces valeurs peuvent être différentes d’un système à l’autre. Tapez la commande suivante pour obtenir le PUID et GUID de votre utilisateur radarr :
-
Démarrez le container radarr :
docker-compose up -d
-
Listez vos containers avec la commande :
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cea2005870b3 linuxserver/radarr:latest "/init" 42 seconds ago Up 42 seconds 0.0.0.0:7878->7878/tcp radarr
-
Revenez sous votre super utilisateur :
exit
Si vous êtes en local, vous pouvez désormais accéder à Radarr via http://localhost:7878.
5 – Accéder à Radarr depuis l’extérieur avec Traefik
Traefik est un reverse-proxy et un load-balancer moderne conçu (par un Français) pour faciliter le déploiement des microservices (Docker, Kubernetes, AWS, etc.). Traefik est extrêmement simple à configurer et gère automatiquement vos certificats délivrés par Let's Encrypt. Il les renouvelle 30 jours avant leurs expirations sans action de votre part. De plus, il est capable de charger vos containers dynamiquement sans interruption de service et dispose d'un dashboard affichant l'ensemble de vos routes configurées.
Si vous avez déjà un Traefik sous Docker, vous pouvez vous rendre directement à l'étape 5.4.5.1 - Création de l'utilisateur traefik
Si vous avez plusieurs containers ou si vous avez pour projet d'en ajouter par la suite, il est préférable d'isoler le container Traefik. Il est recommandé de ne pas le lancer sous votre super-utilisateur et de créer un utilisateur dédié.
-
Créez un utilisateur traefik :
sudo adduser traefik
-
Ajoutez-le au groupe docker :
sudo adduser traefik docker
5.2 - L'image et réseau Traefik
-
Connectez-vous sous l'utilisateur traefik :
su traefik
-
Déplacez-vous dans le répertoire personnel de cet utilisateur :
cd
-
Créez le réseau dédié à Traefik et à l'ensemble de vos containers :
docker network create traefik_network
-
Créez le fichier /home/traefik/docker-compose.yml en ajoutant le contenu suivant :
version: '3.7' services: traefik: image: "traefik:v2.2" container_name: "traefik" restart: unless-stopped networks: - traefik_network ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /home/traefik/traefik.toml:/traefik.toml:ro - /home/traefik/acme.json:/acme.json networks: traefik_network: external: true
- /var/run/docker.sock:/var/run/docker.sock:ro : précise le socket Unix de votre docker. Laissez cette valeur par défaut.
- /home/traefik/traefik.toml:/traefik.toml:ro : précise le chemin du fichier de configuration de Traefik. Nous le créerons à l'étape suivante.
- /home/traefik/acme.json:/acme.json : précise le chemin du fichier contenant les informations relatives à vos certificats.
- traefik_network : ici nous spécifions le réseau dédié à Traefik. Nous ajouterons aussi le container Radarr dans ce réseau par la suite.
5.3 - Configuration Traefik
Traefik peut être configuré de différentes manières, nous allons détailler ici, la configuration recommandée par Traefik, à savoir par un fichier statique au format TOML.
-
Traefik stocke les informations liées au certificat dans un fichier acme.json. Vous devez au préalable créer le fichier et lui attribuer un minimum de permissions :
touch /home/traefik/acme.json && chmod 600 /home/traefik/acme.json
-
Créez le fichier de configuration Traefik /home/traefik/traefik.toml en ajoutant les lignes suivantes. L'unique propriété à modifier est l'email :
[providers.docker] endpoint = "unix:///var/run/docker.sock" watch = true exposedByDefault = false [entryPoints.web] address = ":80" [entryPoints.web.http.redirections.entryPoint] to = "websecure" scheme = "https" [entryPoints.websecure] address = ":443" [certificatesResolvers.leresolver.acme] email = "votre-adresse@email.com" storage = "acme.json" [certificatesResolvers.leresolver.acme.httpChallenge] entryPoint = "web"
- [providers.docker] : cette directive permet tout simplement d'activer le support Docker.
- endpoint = "unix:///var/run/docker.sock" : précise le socket Unix de votre Docker à Traefik. Laissez la valeur par défaut.
- watch = true : permet de déployer à chaud les containers dès qu'un changement dans la configuration est détectée.
- exposedByDefault = false : n'expose pas par défaut les containers au monde extérieur. Il est préférable d'activer cette option dans le docker-compose.yml pour chacun des containers dans le cas où, si pour une raison ou une autre, vous ne souhaiteriez plus rendre accessible un container de l'extérieur.
- [entryPoints.web] et [entryPoints.websecure] : ces directives définissent les points d'entrée de votre Traefik. web et websecure sont purement indicatifs, vous pouvez les nommer autrement mais ils doivent correspondre aux labels que nous définirons plus tard dans le docker-compose.yml. Les propriétés address précisent les ports sur lesquels Traefik « écoute » en fonction du point d'entrée.
- [entryPoints.web.http.redirections.entryPoint] : force la redirection du port 80 vers le port 443 donc force le HTTP en HTTPS.
- [certificatesResolvers.[NOM_RESOLVEUR].acme] : nous indiquons ici que nous souhaitons utiliser le protocole ACME (donc le service Let's Encrypt) pour obtenir un certificat. Le nom du résolveur est purement indicatif, il doit simplement correspondre aux labels que nous définirons plus tard dans le docker-compose.yml.
- storage = "acme.json" : la propriété storage précise à Traefik le fichier (que nous avons créé précédemment) où seront stockées les informations relatives aux certificats. L'erreur commune est d'indiquer le chemin absolu (dans notre cas /home/traefik/acme.json), ici le chemin à renseigner est celui au sein du container Traefik, il faut donc laisser cette valeur par défaut.
- [certificatesResolvers.[NOM_RESOLVEUR].acme.httpChallenge] : cette directive précise tout simplement par quel point d'entrée (dans notre cas le port 80) Traefik peut obtenir un certificat.
-
Déplacez-vous dans le répertoire personnel de l'utilisateur traefik et démarrez le container :
cd docker-compose up -d
5.4 – Labels radarr et réseau Traefik
-
Connectez-vous sous l’utilisateur radarr et déplacez-vous dans son répertoire personnel :
su radarr
cd
-
Dans votre fichier /home/radarr/docker-compose.yml, ajoutez le réseau traefik_network dans la configuration du container Radarr et en fin de fichier. De plus, toutes les expositions de ports sont inutiles, vous pouvez donc supprimer la directive
ports:
avec les ports associés.Enfin, ajoutez les labels permettant de communiquer avec Traefik (seul le domaine est à modifier par le vôtre) :
version: '3.7' services: radarr: image: linuxserver/radarr:latest container_name: radarr restart: unless-stopped networks: - traefik_network environment: - PUID=1001 - PGID=1001 - TZ=Europe/Paris volumes: - /home/radarr/config:/config - /home/radarr/downloads:/downloads - /home/radarr/movies:/movies labels: - "traefik.enable=true" - "traefik.docker.network=traefik_network" - "traefik.http.routers.radarr.entrypoints=web,websecure" - "traefik.http.routers.radarr.rule=Host(`radarr.mondomaine.com`)" - "traefik.http.services.radarr.loadbalancer.server.port=7878" - "traefik.http.routers.radarr.tls=true" - "traefik.http.routers.radarr.tls.certresolver=leresolver" networks: traefik_network: external: true
- traefik.enable=true : ce label expose le container au monde extérieur. Il surchage la propriété exposedByDefault de votre fichier /home/traefik/traefik.toml.
- traefik.docker.network=traefik_network : ce label précise à Traefik quel réseau utilise le container Radarr.
- traefik.http.routers.[NOM_DU_CONTAINER].entrypoints : chaque règle de routage spécifique à un container doit être spécifiée par un nom, ici nous utilisons tout simplement le nom du container. Le label entrypoints précise que les requêtes entrantes sur les points d’entrée web (port 80) et websecure (port 443) seront transmises au container.
- traefik.http.routers.[NOM_DU_CONTAINER].rule=Host(`radarr.mondomaine.com`) : ici nous précisons une règle, toute requête arrivant sur http://radarr.mondomaine.com sera transmise au container radarr.
- traefik.http.services.[NOM_DU_CONTAINER].loadbalancer.server.port=[PORT] : ici nous précisons le port du container sur lequel les requêtes doivent être transmises.
- traefik.http.routers.[NOM_DU_CONTAINER].tls : active le support SSL/TLS.
- traefik.http.routers.[NOM_DU_CONTAINER].tls.certresolver : précise le résolveur et donc les certificats à utiliser.
-
Déplacez-vous dans le répertoire personnel de l’utilisateur radarr et démarrez le container :
cd docker-compose up -d
Si l’URL d’accès à votre Radarr n’est pas la racine de votre domaine (http://www.mondomaine.com/radarr par exemple), il est nécessaire de le configurer dans Radarr.
-
Modifiez la valeur de la propriété UrlBase dans le fichier de configuration de Radarr /home/radarr/config/config.xml :
<Config> <LogLevel>Info</LogLevel> <Port>7878</Port> <UrlBase>/radarr</UrlBase> <BindAddress>*</BindAddress> <SslPort>9898</SslPort> <EnableSsl></EnableSsl> <ApiKey>4242424242424242424242</ApiKey> <AuthenticationMethod>None</AuthenticationMethod> <Branch>master</Branch> <LaunchBrowser>True</LaunchBrowser> <SslCertHash></SslCertHash> <UpdateMechanism>BuiltIn</UpdateMechanism> </Config>
-
Redémarrez le container radarr :
docker-compose restart radarr
Ubuntu 20.04 ServerDocker 19.03.8
Docker Compose 1.26.2
Traefik 2.2
Radarr 2.0.1504
Laisser un commentaire
Rejoindre la discussion?N’hésitez pas à contribuer !