Date actuelle : Dimanche - 21 Janvier -, 09:59 Bienvenue, Visiteur ! (ConnexionS'enregistrer)

Poster une réponse 
 
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Seedbox rutorrent + accès web aux fichiers
Auteur Message
Kirinenko Hors ligne
Grumeau des Alpes
*******

Administrateurs

Messages : 3'358
Inscription : 25 Oct. 2011

Anime préféré : One Piece
Manga préféré : GTO
Drama préféré : MBMH
Message : #1
Seedbox rutorrent + accès web aux fichiers

On va voir comment se monter un seedbox avec rutorrent sur un serveur dédié, on ajoutera quelques plugins et l'on aura un accès https aux différents fichiers pour pouvoir les télécharger. Cet accès sera soumis à identification ce qui fait que vous pourrez partager l'accès à d'autres personnes en leur créant un compte.

On commence par se prendre un petit serveur chez ovh ou online (ou ailleurs si vous voulez).

Pour commencer on installe debian dessus, et donc autant prendre la dernière version dispo :) Debian 8 Jessie

Note : si vous êtes chez online et que vous avez une dedibox possédant deux disques, vous aurez un soucis si vous ne voulez pas de raid et que vous voulez monter le second disque. Pour palier à ce problème, on peut suivre ces tutos :
https://mondedie.fr/viewtopic.php?id=6064 [archive : https://archive.is/oNlvd ]
http://www.it-connect.fr/debian-partitio...k-et-mkfs/ [archive : https://archive.is/f0uZP ]

On se connecte en ssh. On liste les disques dispo :
Code :
fdisk -l

On choisit le bon disque sur lequel il n'y a pas de partition:
Code :
fdisk /dev/sdb
(dans mon cas)

Maintenant voici la liste des commandes dispo :
d : destruction d'une partition
l : liste des types de partitions
m : Impression du menu en cours
n : création d'une nouvelle partition
p : Affichage des partitions
q : Sortie de fdisk sans sauvegarde des paramètres
t : Modification du type de partition
v : Vérification de la table des partitions
w : Sauvegarde des modifications et sortie de fdisk

Vous pouvez donc lister avec "p" pour être sûr que vous n'avez pas choisi le disque avec la partition boot et autre.

Vous pouvez faire "d" pour supprimer tout ce qui est sur cette partition s'il y avait quelque chose.

On crée une nouvelle partition avec "n", on choisit primaire avec "p" et l'on en crée qu'une "1" et avec les valeurs par défaut elle prendra tout l'espace disponible.

Vous pouvez quitter l'interface fdisk avec "q".

On formate maintenant cette partition en ext4 avec des blocs de 4096 octets :
Code :
mkfs.ext4 -b 4096 /dev/sdb

On peut maintenant monter ce disque là où l'on voulait et on commence par créer l'emplacement puis on le monte :
Code :
mkdir /home/disqueb
mount /dev/sdb /home/disqueb
Appelez le comme vous voulez, "disqueb" ou autre.

A ce point, si l'on redémarre, on perd le point de montage, afin de rendre cela persistant il faut le dire à fstab :
Code :
nano /etc/fstab

et dedans, vous ajoutez à la fin :
Code :
# Partitions montees en plus
/dev/sdb            /home/disqueb          ext4         defaults       0         2

Voilà, c'est tout pour la note sur online.



On commencer par se loguer sur notre machine via putty en utilisant le compte root.
On change le mot de passe root :
Code :
passwd

On met à jour le système :
Code :
apt-get update && apt-get upgrade -yy

Je préfère l'éditeur nano car j'ai débuté avec lui donc on l'installe :
Code :
apt-get install nano

On installe de quoi avoir son serveur à la bonne heure :
Code :
apt-get install ntp
/etc/init.d/ntp start

On reconfigure la zone pour l'heure :
Code :
sudo dpkg-reconfigure tzdata

Partie mise à jour auto :

Voir ce tuto : http://www.mangas-arigatou.org/forum/sho...p?tid=1299


Partie "sécurité" :

Voir ce tuto : http://www.mangas-arigatou.org/forum/sho...p?tid=1299


Partie accès aux fichiers :

Sources : https://www.atlantic.net/community/howto...-debian-8/ [archive : http://archive.is/7LKki ]
http://www.memoinfo.fr/configurer-serveu...i-ovh.html [archive : https://archive.is/j92rO ]
( https://www.skyminds.net/serveur-dedie-c...e-serveur/ )
https://wiki.gandi.net/fr/dns/zone/txt-record
https://documentation.online.net/fr/serv...box-online

On va voir maintenant comment accéder à des fichiers présents sur ce serveur via un navigateur web.

On commence par mettre en place apache :
Code :
cd /
apt-get install apache2 apache2-doc apache2-utils

Maintenant, lorsque vous tapez l'ip de votre serveur dans un navigateur web, vous obtenez la page par défaut d'apache.

On peut maintenant voir à créer des répertoires qui comporteront les fichiers qui seront donc listés.

Pour cela, vous commencez par créer le répertoire qui servira à contenir les fichiers :

Code :
cd /var/www
mkdir nom_du_repertoire

Puis pour tester le listing des fichiers, on crée un fichier texte de test :
Code :
nano nom_du_repertoire/test.txt

Dedans vous mettez ce que vous voulez et vous enregistrez.

Il faut maintenant dire à apache que l'on veut avoir directement ce répertoire comme page par défaut lorsque l'on rentre l'ip dans un navigateur. Pour cela, on édite le fichier "/etc/apache2/sites-available/000-default.conf" :
Code :
nano /etc/apache2/sites-available/000-default.conf

Et dedans vous modifiez la ligne concernant le mail de l'administrateur et le chemin du répertoire pour coller à ce que vous avez fait avant (ou vous virez le "/html" pour que le répertoire www soit directement listé) :

[Image: attachment.php?aid=6850]

On redémarre apache pour qu'il prenne en compte la modification :
Code :
service apache2 restart

Et maintenant lorsque vous visitez http://ip_du_serveur/ vous obtenez un listing avec votre fichier txt.

C'est bien beau mais l'ip d'un serveur c'est quand même pas ultra simple à retenir pour taper ça dans un navigateur. On va donc voir à raccrocher un nom de domaine à notre machine. Personnellement, j'ai pris mon nom de domaine chez Gandi : https://www.gandi.net/domaine :)

On commence par installer ce qu'il nous faudra :
Code :
apt-get install bind9 dnsutils

On modifie les paramètres de bind :
Code :
cd /
nano /etc/bind/named.conf.options

Et vous modifiez les lignes
Code :
listen-on-v6 { ::1; };
listen-on { 127.0.0.1; };
en
Code :
listen-on-v6 { any; };
listen-on { any; };
Si vous n'avez pas d'ipv6 de dispo (online peut-être), enlevez les lignes concernés.

Et vous ajoutez vers la fin du fichier :
Code :
# Ne pas transférer les informations des zones aux DNS secondaires
allow-transfer { none; };

# Ne pas autoriser la mise à jour des zones maîtres
allow-update { none; };

version none;
hostname none;
server-id none;

Maintenant, on récupère l'adresse ip du DNS secondaire lié à notre machine :
Code :
ping -c 1 ns.kimsufi.com
ou pour un serveur chez online
Code :
ping -c 1 nssec.online.net

Cela ping le serveur et dévoile ainsi son IP :

[Image: attachment.php?aid=6851]

On fait de même avec le serveur dns de gandi :
Code :
ping -c 1 ns6.gandi.net

On édite maintenant un autre fichier :
Code :
nano /etc/bind/named.conf.local

Dedans on ajoute :
Code :
zone "domain.tld" IN {

        # Zone de type maître
        type master;

        # Fichier de zone
        file "/etc/bind/db.domain.tld";

        # On autorise le transfert de la zone aux serveurs DNS secondaires
        allow-transfer { 217.70.177.40; 213.186.33.199; 127.0.0.1; ::1; };

        # On autorise tout le monde à envoyer des requêtes vers cette zone
        allow-query { any; };

        # Prévenir les serveurs DNS secondaires qu'un changement a été effectué dans la zone maître
        notify yes;
};
Note : Il faut remplacer domaine.tld par votre nom de domaine, tout comme l'ip des DNS.

Puis on crée le fichier "db.domaine.tld" :
Code :
nano /etc/bind/db.domaine.tld

Et dedans on met :
Code :
; ZONE : domain.tld
; ------------------------------------------------------------------
$TTL 7200

@       IN      SOA    ns######.ip-92-124-156.eu. hostmaster.domain.tld. (
                                        2016022001 ; Serial
                                        14400      ; Refresh
                                        3600       ; Retry
                                        1209600    ; Expire - 1 week
                                        86400 )    ; Minimum

; NAMESERVERS

@                   IN                NS                   ns######.ip-92-124-156.eu.
@                   IN                NS                   ns6.gandi.net.
@                   IN                NS                   ns.kimsufi.com.

; Enregistrements A/AAAA

@                   IN                A                    IPv4 de votre serveur
@                   IN                AAAA                 IPv6 de votre serveur

hostname            IN                A                    IPv4 de votre serveur
hostname            IN                AAAA                 IPv6 de votre serveur

; Sous-domaines
www                 IN                CNAME                hostname

Note : Il faut changer les "domaine.tld" en "votre-nom-de-domaine", le "ns######.ip-92-124-156.eu" doit correspondre au votre et "xx.xx.xx.xx" doit être l'ip de votre machine (dispo via l'amin web de kimsufi).
Le serial est composé de l'année, le mois, le jour et le numéro de la version, à incrémenter à chaque modif !!!


On modifie le fichier resolv.conf
Code :
nano /etc/resolv.conf
et on ajoute la ligne suivante dedans :
Code :
nameserver 127.0.0.1

Pour vérifier que c'est bien paramétré, on lance un petit test :
Code :
cd /etc/bind/
named-checkconf -z
Et on vérifie aussi le fichier de zone :
Code :
named-checkzone domaine.tld db.domaine.tld

Et si c'est "OK" alors tout roule et on relance bind :
Code :
service bind9 reload
ou
Code :
service bind9 restart

On va autoriser les requêtes DNS dans iptables :
Code :
nano /etc/init.d/iptablesrules

Et avant la dernière ligne vous ajoutez les suivantes :
Code :
$SERVER_IP="ip_de_votre_serveur"
iptables -A INPUT -p udp -s 0/0 --sport 1024:65535 -d $SERVER_IP --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -s $SERVER_IP --sport 53 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -s 0/0 --sport 53 -d $SERVER_IP --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -s $SERVER_IP --sport 53 -d 0/0 --dport 53 -m state --state ESTABLISHED -j ACCEPT
$DNS2_IP="ip_dns_secondaire_kimsufi"
iptables -A INPUT -p tcp -s $DNS2_IP --sport 1024:65535 -d $SERVER_IP --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s $SERVER_IP --sport 53 -d $DNS2_IP --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
$DNS3_IP="ip_dns_secondaire_gandi"
iptables -A INPUT -p tcp -s $DNS3_IP --sport 1024:65535 -d $SERVER_IP --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s $SERVER_IP --sport 53 -d $DNS3_IP --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
Ou vous remplacez directement les valeurs dans les lignes iptables.

Pour un serveur chez Online, afin d'ajouter un serveur DNS secondaire, commencez par ouvrir complètement le port 53 avant de mettre des restrictions :
Code :
#DNS 53 open
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT


Vous mettez ces nouvelles règles en place :
Code :
/etc/init.d/iptablesrules

On se connecte donc à son compte Gandi, on va voir ses domaines, on sélectionne celui qui nous intéresse et dans la liste déroulante en-dessous, on sélectionne "Changer/ modifier les dns" :

[Image: attachment.php?aid=6852]

En DNS1 on rentre le dns principal associé à notre serveur, cette information est donnée sur la page principal du serveur kimsufi que vous avez lorsque vous êtes logué sur l'interface d'adminitration web sous la dénomination "Reverse". Et dans le champ secondaire, on met "ns6.gandi.net" et "ns.kimsufi.com" et vous validez.

[Image: attachment.php?aid=6853]

Maintenant on associe ce nom de domaine à notre serveur. Rendez vous dans l'interface d'administration web de votre kimsufi, vous cliquez sur l'onglet "DNS" et cela vous emmène dans la partie des DNS secondaire qui doit donc être vide pour le moment. On va alors en créer un "Ajouter un DNS secondaire".

Dans le champ "Domaine" vous renseignez le domaine de chez Gandi.
Bloc D'IP on sélectionne le seul choix et un bloc IP vient se rajouter.

Vous voyez maintenant que dans un cadre en bas il est écrit un truc du genre :
Avant de continuer, vous devez rajouter un champ de type TXT dans la zone DNS du domaine "domaine_chez_gandi.tld", avec le sous-domaine ownercheck et la valeur suivante : 64gt23gt25.

Vous retournez donc sur votre serveur et l'on va ajouter ce champ à notre fichier zone :
Code :
nano /etc/bind/db.domaine.tld

Et à la fin du fichier, vous mettez :
Code :
ownercheck           IN              TXT             "64gt23gt25"

On enregistre et vous redémarrez bind :
Code :
service bind9 restart

De là, vous devriez pouvoir mettre ok sur l'interface kimsufi et le domaine devrait être associé à votre serveur :)

Voilà, maintenant il faut attendre la propagation DNS, entre quelques heures à 2 jours :)
Au cas où, voici un site qui permet de faire quelques tests : http://www.kloth.net/services/dig.php


En attendant, on va voir comment styliser l'indexation des dossiers et fichiers. Pour cela, on va essayer de ne pas utiliser de script externe mais de s'appuyer sur ce qu'apache nous propose.

Source : https://perishablepress.com/better-defau...-htaccess/ [archive : https://archive.is/cYwIZ ]

Pour pouvoir observer l'évolution de l'affichage, on peut envoyer par ftp différents fichiers et dossiers pour voir les extensions et autres que vous utiliserez.
Note : Avec les réglages actuels, vous ne pourrez uploader de fichiers dans le dossier que vous avez créé auparavant. En permettant la connexion en root sur ssh, vous pourrez utiliser un client ftp pour vous connecter en SFTP, genre WinSCP.

Afin de pouvoir utiliser un fichier htaccess pour pouvoir réglementer les accès, on doit d'abord activer un module d'apache :
Code :
a2enmod rewrite

puis comme spécifié, on redémarre apache :
Code :
service apache2 restart

Ensuite on doit éditer le fichier suivant :
Code :
nano /etc/apache2/apache2.conf

Vous allez à la portion suivante :
Code :
<Directory /var/www/>
         Options Indexes FollowSymLinks
         AllowOverride None
         Require all granted
</Directory>

Et là dedans, vous changez "AllowOverride None" en "AllowOverride All"

On redémarre apache :
Code :
service apache2 restart

Et maintenant, vous pouvez utiliser les fichiers htaccess. On commence par en mettre un dans le dossier /var/www, et dans ce fichier ".htaccess", on met :
Code :
# DISABLE DIRECTORY VIEWS
Options -Indexes

Avec cela, les dossiers et sous-dossiers dans www ne seront pas indexés par défaut. Ce qui nous permet ensuite de pouvoir régler les permissions comme l'on veut.
Ainsi, dans le dossier qu'on a précédemment créé "nom_du_repertoire", vous mettez aussi un fichier htaccess qui contient :
Code :
# DISABLE DIRECTORY VIEWS
Options +Indexes

Et là, ce dossier sera de nouveau listé en allant sur http://nom_de_domaine.tld/nom_du_repertoire

Maintenant, on va protéger ce second fichier htaccess, celui qui est présent dans le dossier listé, pour cela, vous rajoutez dedans les lignes suivantes :
Code :
# STRONG HTACCESS PROTECTION
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
</Files>


On va passer au style de la page web. Apache nous permet de spécifier un fichier pour customiser l'en-tête et le pied de page. Il est aussi possible de modifier le style des icones utilisées.

Pour faire dans la simplicité et parce qu'il existe un truc tout prêt tout beau, je vous conseille d'utiliser apaxy :
http://adamwhitcroft.com/apaxy/

A vous ensuite de le peaufiner et de le personnaliser.


On va maintenant mettre en place un certificat pour le https en utilisant letsencrypt : https://letsencrypt.org/
C'est encore en beta public donc les certificats ne sont valables que 3 mois, il faudra donc les renouveler avant qu'ils ne soient plus bon.
Je suis ce tuto : https://www.digitalocean.com/community/t...untu-14-04 [archive : https://archive.is/4Ke42 ]

On commence par mettre à jour la liste des paquets :
Code :
apt-get update

On installe git :
Code :
apt-get install git

On copie le dépôt de letsecrypt dans le dossier opt :
Code :
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

On va dans le dossier créé :
Code :
cd /opt/letsencrypt

On crée des certificats pour notre domaine et le sous-domaine www :
Code :
./letsencrypt-auto --apache -d example.com -d www.example.com

Le premier domaine doit correspondre au domaine racine. Vous devrez renseigner un email valide et lire les conditions générales d'utilisation.

Afin de renouveler le certificat, il faudra utiliser la commande suivante :
Code :
./letsencrypt-auto certonly --apache --renew-by-default -d example.com -d www.example.com


A partir de là, on peut se connecter en https sur notre site via le nom de domaine associé. Par contre, je pouvais toujours me connecter en http tout simple. Afin d'éviter cela, je vais interdire les demandes http :
Code :
nano /etc/apache2/sites-enabled/000-default.conf

Et ajouter dedans :
Code :
<Directory /var/www/>
    SSLRequireSSL
</Directory>

Et voilà, connexion refusée en http mais autorisée en https.

Note : Durant la mise en place de Let's Encrypt, vous pouvez spécifier de faire de la redirection automatique sur l'https et ne pas laisser les gens naviguer en http.

Maintenant, on va installer notre client torrent.
Je me sers de ces tutos : https://terminal28.com/how-to-install-an...-8-jessie/ [archive : http://archive.is/jJyNd ]
https://mondedie.fr/viewtopic.php?id=5302 [archive : http://archive.is/4L2CX ]
http://www.htpcguides.com/install-config...on-debian/ [archive : https://archive.is/tM8tK ]
http://www.adminsehow.com/2013/11/instal...-7-wheezy/ [archive : https://archive.is/XA6VS ]
https://github.com/Novik/ruTorrent/wiki/Plugins


On a déjà notre utilisateur que l'on va utiliser : user1 et son home est dans /home/user1

On met à jour la machine puis on va installer des dépendances :
Code :
apt-get update
apt-get upgrade
apt-get install subversion build-essential automake libtool libcppunit-dev libcurl3-dev
apt-get install libsigc++-2.0-dev libcppunit-dev unzip unrar-free curl libncurses-dev
apt-get install apache2 apache2-utils php5 php5-cli php5-curl php-xml-rss php5-xmlrpc
apt-get install php5-sqlite sqlite libapache2-mod-php5 libapache2-mod-xsendfile

On active le module SCGI :
Code :
apt-get install libapache2-mod-scgi
ln -s /etc/apache2/mods-available/scgi.load /etc/apache2/mods-enabled/scgi.load
/etc/init.d/apache2 restart

On installe XMLRPC :
Code :
cd /tmp
svn checkout http://svn.code.sf.net/p/xmlrpc-c/code/stable xmlrpc-c
cd xmlrpc-c/
./configure
make
make install

On installe libtorrent 0.13.6 :
Code :
cd /tmp
git clone https://github.com/rakshasa/libtorrent.git
cd libtorrent
git checkout 0.13.6
./autogen.sh
./configure
make
make install

Note : si soucis avec zlib, il peut être utile d'installer "zlib1g-dev".

On installe rTorrent 0.9.6 :
Code :
cd /tmp
git clone https://github.com/rakshasa/rtorrent.git
cd rtorrent
git checkout 0.9.6
./autogen.sh
./configure --with-xmlrpc-c
make
make install

On actualise les liens symboliques pour rtorrent :
Code :
ldconfig

On installe rutorrent :
Code :
cd /var/www
git clone https://github.com/Novik/ruTorrent.git rutorrent

On installe le plugin pausewebui :
Code :
cd /var/www/rutorrent/plugins/
svn checkout http://rutorrent-pausewebui.googlecode.com/svn/trunk/ pausewebui

On met les bons droits aux fichiers :
Code :
chown -R www-data:www-data /var/www/rutorrent

On configure le plugin create :
Code :
nano /var/www/rutorrent/plugins/create/conf.php

on va modifier les lignes ci-dessous :
Code :
$useExternal = 'buildtorrent';
$pathToCreatetorrent = '/usr/bin/buildtorrent';

On crée quelques répertoires pour l'utilisateur user1 qui serviront à rtorrent:
Code :
mkdir --parents /home/user1/{torrents,watch,.session}

On créé le fichier de configuration de rTorrent :
Code :
nano /home/user1/.rtorrent.rc

Dedans vous mettez :
Code :
scgi_port = 127.0.0.1:5000
encoding_list = UTF-8
port_range = 59764-59764
port_random = no
check_hash = no
directory = /home/user1/torrents
session = /home/user1/.session
encryption = allow_incoming, try_outgoing, enable_retry
schedule = watch_directory,1,1,"load_start=/home/user1/watch/*.torrent"
schedule = untied_directory,5,5,"stop_untied=/home/user1/watch/*.torrent"
use_udp_trackers = yes
dht = off
peer_exchange = no
#min_peers = 40
#max_peers = 100
# Maximum number of simultanious uploads per torrent.
max_uploads = 50
# Global upload and download rate in KiB. "0" for unlimited.
download_rate = 0
upload_rate = 0
max_uploads = 50
execute = {sh,-c,/usr/bin/php /var/www/rutorrent/php/initplugins.php <username> &}
schedule = espace_disque_insuffisant,1,30,close_low_diskspace=500M
# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
check_hash = yes
# Set whetever the client should try to connect to UDP trackers.
use_udp_trackers = yes
# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
#
dht = auto
# UDP port to use for DHT.
#
dht_port = 6899

Source d'un fichier de config : (Cliquer pour cacher)
On va donner les bonnes permissions aux dossiers:
Code :
chown --recursive user1:user1 /home/user1
chown root:root /home/user1
chmod 755 /home/user1

On met un accès par mot de passe pour l'interface web et c'est donc l'occasion de créer un utilisateur :
Code :
cd /var/www/rutorrent
htpasswd -c /var/www/rutorrent/.htpasswd username

On édite le htaccess pour prendre en compte cela :
Code :
nano /var/www/rutorrent/.htaccess

et vous devriez voir cela dedans :
Code :
AuthType Basic
AuthName "rutorrent"
AuthUserFile  "/var/www/rutorrent/.htpasswd"
require valid-user

**Attention au "T" majuscule qui peut être présent à changer en minuscule !**

On configure l'accès à rutorrent :
Code :
nano /etc/apache2/sites-available/rutorrent.conf

dedans vous mettez :
Code :
# ruTorrent
#===========================================================================
<IfModule alias_module>
Alias /rutorrent        /var/www/rutorrent/
<Directory /var/www/rutorrent/>
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride None
Require all granted
</Directory>
</IfModule>
#===========================================================================

On active l'interface web :
Code :
ln -s /etc/apache2/sites-available/rutorrent.conf /etc/apache2/sites-enabled/rutorrent.conf

On active deux modules d'apache :
Code :
a2enmod auth_digest
a2enmod authn_file

On redémarre apache pour prendre en compte les modifs :
Code :
/etc/init.d/apache2 restart


On met en place du mot de passe pour SCGI :
Code :
mkdir -p /etc/apache2/passwords-{available,enabled}
cd /etc/apache2/passwords-available
htpasswd -c rtorrentscgi.conf username
cd ../passwords-enabled
ln -s ../passwords-available/rtorrentscgi.conf

et on rentre les informations suivantes dans ce fichier de conf :
Code :
nano /etc/apache2/sites-available/rtorrentscgi.conf

Code :
#rTorrent SCGI Password Location
#===========================================================================
        <LocationMatch "/RPC2">
                AuthType        Basic
                AuthName        "username"
                AuthUserFile    /etc/apache2/passwords-enabled/rtorrentscgi.conf
                Require         valid-user
                BrowserMatch    "MSIE"  AuthDigestEnableQueryStringHack=On
                Require ip 127.0.0.1
        </LocationMatch>
#===========================================================================

# SCGI PORT
#===========================================================================

#LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so
SCGIMount /RPC2 127.0.0.1:5000

#===========================================================================

On active cette config :
Code :
ln -s /etc/apache2/sites-available/rtorrentscgi.conf /etc/apache2/sites-enabled/rtorrentscgi.conf

On redémarre apache :
Code :
/etc/init.d/apache2 restart

On va ajouter des règles dans iptables pour que rtorrent puisse communiquer :
Code :
nano /etc/init.d/iptablesrules

et dedans on ajoute un peu avant la fin :
Code :
# Allows all Connections from localhost (necessary for scgi port 5000 of rtorrent):
iptables -A INPUT -s 127.0.0.1 -p tcp -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -p udp -j ACCEPT
# Rtorrent
iptables -t filter -A OUTPUT -p tcp --dport 59764 -j ACCEPT  
iptables -t filter -A INPUT -p tcp --dport 59764 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 59764 -j ACCEPT  
iptables -t filter -A INPUT -p udp --dport 59764 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 6899 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 6899 -j ACCEPT

On active ces règles :
Code :
/etc/init.d/iptablesrules

On installe screen :
Code :
apt-get install screen

On crée un répertoire de configuration pour notre utilisateur de rutorrent :
Code :
mkdir /var/www/rutorrent/conf/users/user1

On édite le fichier de configuration correspondant :
Code :
nano /var/www/rutorrent/conf/users/user1/config.php

et dedans vous mettez :
Code :
$pathToExternals['curl'] = '/usr/bin/curl';
$topDirectory = '/home/<username>';
$scgi_port = 500x;
$scgi_host = '127.0.0.1';
$XMLRPCMountPoint = '/<USERNAME>';
remplacez <username> et mettez le bon numéro de port pour scgi.

On s'occupe maintenant des plugins :
Code :
touch /var/www/rutorrent/conf/users/user1/plugins.ini
nano /var/www/rutorrent/conf/users/user1/plugins.ini

dedans on met :
Code :
[default]
enabled = user-defined
canChangeToolbar = yes
canChangeMenu = yes
canChangeOptions = yes
canChangeTabs = yes
canChangeColumns = yes
canChangeStatusBar = yes
canChangeCategory = yes
canBeShutdowned = yes
[ipad]
enabled = no
[httprpc]
enabled = no
[retrackers]
enabled = no
[rpc]
enabled = no
[rutracker_check]
enabled = no

On met en place un démarrage automatique de rtorrent au reboot :
Code :
cd /etc/init.d/
wget --output-document=user1-rtorrent https://gist.githubusercontent.com/Magicalex/8850ac8539d89af2f21f/raw/923ee22f9300bd3a186704b17e3b88a7583756d9/gistfile1.sh
chmod +x user1-rtorrent

On édite ce script afin de le faire correspondre à notre utilisateur :
Code :
nano /etc/init.d/user1-rtorrent
et dedans vous changez tous les <username> en user1 (y'en a 2).

On rend le script exécutable :
Code :
chmod +x /etc/init.d/user1-rtorrent

On met le lancement de ce script au démarrage de la machine :
Code :
update-rc.d user1-rtorrent defaults

On vérifie les droits des fichiers :
Code :
chown -R www-data:www-data /var/www/rutorrent

On peut maintenant lancer rtorrent pour notre utilisateur :
Code :
service user1-rtorrent start

Afin d'avoir le listing de nos téléchargements via rutorrent dans notre interface web, on va faire un lien symbolique vers le dossier de réception des fichiers :
Code :
ln -s /home/user1/torrents /var/www/nom_du_repertoire/fichiers


Partie design page web listing fichiers :

Si vous souhaitez donner la possibilité aux gens de télécharger les dossiers ou plusieurs fichiers d'un coup, vous pouvez utiliser h5ai : https://larsjung.de/h5ai/

Il faut au préalable installe php5.5+ :
Code :
apt-get -y install php5 libapache2-mod-php5
service apache2 restart

Vérifiez que la dernière version de h5ai est la 0.28.1 sinon il faudra changer le lien en conséquence dans les lignes de code suivantes : http://larsjung.de/h5ai/ :
Code :
cd /var/www
wget http://release.larsjung.de/h5ai/h5ai-0.28.1.zip
apt-get install unzip
unzip ./h5ai-0.28.1.zip
rm ./h5ai-0.28.1.zip

Ensuite on doit éditer le fichier suivant :
Code :
nano /etc/apache2/apache2.conf

Vous allez à la portion suivante :
Code :
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

Et vous ajoutez ceci :
Code :
DirectoryIndex  index.html  index.php  /_h5ai/public/index.php

Cela devient donc :
Code :
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
        DirectoryIndex  index.html  index.php  /_h5ai/public/index.php
</Directory>

Maintenant, vous allez sur https://domain.tld/_h5ai/public/index.php avec votre navigateur.

On vous dit qu'il n'y a pas de mot de passe, vous allez donc en créer un et le rentrer dans le fichier mentionné.
Le site suivant est utile dans ce cas : http://md5hashing.net/hashing/sha512
Code :
nano /var/www/_h5ai/private/conf/options.json
Et donc au début du fichier, vous remplacez la valeur de "passhash" par celle donné via le site précédent au sha512, puis vous enregistrez ce fichier.

Vous rafraîchissez la page et vous ne voyez plus l'avertissement concernant le mot de passe. On le rentre dans le champ et hop.

On a besoin d'avoir le "Public Cache directory" d'activé, pour cela, rentrezla commande suivante :
Code :
chmod o+w /var/www/_h5ai/public/cache/

Si vous rafraîchissez la page, vous voyez que c'est passé à "yes".

Les possibilités de configuration se retrouve dans le fichier : "_h5ai/private/conf/options.json"
Par exemple :
Code :
"download": {
        "enabled": true,
        "type": "php-tar",
        "packageName": null,
        "alwaysVisible": false
    },

qu'on peut passer avec "type": "shell-zip" pour que les gens aient du zip au lieu du tar quand ils téléchargent un dossier ou plusieurs fichiers.
Code :
"foldersize": {
        "enabled": false,
        "type": "php"
    },
en
Code :
"foldersize": {
        "enabled": true,
        "type": "shell-du"
    },
pour avoir la taille des fichiers d'affichée.

Il faut avoir au préalable installé le package zip :
Code :
apt-get install zip

Code :
"l10n": {
        "enabled": true,
        "lang": "en",
        "useBrowserLang": true
    },
passez "lang": "en" en "lang": "fr" pour passer des trucs en français.

Si vous changez les images dans "_h5ai/public/images/favicon" vous pouvez alors modifier votre favicon ;-)
Vous pouvez utiliser le site suivant pour vous aider : http://www.icoconverter.com/


Pour pouvoir mettre un accès restreint par mot de passe, vous modifier le fichier "/etc/apache2/apache2.conf" et dans la zone <Directory /var/www/> vous passez le "AllowOverride None" en "AllowOverride All".

Maintenant, en créant un fichier ".htaccess" avec les lignes suivantes dedans :
Code :
AuthType Basic
AuthName "Acces limité, rentrez le mot de passe."
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwords
Require valid-user

vous allez pouvoir restreindre l’accès à certaines personnes.

Pour créer les comptes pouvant accéder à la zone comportant ce fichier htaccess, vous faîtes :
Code :
htpasswd -c /usr/local/apache/passwords nom_d'_utilisateur
et vous rentrez le mot de passe associé.

Pour créer un nouveau compte en plus il faut faire :
Code :
htpasswd /usr/local/apache/passwords nouveau_compte

Pour en supprimer un, il faut juste supprimer la ligne correspondante dans le fichier "/usr/local/apache/passwords".


Partie logs visiteurs :

Si vous voulez pouvoir visualiser vos visiteurs vous pouvez utiliser goaccess (http://goaccess.io) qui a l'air pas mal du tout.
Pour la suite j'ai suivi la FAQ de goaccess : http://goaccess.io/faq
Pour un tuto plus détaillé : https://www.digitalocean.com/community/t...n-debian-7 [archive : https://archive.is/5qYHN ]

On l'intalle :
Code :
apt-get install goaccess

On configure le format de la date et de l'heure :
Code :
nano /etc/goaccess.conf

et vous décommentez vers le début :
Code :
#Any Apache log date format
date-format %d/%b/%Y
et
#Common Log Format (CLF)
log-format %h %^[%d:%^] "%r" %s %b

On peut maintenant générer notre premier rapport en html histoire de pouvoir le visualiser confortablement sur notre navigateur web, pour cela on fait :
Code :
mkdir /var/www/visiteurs
pour avoir notre dossier de stockage, puis :
Code :
goaccess -f /var/log/apache2/access.log -a > /var/www/visiteurs/report.html

Afin de mettre à jour le fichier :
Code :
cat /var/log/apache2/access.log | goaccess -a > /var/www/visiteurs/report.html

De mon côté, je n'avais pas les sites référants (là d'où la personne arrive), j'ai donc modifié quelques trucs :
Code :
nano /etc/apache2/apache2.conf

et j'ai modifié la ligne :
Code :
LogFormat "%h %l %u %t \"%r\" %>s %O" common
en
Code :
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" common

on redémarre apache :
Code :
service apache2 restart

Puis :
Code :
nano /etc/goaccess.conf

Et j'ai recommenté la ligne :
Code :
#Common Log Format (CLF)
log-format %h %^[%d:%^] "%r" %s %b

Pour décommenter celle là :
Code :
#NCSA Combined Log Format
log-format %h %^[%d:%^] "%r" %s %b "%R" "%u"

Des infos sur la rotation des logs d'apache : https://serversforhackers.com/managing-l...-logrotate [archive : https://archive.is/WqlZu ]

Afin de compléter les logs, vous pouvez soit ajouter la commande suivant dans le fichier "/etc/cron.daily/logrotate"
Code :
cat /var/log/apache2/access.log | goaccess -a > /var/www/visiteurs/report.html

dans
Code :
prerotate
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
            run-parts /etc/logrotate.d/httpd-prerotate; \
        fi; \
        cat /var/log/apache2/access.log | goaccess -a > /var/www/visiteurs/report.html
endscript

ou alors vous modifier la durée du log en "weekly" et "rotate 52" pour garder des fichiers gzippés sur un an complet que goaccess peut lire avec la commande suivante :
Code :
zcat -f /var/log/apache2/access.log* | goaccess -a > /var/www/visiteurs/report.html


Partie indexation par moteurs de recherche :

Maintenant, on va dire non à l'indexation du site :
Code :
nano /var/www/robot.txt

et dedans vous rajoutez :
Code :
User-agent: *
Disallow: /


Voilà, ce tuto est fini, si vous avez des questions, n'hésitez pas :)


Pièce(s) jointe(s) Miniature(s)
               

Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Samedi - 19 Mars - 16:15
WWW Chercher Citer
Kirinenko Hors ligne
Grumeau des Alpes
*******

Administrateurs

Messages : 3'358
Inscription : 25 Oct. 2011

Anime préféré : One Piece
Manga préféré : GTO
Drama préféré : MBMH
Message : #2
RE: Seedbox rutorrent + accès web aux fichiers

Si l'on obtient l'erreur suivante au bout d'un moment après avoir lancé un grand nombre de torrents :
Bad response from server: (500 [error,list])
et que l'on a plus l'affichage des torrents dans l'interface web mais qu'on a quand même accès à cette interface, il faut augmenter la mémoire de php :
Code :
nano /etc/php5/apache2/php.ini

et modifier la valeur de
Code :
memory_limit = 128M
en
Code :
memory_limit = 2048M

et pour finir, un petit :
Code :
service apache2 restart

Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
(Ce message a été modifié le : Mercredi - 13 Juillet - 20:16 par Kirinenko.)
Dimanche - 19 Juin - 11:02
WWW Chercher Citer
Kirinenko Hors ligne
Grumeau des Alpes
*******

Administrateurs

Messages : 3'358
Inscription : 25 Oct. 2011

Anime préféré : One Piece
Manga préféré : GTO
Drama préféré : MBMH
Message : #3
RE: Seedbox rutorrent + accès web aux fichiers

Je viens de voir que le dossier /tmp était blindé de fichiers du type "rutorrent-trafic-xxxx". Cela vient du plugin trafic qui permet de visualiser le traffic selon les trackers à la semaine, au mois et à l'année. Comme je m'en tape un peu, on peut déactiver ce plugin qui foutait un peu de bordel quand même du coup.
Pour cela, éditer le fichier "/var/www/rutorrent/conf/plugins.ini" et dedans vous rajoutez les lignes suivantes :
Code :
[trafic]
enabled = no

Il ne reste plus qu'à relancer rtorrent avec la commande
Code :
service user-rtorrent restart
(changez user pour le nom de votre utilisateur rtorrent)

Et on peut supprimer tous ces fichiers dans tmp
Code :
rm -f /tmp/rutorrent-trafic-*

Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Jeudi - 27 Octobre - 12:40
WWW Chercher Citer
Poster une réponse 


Aller à :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)