Newsgroup

Ubuntu 16.04 LTS – Installation de Muximux, NZBGet, NZBHydra, Sonarr et Radarr avec Nginx, Docker et SSL/TLS

Les newsgroups demeurent relativement plus complexes à utiliser que les services de téléchargement direct HTTP ou de Peer-to-Peer. Mais soyons clairs, il n’y a pas mieux que le réseau Usenet pour dénicher des informations pointues sur toutes sortes de sujets et télécharger des contenus de qualité, rapidement et en toute sécurité, à condition toutefois de débourser quelques euros par mois… Il existe aujourd’hui des outils tels que NZBGet, NZBHydra, Sonarr et Radarr permettant de simplifier grandement l’utilisation des newsgroups.

Usenet, géré par le protocole NNTP, est un réseau décentralisé, neutre et garantissant un fort anonymat. Ce réseau est antérieur à Internet et est composé de serveurs liés entre eux par des règles de partage (Peering). On accède à Usenet grâce à des providers et chacun d’entre eux a ses propres caractéristiques techniques (rétention, nombre de groupes, connexions, etc.).

Usenet héberge des forums et des groupes appelés Newsgroups. Ceux-ci sont partagés entre les Newsgroups textes (discussions) et les Newsgroups binaires (qui permettent d’accéder aux fichiers).

Afin de contourner les limites de taille toujours en vigueur, les fichiers sont découpés en plusieurs fichiers RAR (une image ISO de votre distribution Linux préférée de 1.7Go peut-être divisée par exemple en 114 parties de 15 Mo chacun). À noter que les fichiers RAR sont souvent accompagnés de fichiers PAR (Parity Volume Set pour parité d’un ensemble de fichiers) qui permet de réparer les fichiers égarés ou corrompus.

Pour éviter de chercher à la main les innombrables fichiers que composent une archive, il suffit de se procurer le fichier NZB qui lui correspond. Il contient la liste entière des différentes composantes (fichiers RAR) et les compléments de parité (fichiers PAR) qui leur sont associés.

Le grabber NZBget permet justement, à partir d’un fichier NZB, de télécharger automatiquement la liste complète des fichiers RAR, de vérifier l’intégralité de chaque archive, d’extraire et de déplacer le fichier final dans le dossier de votre choix. Cette application, tournant en arrière plan, propose une interface web pour ajouter vos fichiers NZB via votre navigateur ou smartphone.

Ces fichiers NZB sont référencés par des moteurs de recherche (ou indexers accessibles à tous, via un compte ou encore sur invitation. Ils se différencient, comme tout moteur de recherche, par le nombre de fichiers indexés ou par le type de contenu qu’ils proposent. C’est pour cela qu’il peut être intéressant d’en avoir plusieurs et c’est là que NZBHydra intervient. Une fois configuré, NZBHydra permet de faire une recherche via plusieurs indexers en même temps. Il vous donnera également les statistiques sur les différents indexeurs que vous utiliserez. La seule contrainte de NZBHydra est que vos indexers doivent disposer d’une API. Certains indexers, comme NZBGeek, limitent l’accès à leurs API aux comptes premium.

Radarr permet d’automatiser le téléchargement de vos films préférés libres de droits. Vous ajoutez un film dans l’interface en précisant la qualité et la langue souhaitées et Radarr recherchera celui-ci, via les indexers configurés dans NZBHydra et l’ajoutera automatiquement dans NZBGet dès qu’il sera disponible. L’interface dispose aussi d’un calendrier répertoriant les prochaines sorties de vos films préférés.

Sonarr a un fonctionnement similaire à Radarr mais pour les séries TV.

Muximux est une alternative à HTPC Manager permettant d’accéder et de gérer vos différentes applications en un clic via un tableau de bord.

1 – Prérequis

  • Vous devez disposer d’Ubuntu 16.04 LTS en version 64 bits.
  • Votre utilisateur doit avoir accès à sudo.
  • Les paquets curl, software-properties-common et python-software-properties doivent être installés sur votre système. Dans le doute, tapez la commande suivante :
  • [Facultatif] Bien que NZBHydra soit configuré par défaut avec des indexers ne nécessitant pas de compte particulier, vous pouvez souscrire à des indexers privés plus complets tels que Usenet-Crawler, NZBGeek, DogNZB, OMGWTFNZBS et Nzbplanet référençant un plus grand nombre de liens NZB.
  • Vous devez disposer d’un provider. C’est sûrement le choix le plus important que vous aurez à faire si vous vous lancez dans l’univers des Newsgroups. Chaque Fournisseur Usenet a ses propres caractéristiques techniques et celles-ci détermineront le prix de votre abonnement. Une petite liste des options qui vont déterminer votre choix :
    • Le volume de téléchargement
    • La rétention binaire (durée de conservation des fichiers, exprimée en jours)
    • Le nombre de Newsgroups disponibles
    • La vitesse de téléchargement et le nombre de connexions simultanées autorisées
    • La confidentialité et sécurité (conservation de l’historique, SSL et VPN)
    • Le taux de complétion (intégrité des archives)
    • La localisation des serveurs
    • Le prix…

    Je vous recommande les providers Astraweb et UsenetServer. Ils offrent un volume de téléchargement illimité et un service Usenet de premier rang en matière de sécurité / confidentialité (SSL 256 bits), d’excellentes vitesses d’accès (serveurs en Europe) à plus de 100 000 newsgroups jusqu’à 20 connexions simultanées et un très bon délai de rétention. Enfin UsenetServer propose, contrairement à la plupart des concurrents, un VPN inclus dans leur forfait.

    • Astraweb
    • Formule
    • Vitesse de téléchargement
    • Volume de téléchargement
    • Connexions simultanées
    • Rétention binaire
    • Complétion
    • Nombre de groupes
    • SSL
    • Conservation des logs
    • VPN inclus
    • Localisation des serveurs
    • Astraweb
    • 10$/mois
    • 10 Mbit/s
    • Illimité
    • 20
    • 3000 jours
    • 99%
    • +100 000
    • 256-bit
    • Non
    • Non
    • Etats-Unis, Europe
    • UsenetServer
    • 7.95$/mois
    • Illimitée
    • Illimité
    • 20
    • 3309 jours
    • 99%
    • +100 000
    • 256-bit
    • ?
    • Oui
    • Etats-Unis, Europe

2 – Muximux

Il existe une image Docker Muximux mais celle-ci contient déjà un serveur HTTP (Nginx). Sachant que, dans la suite du tutoriel, nous utiliserons un serveur HTTP dédié comme reverse proxy et pour la gestion du SSL/TLS pour l’ensemble des applications, il est préférable, pour une question de performance et de facilité de configuration, d’en avoir un seul.

2.1 – Nginx

Notre choix se portera sur le serveur HTTP Nginx pour une question de performances. Nginx est reconnu pour ses hautes performances, sa stabilité, son ensemble de fonctionnalités, sa configuration simple ainsi que sa faible consommation en ressources.

  • Installez les paquets nginx et php7.0-fpm :
  • Modifiez les directives suivantes du fichier de configuration Nginx /etc/nginx/nginx.conf :

    • worker_processes 8; : l’un des paramètres à ajuster immédiatement est le worker_processes. Pour profiter pleinement de la puissance de votre serveur, il est recommandé de mettre autant de worker_processes que de cœurs disponibles sur votre serveur. Pour connaître le nombre de cœurs sur votre serveur, il suffit de lancer la commande :
    • server_tokens off; : pour des raisons de sécurité, il est recommandé de désactiver l’envoi d’informations telles que le numéro de version de votre Nginx. Pour cela, décommentez cette directive dans le bloc http.
  • Rechargez la configuration Nginx :

2.2 – Téléchargement et installation de Muximux

  • Installez le paquet git afin de récupérer les sources de Muximux :
  • Téléchargez les sources de Muximux :
  • Attribuez les permissions à l’utilisateur et au groupe www-data pour que Nginx puisse y accéder :
    .

2.3 – Nom de domaine et vhost

N’oubliez pas de modifier les règles DNS dans l’interface administrateur du fournisseur de votre nom de domaine pour pointer vers l’IP de votre serveur.

  • Créez le fichier /etc/nginx/sites-available/media et modifiez la ligne en surbrillance en fonction de votre configuration :
  • Activez le virtual host :
  • Rechargez la configuration Nginx :

3 – NZBGet, NZBHydra, Sonarr et Radarr

3.1 – Docker & Docker Compose

  • Ajoutez la clé GPG du dépôt officiel de Docker à votre système :
  • Ajoutez Docker à vos dépôts APT :
  • Mettez à jour la liste des fichiers disponibles dans vos dépôts APT :
  • Installez Docker :
  • Vérifiez que Docker est correctement installé avec la commande sudo systemctl status docker :
  • Installez Docker Compose :
  • Vérifiez l’installation de Docker Compose avec la commande docker-compose -v :

3.2 – Droits Unix

Il est recommandé, pour des raisons de sécurité, de créer un utilisateur dédié à la gestion des volumes Docker (NZBget, NZBHydra, Sonarr et Radarr) et de ne pas les lancer sous votre super-utilisateur.

  • Ajoutez un utilisateur media et ajoutez-le au groupe docker :
  • Affectez un password au nouvel utilisateur media :
  • Connectez-vous sous l’utilisateur media et déplacez-vous dans le répertoire personnel de cet utilisateur :

3.3 – Création des volumes

  • Créez le fichier /home/media/docker-compose.yml et modifiez les lignes en surbrillance en fonction de votre configuration :

    • PUID et GUID : ces deux variables représentent respectivement l’identifiant et le groupe de votre utilisateur media. Ces valeurs peuvent être différentes d’un système à l’autre. Tapez la commande suivante pour obtenir le PUID (=uid) et GUID (=gid) de votre utilisateur media :
    • /home/media/[APPLICATION]/config:/config : chemin absolu des répertoires partagés entre votre système et le container docker. La première partie /home/media/[APPLICATION]/config (avant le séparateur « : ») représente le chemin où vos fichiers de configurations seront stockés sur votre système pour chaque application. La deuxième partie /config représente le chemin de vos fichiers de configuration à l’intérieur du container docker. Cette dernière ne doit pas être modifiée.
    • /home/media/downloads:/downloads : même principe mais pour l’emplacement de vos fichiers téléchargés.
    • /home/media/tv:/tv et /home/media/movies:/movies : même principe mais pour l’emplacement de vos séries TV et films.

    Il est important que l’utilisateur media ait les droits de lecture et d’écriture dans les répertoires de votre système que vous spécifiez.

  • Démarrez les containers :
  • Listez vos containers avec la commande $ docker ps -a :

Si vous êtes en local, vous pouvez désormais accéder aux différents services :

3.4 – Reverse proxy avec Nginx

Si vous souhaitez accéder à vos services de l’extérieur via une URL de type http://media.mondomaine.com/nzbget, http://media.mondomaine.com/nzbhydra, etc., alors un reverse proxy est nécessaire. Le reverse proxy remplit le rôle de passerelle entre l’extérieur (Internet) et le réseau local de votre serveur.

  • Repassez sous votre super-utilisateur :
  • Modifiez le vhost /etc/nginx/sites-available/media et ajoutez les lignes en surbrillance :
  • Rechargez la configuration Nginx :

3.5 – Configuration

Pour accéder aux services NZBHydra, Sonarr et Radarr, il est nécessaire de spécifier l’URL d’accès dans leurs fichiers de configuration respectifs.

Muximux et NZBGet ne nécessitent pas de configuration particulière, vous pouvez déjà y accéder via :

  • Muximux : http://media.mondomaine.com
  • NZBGet : http://media.mondomaine.com/nzbget (utilisateur : nzbget / password : tegbzn6789)

NZBHydra

  • Connectez-vous avec l’utilisateur media et placez-vous dans le répertoire personnel de cet utilisateur :
  • Modifiez la valeur de la propriété urlBase dans le fichier de configuration de NZBHydra /home/media/nzbhydra/config/hydra/settings.cfg :
  • Redémarrez le container nzbhydra :

Sonarr

  • Modifiez la valeur de la propriété UrlBase dans le fichier de configuration de Sonarr /home/media/sonarr/config/config.xml :
  • Redémarrez le container sonarr :

Radarr

  • Modifiez la valeur de la propriété UrlBase dans le fichier de configuration de Radarr /home/media/radarr/config/config.xml :
  • Redémarrez le container radarr :

Les différents services sont désormais accessibles via :

  • NZBHydra : http://media.mondomaine.com/nzbhydra
  • Sonarr : http://media.mondomaine.com/sonarr
  • Radarr : http://media.mondomaine.com/radarr.

4 – Sécuriser vos applications avec SSL/TLS

Let’s Encrypt est une autorité de certification libre, automatisée et ouverte. Cette autorité fournit des certificats gratuits X.509 pour le protocole cryptographique SSL/TLS au moyen d’un processus automatisé destiné à se passer du processus complexe actuel impliquant la création manuelle, la validation, la signature, l’installation et le renouvellement des certificats pour la sécurisation des sites internet. En juillet 2017, Let’s Encrypt avait délivré plus de 100 millions de certificats.

4.1 – Installation

Installez les paquets software-properties-common et certbot :

4.2 – Génération des certificats

Let’s Encrypt permet de générer de différentes façons plus ou moins automatisées un certificat. La méthode standalone permet de générer simplement un certificat. En revanche, celle-ci demande d’arrêter le serveur Nginx et ceci est valable à chaque renouvellement dudit certificat. Il existe aussi des plugins apache et nginx entièrement automatisés. Ces plugins mettent à jour automatiquement la configuration des virtual hosts mais le plugin nginx est encore expérimental. Dans cet article, nous recommandons d’utiliser le plugin webroot qui permet de générer et renouveler son certificat sans interrompre le serveur Nginx.

Le plugin webroot crée un fichier temporaire .well-known/acme-challenge à la racine de votre dossier web (/var/www/muximux), celui-ci permettra aux serveurs de Let’s Encrypt d’appeler ce fichier temporaire et ainsi de valider votre certificat.

  • Ajoutez les lignes suivantes dans le vhost /etc/nginx/sites-available/media pour autoriser Let’s Encrypt à créer le fichier temporaire .well-known/acme-challenge dans le répertoire /var/www/muximux :
  • Recharchez votre configuration Nginx :
  • Générez votre certificat en remplaçant [email protected] et media.mondomaine.com par vos informations personnelles :

    Vous obtiendrez 4 fichiers dans le répertoire /etc/letsencrypt/live/media.mondomaine.com :

    • cert.pem : le certificat de votre domaine media.mondomaine.com
    • chain.pem : le certificat Let’s Encrypt
    • fullchain.pem : les certificats cert.pem et chain.pem combinés
    • privkey.pem : la clé privée du certificat.
  • SSL/TLS utilise un système de chiffrement asymétrique (comme RSA ou Diffie-Hellman) afin de sécuriser les échanges de vos flux. Par défaut, Nginx utilise une clé de 1048 bits. En augmentant la longueur de la clé à 4096 bits, vous augmenterez ainsi la sécurité de votre protocole SSL/TLS. Générez une nouvelle clé Diffie-Hellman (DH) de 4096 bits et attribuez-lui un minimum de permissions :

4.3 – Renouvellement automatique du certificat

Les certificats délivrés par Let’s Encrypt sont valides 90 jours. L’outil certbot fournit une option renew permettant de renouveler l’ensemble des certificats présents sur votre serveur si et seulement si ceux-ci expirent dans moins de 30 jours.

Nous allons créer une règle crontab où le script de renouvellement sera planifié pour exécution tous les lundis à 23h42. Les traces liées à l’exécution du script seront enregistrées dans un fichier /var/log/le-renew.log.

  • Éditez la crontab :
  • Ajoutez la ligne suivante :
  • Sauvegardez et quittez.

4.4 – Virtual host

  • Modifiez votre virtual host et les lignes en surbrillance en fonction de votre configuration :

5 – HTTP2

Je vous conseille vivement d’activer le nouveau protocole HTTP2 qui augmentera la sécurité et la rapidité de vos différents services.

HTTP2 permet notamment :

  • la compression des headers des requêtes et des réponses réduisant la bande passante lorsque les headers (comme les cookies) sont similaires.
  • le multiplexage des requêtes au serveur consistant à faire passer de multiples informations via un seul tuyau de transmission. Ainsi, on économise les multiples connexions entre le client et le serveur. Les requêtes, quant à elles, sont effectuées simultanément par le navigateur. Les requêtes ne se suivent donc plus les unes derrière les autres (HTTP1) et les plus prioritaires (CSS par exemple) ne sont plus bloquées par les moins prioritaires (images par exemple).
  • le push des ressources du serveur au navigateur. Désormais, le serveur pourra envoyer l’ensemble des ressources référencées dans une même page (CSS, JS…), avant même que le navigateur n’ait analysé celle-ci.

L’activation du protocole HTTP2 est très simple et consiste en l’ajout de la directive http2 dans votre virtual host (/etc/nginx/sites-available/media) :

Une fois la modification effectuée, n’oubliez pas de recharger votre configuration Nginx :

6 – Configuration

6.1 – NZBGet

  1. Accédez à NZBGet via https://media.mondomaine.com/nzgbet (login : nzbget / password : tegbzn6789).
  2. Modifiez les informations de connexion par défaut et activez l’authentification dans Settings → SECURITY :

    1
    2
    3
    1

    Modifiez l’utilisateur par défaut

    2

    Modifiez le mot de passe par défaut

    3

    Activez l’authentification par formulaire


  3. Terminez par ajouter les informations de votre provider dans Settings → NEWS-SERVERS :

    1
    2
    3
    4
    5
    6
    7
    1

    Renseignez un nom de provider (purement indicatif)

    2

    Renseignez l’URL de connexion de votre provider

    3

    Renseignez le port de connexion de votre provider

    4

    Renseignez votre identifiant

    5

    Renseignez votre mot de passe

    6

    Activez le protocole SSL/TLS en fonction des données fournies par votre provider

    7

    Vérifiez les informations saisies


  4. Cliquez sur Save all changes pour sauvegarder votre nouvelle configuration.

6.2 – NZBHydra

  1. Accédez à NZBHydra via https://media.mondomaine.com/nzbhydra.
  2. Activez l’authentification dans Config → Authorization :

    1
    2
    3
    4
    5
    1

    Sélectionnez Login form

    2

    Cliquez sur Add new user

    3

    Renseignez un nom d’utilisateur

    4

    Renseignez un mot de passe

    5

    Sauvegardez


  3. (Facultatif) Si vous possédez vos propres indexers, ajoutez-les dans l’onglet Indexers :

    1
    2
    3
    4
    5
    6
    1

    Renseignez un nom d’indexer (purement indicatif)

    2

    Renseignez l’URL de l’API de votre indexer

    3

    Renseignez la clé de l’API (à récupérer chez votre indexer)

    4

    Renseignez l’utilisateur de connexion de votre indexer

    5

    Renseignez le mot de passe de connexion de votre indexer

    6

    Validez


  4. Terminez par ajouter NZBGet dans l’onglet Downloaders. Vous devez spécifier l’IP publique de votre serveur dans le champ Host et non le nom de domaine de votre NZBGet :

    1
    2
    3
    4
    5
    6
    1

    Renseignez un nom pour votre client (purement indicatif)

    2

    Renseignez l’IP de votre serveur

    3

    Renseignez le port de connexion de votre NZBGet

    4

    Renseignez l’utilisateur de connexion de votre NZBGet

    5

    Renseignez le mot de passe de connexion de votre NZBGet

    6

    Validez


6.3 – Sonarr

  1. Accédez à Sonarr via https://media.mondomaine.com/sonarr.
  2. Activez l’authentification dans Settings → General → Security :

    1
    2
    3
    1

    Sélectionnez Forms (Login Page)

    2

    Renseignez un nom d’utilisateur

    3

    Renseignez un mot de passe


  3. Ajoutez NZBHydra dans l’onglet Indexers et choisissez un indexer Usenet de type Newznab (Custom).

    La clé de l’API est à récupérer dans NZBHydra (Config → Security).

    Les catégories 5000, 5030, 5040 et 5070 correspondent respectivement aux catégories TV, TV SD, TV HD et Anime. Toutes les catégories sont visibles dans NZBHydra (Config → Categories).


    1
    2
    3
    4
    5
    6
    7
    1

    Spécifiez un nom pour votre indexer (purement indicatif)

    2

    Renseignez l’URL de votre NZBHydra

    3

    Récupérez la clé de l’API de votre NZBHydra (menu « Config », section « Security »)

    4

    Les catégories 5000, 5030, 5040 correspondent respectivement aux catégories TV, TV SD et TV HD

    5

    La catégorie 5070 correspond à la catégorie Anime

    6

    Testez votre configuration

    7

    Si le test est passé, sauvegardez votre configuration


  4. Ajoutez NZBGet dans l’onglet Download Client. Vous devez spécifier l’IP publique de votre serveur dans le champ Host et non le nom de domaine de votre NZBGet :

    1
    2
    3
    4
    5
    6
    7
    1

    Spécifiez un nom pour votre client (purement indicatif)

    2

    Renseignez l’IP de votre serveur

    3

    Renseignez le port de connexion de votre NZBGet

    4

    Renseignez l’utilisateur de votre NZBGet

    5

    Renseignez le mot de passe de votre NZBGet

    6

    Testez votre configuration

    7

    Si le test est passé, sauvegardez votre configuration


  5. Cliquez sur « Save » en haut à droite pour sauvegarder votre nouvelle configuration.

6.4 – Radarr

  1. Accédez à Radarr via https://media.mondomaine.com/radarr.
  2. Activez l’authentification dans Settings → General → Security :

    1
    2
    3
    1

    Sélectionnez Forms (Login Page)

    2

    Renseignez un nom d’utilisateur

    3

    Renseignez un mot de passe


  3. Ajoutez NZBHydra dans l’onglet Indexers. Choisissez un indexer Usenet de type Newznab (Custom).

    La clé de l’API est à récupérer dans NZBHydra (Config → Security) :


    1
    2
    3
    4
    5
    1

    Spécifiez un nom pour votre indexer (purement indicatif)

    2

    Renseignez l’URL de votre NZBHydra

    3

    Récupérez la clé de l’API de votre NZBHydra (menu « Config », section « Security »)

    4

    Testez les informations saisies

    5

    Si le test est passé, sauvegardez votre configuration


  4. Ajoutez NZBGet dans l’onglet Download Client. Vous devez spécifier l’IP publique de votre serveur dans le champ Host et non le nom de domaine de votre NZBGet :

    1
    2
    3
    4
    5
    6
    7
    1

    Spécifiez un nom pour votre client (purement indicatif)

    2

    Renseignez l’IP de votre serveur

    3

    Renseignez le port de connexion de votre NZBGet

    4

    Renseignez l’utilisateur de votre NZBGet

    5

    Renseignez le mot de passe de votre NZBGet

    6

    Testez les informations saisies

    7

    Si le test est passé, sauvegardez votre configuration


  5. Cliquez sur Save en haut à droite pour sauvegarder votre nouvelle configuration.

6.5 – Muximux

  1. Accédez à Muximux via https://media.mondomaine.com/.
  2. Activez l’authentification et ajoutez l’ensemble des services Usenet à l’interface Muximux dans Settings (roue dentée en bas à gauche) :

    1
    2
    3
    4
    5
    6
    7
    1

    Cochez Authentication

    2

    Renseignez un nom d’utilisateur et un mot de passe

    3

    Ajoutez NZBGet

    4

    Ajoutez NZBHydra

    5

    Ajoutez Sonarr

    6

    Ajoutez Radarr

    7

    Sauvegardez la configuration



Ubuntu 16.04.2 Server LTS (64bits)Docker 17.12.0-ce
Docker Compose 1.18.0
Nginx 1.10.3
NZBGet 19.1
NZBHydra 0.2.231
Sonarr 2.0.0.5085
Radarr 0.2.0.910

Auteur
AuteurEdouard WATTECAMPS

0 réponses

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *