Différences entre les versions de « Creation seedbox »

De wiki mdd
Aller à la navigation Aller à la recherche
Ligne 4 : Ligne 4 :


Ce tutoriel a pour but d'expliquer comment installer une seedbox de zéro. Il fait volontairement le choix de certains outils et pas d'autres. Le but est de comprendre comment on installe certaines choses, de façon à pouvoir les appliquer à d'autres.<br>
Ce tutoriel a pour but d'expliquer comment installer une seedbox de zéro. Il fait volontairement le choix de certains outils et pas d'autres. Le but est de comprendre comment on installe certaines choses, de façon à pouvoir les appliquer à d'autres.<br>
Il existe de nombreux scripts qui peuvent tout faire à votre place. Je ne décourage pas l'utilisation de ces scripts, mais je conseille de comprendre pourquoi et comment il font les choses. Voyez donc ce tutoriel un peu comme un [http://www.linuxfromscratch.org/ linux from scratch], c'est bien d'installer une ditrib toute prête, mais c'est bien aussi de connaître un peu le moteur qu'il y a derrière ;)<br>
Toutes les parties ne sont pas obligatoires, mais si vous les passez, soyez sur de savoir pourquoi, ou comment contourner cette partie.<br>
Toutes les parties ne sont pas obligatoires, mais si vous les passez, soyez sur de savoir pourquoi, ou comment contourner cette partie.<br>
<br>
<br>

Version du 31 octobre 2019 à 15:32

    • !*!*!*!*!*!*!

BROUILLON

  • !*!*!*!*!*!

Ce tutoriel a pour but d'expliquer comment installer une seedbox de zéro. Il fait volontairement le choix de certains outils et pas d'autres. Le but est de comprendre comment on installe certaines choses, de façon à pouvoir les appliquer à d'autres.
Il existe de nombreux scripts qui peuvent tout faire à votre place. Je ne décourage pas l'utilisation de ces scripts, mais je conseille de comprendre pourquoi et comment il font les choses. Voyez donc ce tutoriel un peu comme un linux from scratch, c'est bien d'installer une ditrib toute prête, mais c'est bien aussi de connaître un peu le moteur qu'il y a derrière ;)
Toutes les parties ne sont pas obligatoires, mais si vous les passez, soyez sur de savoir pourquoi, ou comment contourner cette partie.

Ce tutoriel va aussi reprendre beaucoup de documentation déjà existante, inutile de réinventer la roue.

Prérequis

  • un serveur linux avec des accès root. Dans mon cas ce sera un serveur en Ubuntu 18.04, avec un user "steph" qui a le droit d'utiliser la commande sudo
  • des connaissances de base en administration linux (comment éditer un fichier, voir les logs, etc...
  • Un nom de domaine sur lequel vous avez la main. Il faudra créer une entrée dans votre nom de domaine pour votre serveur. Dans mon cas, mon serveur a l'adresse IP 1.2.3.4 et son nom sera seedbox.mondomaine.com. A terme, il faudra créer plusieurs autres enregistrements dns

Première sécurisation du système

ssh

Il est conseillé d'utiliser une clé ssh pour se connecter au lieu d'un password. Vous trouverez une documentation ici : https://doc.ubuntu-fr.org/ssh#authentification_par_un_systeme_de_cles_publiqueprivee

fail2ban

Fail2ban est un outil qui scrute les logs de sécurité, et qui va automatiquement bloquer les IP qui font des tentatives d'intrusion. La documentation pour l'installation et l'utilisation se trouve ici : https://mondedie.fr/d/5318-%5BTuto%5D-Securisation-&-Logs-V.3-%7Bnginx%7D/2
A ce niveau, ne mettez pas en place toute la sécurisation qui se trouve sur cette page, vous risqueriez de vous retrouver bloqués par la suite !

Création d'un utilisateur dédié

Afin de ne pas polluer ni le système ni le user principal, nous allons créer un utilisateur dédié (appelé "seed").

steph@op:~$ sudo adduser seed
Adding user `seed' ...
Adding new group `seed' (1001) ...
Adding new user `seed' (1001) with group `seed' ...
Creating home directory `/home/seed' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for seed
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] y

Ce user n'a pas besoin d'avoir les droits sudo/root.

Installation des premiers outils

docker

Docker va servir de base pour certains outils. Même si on pourrait lancer la plupart des outils via docker, on ne va le garder que pour quelques utilisations.
Pour ubuntu :

$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

(la doc debian se trouve ici : https://docs.docker.com/install/linux/docker-ce/debian/)
On va ajouter notre user (steph) et seed au groupe docker :

$ sudo usermod -aG docker steph
$ sudo usermod -aG docker seed

docker-compose

docker-compose est une surcouche de docker, qui permet de lancer des "groupes" de container plus facilement. Pour l'installer :

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Premier pas sur la seedbox

rtorrent

Le premier outil d'une seedbox est le client torrent, avec son frontend. Dans notre cas, nous allons utiliser rtorrent (client torrent en ligne de commande), et rutorrent (frontend web)

sudo apt install rtorrent screen

A partir de maintenant, nous allons passer sur le user seed

sudo su - seed

Nous allons créer le premier fichier de configuration de rtorrent : /home/seed/.rtorrent.rc

# Where rTorrent saves the downloaded files
directory = /home/seed/torrent/downloads
# Where rTorrent saves the session
session = /home/seed/torrent/.session
# Which ports rTorrent can use (Make sure to open them in your router)
port_range = 50000-50000
port_random = no
# Check the hash after the end of the download
check_hash = yes
# Enable DHT (for torrents without trackers)
dht = off
# Authorize UDP trackers
use_udp_trackers = yes
# Enable encryption when possible
encryption = allow_incoming,try_outgoing,enable_retry
# SCGI port, used to communicate with Flood
scgi_port = 127.0.0.1:5000

Il faut créer les répertoires

mkdir -p /home/seed/torrent/downloads
mkdir -p /home/seed/torrent/.session

On repasse sur notre user "steph" en tapant exit, puis on crée un fichier de démarrage :

sudo vi /etc/systemd/system/rtorrent.service
[Unit]
Description=rTorrent
After=network.target
[Service]
User=seed
Group=seed
Type=forking
KillMode=none
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
WorkingDirectory=%h
[Install]
WantedBy=default.target

Puis on active et on lance le service

sudo systemctl enable rtorrent
sudo systemctl start rtorrent

Pour vérifier qu'il tourne bien :

$ systemctl |grep rtorrent
rtorrent.service          loaded active running   rTorrent

rutorrent

Rutorrent est le client web qui permet de monitorer rtorrent. Pour l'installer, nous avons besoin d'un serveur web (nginx), mais que nous n'allons pas exposer sur le port habituel (qui est le 80). L'explication viendra par la suite.

sudo apt install git nginx