/ Seedbox

Guide - Installation de votre propre Seedbox

Prérequis

  • Debian 9
  • 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

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

Création des répertoires

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

Installation de Transmission

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

apt install -y transmission-daemon
service transmission-daemon stop
nano /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",

service transmission-daemon start

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
curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -

apt update && 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

apt install -y nginx php7.0-fpm

cd /etc/ssl/certs
openssl dhparam -out dhparam.pem 4096
cd /etc/nginx/
rm -rf nginx.conf
wget https://get.nexart.fr/upload/nginx.conf.txt
mv nginx.conf.txt nginx.conf
service php7.0-fpm restart && service nginx restart 

On installe Let's Encrypt pour l'obtention de certificats.

cd /opt
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt/
./letsencrypt-auto --help 

On récupère mon script facilitant la création d'un Virtualhost pour Nginx.

mkdir /scripts
cd /scripts/
wget https://get.nexart.fr/upload/Scripts/Nginx.sh
chmod +x Nginx.sh

On exécute le script pour créer le Virtualhost concernant la seedbox.

./Nginx.sh ajouter

Lors de l'exécution de ce script, ce dernier demandera le nom de domaine ou du sous-domaine ainsi le répertoire du site en question.

Installation de Docker

On ajoute la source permettant l'installation de Docker.

wget https://download.docker.com/linux/debian/gpg && 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.

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

Installation de Jackett, Sonarr et Radarr avec Docker

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

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

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

nano /etc/network/interfaces

auto ens180
iface ens180 inet static
        address XX.XXX.XXX.XXX
        netmask 255.255.255.252
        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.

crontab -e

@reboot cd /home/media && 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
git clone https://github.com/Tautulli/Tautulli.git
cd Tautulli
cd /opt/Tautulli
touch /etc/default/tautulli
adduser --system --no-create-home tautulli
chown tautulli:nogroup -R /opt/Tautulli
chmod +x /opt/Tautulli/init-scripts/init.ubuntu
cp /opt/Tautulli/init-scripts/init.ubuntu /etc/init.d/tautulli
update-rc.d tautulli defaults

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

service tautulli start

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

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

Création du service daemon

nano /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

systemctl daemon-reload && systemctl enable ombi.service

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

service ombi start

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 :

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

nano /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.0-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://127.0.0.1:9117/;
include          proxy_params;
}

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

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

# Plex
location /web {
proxy_pass https://127.0.0.1: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://127.0.0.1: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://127.0.01:9091;
}

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

# Ombi
location /ombi/ {
proxy_pass http://127.0.0.1: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 :

service nginx restart

Installation de Organizr

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

apt install -y sqlite sqlite3 php7.0-sqlite php7.0-curl php7.0-zip php-sqlite3

On récupère Organizr depuis Github

cd /var/www
git clone https://github.com/causefx/Organizr organizr
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.