Creation seedbox
- !*!*!*!*!*!*!
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