/ Docker

Guide - Installation de votre propre Seedbox

Prérequis

  • Debian
  • Domaine ou sous-domaine
  • Ports ouverts : 80/TCP, 443/TCP
  • Ports non ouverts sur internet : 7878/TCP, 9117/TCP, 5000/TCP, 8181/TCP et 8989/TCP

Mise à jour

sudo apt update && sudo apt full-upgrade -y && sudo apt install -y git-core htop lftp speedtest-cli apt-transport-https curl

Création des répertoires

sudo mkdir /Films && sudo chmod -R 777 /Films
sudo mkdir /Series && sudo chmod -R 777 /Series
sudo mkdir /Torrents && sudo chmod -R 777 /Torrents
sudo mkdir /Torrents/tmp && sudo chmod -R 777 /Torrents/tmp

Installation de Transmission

Installation de Transmission et arrêt du service pendant la durée de paramétrage.

sudo apt install -y transmission-daemon
sudo service transmission-daemon stop
sudo vi /etc/transmission-daemon/settings.json

On limite la bande passante à 40 Mo/s en réception et à 5 Mo/s en émission.

"alt-speed-down": 40000,
"alt-speed-enabled": true,
"alt-speed-up": 5000,
"rpc-whitelist-enabled": false,

On défini les répertoires complets et incomplets.

"download-dir": "/Torrents",
"incomplete-dir": "/Torrents/tmp",
"incomplete-dir-enabled": true, 

On défini un nom d'utilisateur et un mot de passe pour l'authentification.

"rpc-authentication-required": true
"rpc-enabled": true,
"rpc-username": "jean",
"rpc-password": "jean1234",

sudo systemctl start transmission-daemon

Installation de Plex

Ajout des sources APT pour la mise à jour et l'installation de Plex.

echo deb https://downloads.plex.tv/repo/deb ./public main | sudo tee /etc/apt/sources.list.d/plex.list
sudo curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -

sudo apt update && sudo apt install -y plexmediaserver

Dans le cas d'un serveur avec une adresse IP publique vous n'aurez pas la possibilité de configurer Plex, pour cela il faut créer un tunnel SSH avec Putty.

plex_ssh

Dans "Destination" on ajoute l'adresse IP du serveur en précisant le port de Plex de la manière suivante : @IP:32400.

Puis dans "Source port" on précise un port local, dans notre cas 8888, on clique sur "Add" et on s'authentifie en SSH avec les identifiants de votre serveur.

plex_sshfirefox

Enfin dans le navigateur internet il suffit de saisir "https://localhost:8888/web".

Concernant la configuration et la création de vos bibliothèques rendez-vous sur cette vidéo expliquant en détails l'opération.

Installation de Nginx

Voir mon article dédié à la mise en place de Nginx et de Let's Encrypt à l'adresse suivante : /2017/08/06/script-nginx/.

Installation de Docker

On ajoute la source permettant l'installation de Docker.

sudo wget https://download.docker.com/linux/debian/gpg && sudo apt-key add gpg && echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee -a /etc/apt/sources.list.d/docker.list

Puis on installe Docker.

sudo apt update
sudo apt install -y docker-ce docker-compose

Installation de Jackett, Sonarr et Radarr avec Docker

Récupération et exécution du conteneur Docker.

sudo mkdir /home/media
cd /home/media
sudo wget https://get.nexart.fr/upload/Scripts/seedbox/docker-compose.yml
sudo docker-compose up -d

Pour éteindre proprement le conteneur Docker lors de l'extinction du serveur on ajoute une ligne.

sudo vi /etc/network/interfaces

auto ens180
iface ens180 inet static
        address XXX.XXX.XXX.XXX
        netmask XXX.XXX.XXX.XXX
        post-down docker rm -f $(docker ps -a -q) # Ligne qu'on ajoute

Rajouter la ligne ci-dessus uniquement sur une interface qui s'active automatiquement lors du démarrage du serveur.

Puis on automatise l'action au démarrage du serveur.

sudo crontab -e

@reboot cd /home/media && sudo docker-compose up -d

Configuration de Jackett

0-Jackett-1
On se rend sur l'interface web de Jackett.

1-Jackett
On définit un mot de passe d'accès sur l'interface web et on clique sur "Set Password".

2-Jackett
On définit la racine d'accès "/jackett" sur l'interface web et on clique sur "Apply server settings".

3-Jackett
On ajoute un tracker en cliquant sur "Add indexer".

4-Jackett
On recherche un tracker, dans ce cas il s'agit du célèbre YggTorrent et on clique sur l'icône réglagle se trouvant à droite.

EDIT : L'adresse de YgTorrent est maintenant https://ww3.yggtorrent.is/

5-Jackett
Dans le cas d'un tracker privé il faut définir votre nom d'utilisateur et le mot de passe associé au tracker comme c'est le cas avec YggTorrent. Dans Catégorie on choisit dans la liste "Film/Vidéo", on coche la case "Try to normalize releases names by moving year after the title" et on termine en cliquant sur Okay.

Configuration de Sonarr (Séries)

sonarr

On se rend sur l'interface web de Sonarr.

2-Sonarr
Dans "System", puis dans "General" on définit la racine d'accès de l'interface à savoir "/sonarr" et on clique sur "Save".

3-Sonarr
Au même endroit on se rend dans la section "Security", ensuite on choisit "Forms (Login page)" et on définit un nom d'utilisateur et un mot de passe pour la sécurité d'accès de Sonarr.

4-Sonarr
Dans "Settings" on se rend dans "Download Client", on active le bouton "Advanced Settings" et on clique sur la croix pour ajouter notre client torrent Transmission.

5-Sonarr-2
On renseigne un nom, l'adresse IP, le nom d'utilisateur, le mot de passe d'accès au client torrent Transmission, puis on définit le chemin de nos séries dans le champ "Directory" en entrant "/tv" et on clique sur "Save".

6-Sonarr
Dans "Indexers" on clique sur la grande croix.

7-Sonarr
Parmis les choix possibles on choisit "Torznab".

8-Sonarr
On définit le nom du tracker, on ne quitte pas la page ! En effet, nous allons récupérer l'URL et l'API Key sur Jackett du tracker en question pour qu'on puisse la saisir sur Sonarr.

9-Sonarr
Parmis les indexers on clique sur le bouton "Copy Tornzab Feed" et sur Sonarr on colle l'URL, on fait de même avec l'API Key et on termine en cliquant sur le bouton "Save" sur Sonarr.

10-Sonarr
On commence par se rendre dans "Profiles" et on sélectionne un des profiles en commençant par "Any.

11-Sonarr
Dans "Language" on remplace "English" par "French", on fait la même chose sur l'intégralité des profiles.

12-Sonarr
Dans "System" on clique sur le bouton comme sur l'image ci-dessus, ce bouton permet de redémarrer Sonarr afin de prendre en compte les modifications de la sécurité d'accès sur l'interface.

13-Sonarr
Au bout d'un certain temps vous devez atterir sur cette page, on saisit le nom d'utilisateur et le mot de passe définit précédemment.

14-Sonarr
Dans "Series" on clique sur "Add Series".

15-Sonarr
Dans la barre de recherche comme sur l'image ci-dessus on saisit le nom de la série. Ensuite dans "Path" on va chercher le répertoire "/tv" (uniquement lors du premier ajout d'une série), on met la qualité "HD-720p" et on clique sur la croix.

16-Sonarr
En cliquant sur la loupe soit sur la saison entière ou l'épisode en question cela devrait démarrer le téléchargement sur le client torrent Transmission.

17-Sonarr
Voici un exemple d'un téléchargement, mais les prochains épisodes se téléchargeront automatiquement et sans aucune action de votre part.

Configuration de Radarr (Films)

La procédure est la même que pour Sonarr, si ce n'est le répertoire de destination qui change, on remplace "/tv" par "/movies".
5-Sonarr-3

La racine d'accès sur l'interface web change également, on remplace "/sonarr" par "/radarr" comme sur l'image ci-dessous.
3-Sonarr-1

Installation de Tautulli

cd /opt
sudo git clone https://github.com/Tautulli/Tautulli.git
cd Tautulli
cd /opt/Tautulli
sudo touch /etc/default/tautulli
sudo adduser --system --no-create-home tautulli
sudo chown tautulli:nogroup -R /opt/Tautulli
sudo chmod +x /opt/Tautulli/init-scripts/init.ubuntu
sudo cp /opt/Tautulli/init-scripts/init.ubuntu /etc/init.d/tautulli
sudo update-rc.d tautulli defaults

On démarre Tautilli de la manière suivante :

sudo systemctl start tautulli

Configuration de Tautulli

1-TAUTULLI
On se contente de cliquer sur Next.

2-TAUTULLI
On renseigne le nom d'utilisateur et le mot de passe correspondant à votre compte Plex et on valide en cliquant sur Authenticate.

3-TAUTULLI
On se contente de cliquer sur Verify.

4-TAUTULLI
On se contente de cliquer sur Next.

5-TAUTULLI
On se contente de cliquer sur Next.

6-TAUTULLI
On se contente de cliquer sur Next.

7-TAUTULLI
On clique sur Finish.

TAUTULLI-ROOT
On rajoute tautulli dans HTTP Root et on clique sur Save.

8-TAUTULLI
Vous pouvez désormais surveiller ce que regarde vos utilisateurs en temps réel.

Installation de Ombi

Téléchargement et installation

sudo mkdir /opt/Ombi
cd /opt/Ombi
sudo wget https://github.com/tidusjar/Ombi/releases/download/v3.0.3407/linux.tar.gz
sudo tar xzf linux.tar.gz
sudo chmod +x Ombi
sudo apt install -y libicu-dev libunwind8 libcurl4-openssl-dev
sudo chown -R ombi:nogroup /opt/Ombi

Création du service daemon

sudo vi /etc/systemd/system/ombi.service

[Unit]
Description=Ombi - PMS Requests System
After=network-online.target

[Service]
User=root
Group=root
WorkingDirectory=/opt/Ombi/
ExecStart=/opt/Ombi/Ombi
Type=simple
TimeoutStopSec=30
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload && sudo systemctl enable ombi.service

Puis on démarre Ombi de la manière suivante :

sudo systemctl start ombi

Configuration de Ombi

1-OMBI-3
On clique sur "Next".

2-OMBI-3
On choisit "Plex".

3-OMBI-3
On saisir le nom d'utilisateur et le mot de passe du compte administrateur de votre serveur Plex (compte plex.tv).

4-OMBI-3
On clique sur "Request Token".

5-OMBI-min
Après la fin de la configuration on saisit de nouveau le nom d'utilisateur et le mot de passe du compte administrateur de votre serveur Plex (compte plex.tv).

6-OMBI
Dans "Paramètres" puis dans "Ombi" on définit la racine de l'interface web, c'est-à-dire "/ombi" et on valide en cliquant sur le bouton "Submit".

7-OMBI
Dans "Paramètres", "Configuration" puis "User Importer" on coche les mêmes cases que sur l'image ci-dessus, on valide en cliquant sur le bouton "Submit" et enfin sur "Run Importer".

8-OMBI
Dans "Gestion des utilisateurs" la liste des utilisateurs que vous avez invités doivent apparaître au sein de cette liste.

9-OMBI
Dans "Paramètres", "TV" puis "Sonarr" :

  • On active Sonarr en cochant la case "Enable"
  • Saisir l'adresse IP de Sonarr dans "Sonarr Hostname or IP"
  • On saisit le port "8989" dans "Port"
  • On copie l'API Key se trouvant sur Sonarr dans "Settings/General" dans le champ "Sonarr API Key"
  • On définit la racine de l'interface web de Sonarr "/sonarr"
  • On clique sur le bouton "Test Connectivity".
  • On clique sur "Get Quality Profiles" et on choisit la qualité qu'on souhaite pour nos séries et animés.
  • On clique sur "Get Root Folders" et on choisit le répertoire de destination pour nos séries et animés, normalement "/tv" devrait apparaître dans la liste.

On termine par cliquer sur le bouton "Test Connectivity" et sur "Submit".

10-OMBI
Dans "Paramètres", "TV" puis "Radarr" :

  • On active Radarr en cochant la case "Enable"
  • Saisir l'adresse IP de Radarr dans "Radarr Hostname or IP"
  • On saisit le port "7878" dans "Port"
  • On copie l'API Key se trouvant sur Radarr dans "Settings/General" dans le champ "Radarr API Key"
  • On définit la racine de l'interface web de Radarr "/radarr"
  • On clique sur "Get Quality Profiles" et on choisit la qualité qu'on souhaite pour nos films.
  • On clique sur "Get Root Folders" et on choisit le répertoire de destination pour nos films, normalement "/movies" devrait apparaître dans la liste.

On termine par cliquer sur le bouton "Test Connectivity" et sur "Submit".

Mise en place du reverse proxy

On édite un nouveau Virtualhost permettant d'accéder à Organizr et les différents services que nous venons de mettre en place, pour cela on copie le contenu suivant en remplaçant "mozor.sysnexart.xyz" par le nom de votre domaine ou sous-domaine :

sudo rm -rf /etc/nginx/sites-enabled/* && sudo rm -rf /etc/nginx/sites-availables/*

sudo vi /etc/nginx/sites-enabled/seedbox.vhost

server {

listen *:80;
listen *:443 ssl http2;

ssl_protocols TLSv1.2;
ssl_dhparam /etc/ssl/certs/dh4096.pem;
ssl_certificate /etc/letsencrypt/live/mozor.sysnexart.xyz/fullchain.pem;
ssl_trusted_certificate /etc/letsencrypt/live/mozor.sysnexart.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mozor.sysnexart.xyz/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256";
resolver 80.67.169.12 80.67.169.40 valid=300s;
resolver_timeout 5s;
ssl_session_timeout 5m;
ssl_session_tickets off;
add_header Strict-Transport-Security "max-age=31536000";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

server_name mozor.sysnexart.xyz www.mozor.sysnexart.xyz;
root /var/www/organizr;
index index.php index.html index.htm;

if ($scheme != "https") {
rewrite ^ https://$http_host$request_uri? permanent;
}

location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 60;
include fastcgi_params;
}

location ~ /\.well-known/acme-challenge {
allow all;
}

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

# Jackett
location ^~ /jackett/ {
proxy_pass       http://localhost:9117/;
include          proxy_params;
}

# Sonarr
location ^~ /sonarr {
proxy_pass       http://localhost:8989/sonarr;
include          proxy_params;
}

# Radarr
location ^~ /radarr {
proxy_pass       http://localhost:7878/radarr;
include          proxy_params;
}

# Plex
location /web {
proxy_pass https://localhost:32400;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location ^~ /plex {
return 301 /web;
}

# Tautulli
location /tautulli {
proxy_pass http://localhost:8181;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Proto $scheme;
}

# Transmission
location ^~ /transmission {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Connection "";
proxy_pass_header X-Transmission-Session-Id;
return 301 /transmission/web;
}

location /transmission/rpc {
proxy_pass http://localhost:9091;
}

location /transmission/web/ {
proxy_pass http://localhost:9091;
}

# Ombi
location /ombi/ {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 90;
}

}

Puis on redémarre Nginx avec la commande suivante :

sudo systemctl reload nginx

Installation de Organizr

On installe les paquets nécessaires au fonctionnement de Organizr.

sudo apt install -y sqlite sqlite3 php-sqlite php-curl php-zip php-sqlite3

On récupère Organizr depuis Github

cd /var/www
sudo git clone https://github.com/causefx/Organizr organizr
sudo chown -R www-data:www-data /var/www/organizr

1-Organizr
On définit l'emplacement de la base de données "/var/www/organizr/" ainsi que le fuseau horaire, puis on clique sur "Sauvegarder l'emplacement".

2-Organizr
On définit le nom d'utilisateur qui sera administrateur avec son adresse mail et son mot de passe, enfin on clique sur "S'inscrire".

Maintenant à vous de configurer Organizr en fonction de vos goûts et de la manière que vous le souhaitez.

Voilà ce guide très long est désormais terminée 😀

Si j'ai de la motivation et du temps un conteneur Docker pourrais être créer pour une installation d'une t-elle solution plus rapidement et facilement. Ce qui me permettrait au passage de me former sur Docker.