24 Déc

Configurer NzbDrone et NzbGet avec Nginx

Après avoir installé NzbGet et NzbDrone (récemment renommé sonar), il ne reste plus qu’à les configurer et à en sécuriser l’accès. Pour ce faire, le principe de base consiste à utiliser Nginx en reverse proxy ssl devant ces deux applicatifs.

Quel est l’intérêt ? Nginx va permettre de « masquer » NzbGet et NzbDrone en évitant de les rendre accessibles directement depuis Internet. Nginx est un serveur connu et fiable, est-ce que l’on peut en dire autant des deux autres ? Personnellement, j’éviterai de parier la sécurité de mon serveur là-dessus.

* La version de Sonarr/NzbDrone 2.0.0.2663 a apporté pas mal de changements et la configuration nginx ci-dessous doit-être modifiée en conséquence. L’article reflète maintenant ces changements

Environnement

OS : Debian 7.7 stable (Wheezy) 64bits
Nginx : nginx/1.6.2
NzbDrone : 2.0.0.2500 2.0.0.2663
Mono : 3.10
NzbGet : 13.0

Configuration Nginx

Pour faire simple, j’ai rajouté les 3 « blocs locations » à la fin de la configuration du Nginx de ma seedbox. Je renvoie à l’article en question qui explique pas à pas la configuration complète avec la terminaison SSL. Mais fondamentalement, on a quelque chose qui ressemble à cela :

Il s’agit d’une configuration très classique de reverse proxy avec terminaison SSL et authentification. Seule bizarrerie, l’accès au répertoire contenant les backups de configuration de NzbDrone.

Configuration de NzbGet

Si vous avez suivi le tuto de NzbGet, le fichier de configuration se trouve /usr/local/etc/nzbget.conf. Pour peu que Nzbget ait accès en écriture à son fichier de configuration, on peut réaliser cette dernière à l’aide de l’interface graphique. Ce n’est pas le plus sécurisé, mais par contre le plus simple. Normalement, le « home directory » a déjà été créé et hébergera le « MainDir ».

Il ne reste plus qu’à rentrer dans son navigateur préféré l’adresse https://www.mondomaine.com/nzbget. Je renvoie de manière éhontée à ce guide de configuration. Seuls 3 éléments sont importants dans notre cas.

Configurer le MainDir

Configurer le MainDir


Passer le ControlIP sur le localhost et désactiver le ssl et l’authentification


Configuration de NzbDrone

Le principe de configuration de NzbDrone reste le même. A ceci près qu’il n’est pas possible, pour le moment, de forcer NzbDrone à écouter sur une adresse IP spécifique. C’est maintenant chose faite avec la version 2.0.0.2663.
Les principaux éléments de configuration de NzbDrone se trouvent dans un fichier xml créé au premier démarrage. Le point principal est de bien configurer la balise UrlBase. Laissez, dans un premier temps, la balise BindAddress égale à * pour faciliter le debug.

Une fois cette configuration initiale réalisée, on peut se connecter via Nginx avec https://www.mondomaine.com/nzbdrone. En cas de soucis, il est toujours possible de se connecter directement à l’interface graphique : http://www.mondomaine.com:8989.
nzbdrone_config_ini
Une fois que l’accès via Nginx fonctionne, on verrouille l’accès direct à NzbDrone depuis internet en passant la balise BindAddress à « 127.0.0.1 ».
Une dernière chose à noter. NzbDrone permet une mise à jour depuis l’interface graphique. Il nécessite juste un accès en écriture au répertoire /opt/NzbDrone ce qui peut poser des problèmes de sécurité. En même temps, si la configuration SSL de Nginx est solide, cela ne devrait pas être gênant. Au choix donc :

Il ne reste plus maintenant qu’à réaliser la configuration générale de NzbDrone à l’aide de ce tuto.

Sécurité et Conclusion

Toute la sécurisation du serveur repose sur le fait que les applicatifs NzbGet et NzbDrone ne sont accessibles que via Nginx, qui dispose d’un mécanisme d’authentification protégé par SSL. La sécurité est a donc priori solide, mais il faudra bien vérifier plusieurs points.

NzbGet et NzbDrone ne sont accessibles uniquement sur le localhost

  • vérifier que NzbGet n’écoute que sur le localhost : netstat -ntpul | grep nzbget
  • vérifier que NzbDrone (via mono) n’écoute que sur le localhost : netstat -ntpul | grep mono

Verrouiller les droits des fichiers en local
Selon son degré de paranoïa, on peut restreindre les modifications sur les fichiers du système :

  • accès au fichier de conf de nzbget : chown root. /usr/local/etc/nzbget.conf
  • accès au fichier de conf de nzbdrone : chown root. /var/lib/nzbdrone/.config/NzbDrone/config.xml
  • accès à l’applicatif NzbDrone : chown root. /opt/NzbDrone -vR

Bien sûr, ces restrictions empêchent les modifications de config ou les MAJ depuis la GUI.

Configuration SSL et Autorisations
Je renvoie vers ce tuto pour une bonne configuration SSL. Attention à bien remettre à jour sa config par rapport aux dernières recommandations. Bien évidemment, choisissez un mot de passe fort!

La base de la configuration système est maintenant faite. Il ne reste plus qu’à finir la configuration depuis la GUI et commencer à télécharger des œuvres libres de droits! Encore une fois, le site htpcguides.com fourni de très bonnes explications pas à pas. A noter qu’il est possible de monter son propre indexeur privé de newsgroups, ce qui sera peut-être l’occasion de rédiger un prochain article.

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.