TUTORIAL instalación rtorrent+rutorrent en raspian o armbian.
Para una correcta instalación y funcionamiento del mismo, recomiendo hacer todo el proceso como usuario ROOT.
ACTUALIZACIÓN DE PAQUETES Y REPOSITORIOS
Comenzamos actualizando repositiorios y paquetes.
Código: Seleccionar todo
apt-get update
apt-get upgradeVamos a instalar los paquetes y dependencias necesarias para rtorrent y para rutorrent.
Código: Seleccionar todo
apt-get install automake libcppunit-dev libtool build-essential pkg-config libssl-dev libcurl4-openssl-dev libsigc++-2.0-dev libncurses5-dev screen subversion apache2-utils curl git unzip unrar-free zip buildtorrentEditamos el fichero sources.list
Código: Seleccionar todo
nano /etc/apt/sources.listCódigo: Seleccionar todo
deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpiCódigo: Seleccionar todo
nano /etc/apt/preferencesCódigo: Seleccionar todo
Package: *
Pin: release n=stretch
Pin-Priority: 100
Código: Seleccionar todo
apt-get updateCódigo: Seleccionar todo
apt-get install -t stretch nginx
apt-get install-t stretch php7.0 php7.0-fpm php7.0-cli php7.0-curl php7.0-geoipNOTA: Estos 3 pasos, tardarán más o menos en función de la raspi que utilizemos, en mi caso, en una raspi b+ tarda 30-40 mins, en las orange o en una raspi 3, tarda 10-15 minutos.
Código: Seleccionar todo
mkdir install
cd installCódigo: Seleccionar todo
svn checkout http://svn.code.sf.net/p/xmlrpc-c/code/stable xmlrpc-c
cd xmlrpc-c/
./configure
make
make installVolvemos a la carpeta install, Descargamos y compilamos libtorrent
Código: Seleccionar todo
cd
cd install
git clone https://github.com/rakshasa/libtorrent.git
cd libtorrent
git checkout 0.13.6
./autogen.sh
./configure
make
make installVolvemos a la carpeta install, Descargamos y compilamos rtorrent
Código: Seleccionar todo
cd
cd install
git clone https://github.com/rakshasa/rtorrent.git
cd rtorrent
git checkout 0.9.6
./autogen.sh
./configure --with-xmlrpc-c
make
make install
ldconfig
INSTALACIÓN DE RUTORRENT
Descargamos rutorrent y sus plugins del repositorio oficial.
Código: Seleccionar todo
cd /var/www
git clone https://github.com/Novik/ruTorrent.git rutorrentINSTALACIÓN DEL PLUGIN rRUTORRENT MOBILE
Código: Seleccionar todo
cd /var/www/rutorrent/plugins/
git clone https://github.com/xombiemp/rutorrentMobile.git mobileCódigo: Seleccionar todo
cd /var/www/rutorrent/plugins/
git clone https://github.com/exrat/filemanager
chown -R www-data:www-data /var/www/rutorrentCódigo: Seleccionar todo
nano/var/www/rutorrent/plugins/create/conf.phpCódigo: Seleccionar todo
$useExternal = 'buildtorrent';
$pathToCreatetorrent = '/usr/bin/buildtorrent';Editamos el fichero
Código: Seleccionar todo
/var/www/rutorrent/plugins/filemanager/conf.phpCódigo: Seleccionar todo
$pathToExternals['rar'] = '';
$pathToExternals['zip'] = '';
$pathToExternals['unzip'] = '';
$pathToExternals['tar'] = '';
$pathToExternals['gzip'] = '';
$pathToExternals['bzip2'] = '';Código: Seleccionar todo
$pathToExternals['rar'] = '/usr/bin/unrar-free';
$pathToExternals['zip'] = '/usr/bin/zip';
$pathToExternals['unzip'] = '/usr/bin/unzip';
$pathToExternals['tar'] = '/bin/tar';
$pathToExternals['gzip'] = '/bin/gzip';
$pathToExternals['bzip2'] = '/bin/bzip2';Editamos el fichero:
Código: Seleccionar todo
nano /etc/php/7.0/fpm/php.iniCódigo: Seleccionar todo
upload_max_filesize = 8M
date.timezone = Europe/MadridCódigo: Seleccionar todo
service php7.0-fpm restartCreamos las carpetas y el fichero de contraseñas de acceso a la interfaz web:
Código: Seleccionar todo
mkdir /etc/nginx/passwd
mkdir /etc/nginx/ssl
touch /etc/nginx/passwd/rutorrent_passwdCódigo: Seleccionar todo
rm /etc/nginx/nginx.conf
nano /etc/nginx/nginx.confCódigo: Seleccionar todo
user www-data;
worker_processes auto;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
use epoll; # gestionnaire d'évènements epoll (kernel 2.6+)
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log combined;
error_log /var/log/nginx/error.log error;
sendfile on;
keepalive_timeout 15;
keepalive_disable msie6;
keepalive_requests 100;
tcp_nopush on;
tcp_nodelay off;
server_tokens off;
gzip on;
gzip_comp_level 5;
gzip_min_length 512;
gzip_buffers 4 8k;
gzip_proxied any;
gzip_vary on;
gzip_disable "msie6";
gzip_types
text/css
text/javascript
text/xml
text/plain
text/x-component
application/javascript
application/x-javascript
application/json
application/xml
application/rss+xml
application/vnd.ms-fontobject
font/truetype
font/opentype
image/svg+xml;
include /etc/nginx/sites-enabled/*.conf;
}Borramos todas las configuraciones existentes
Código: Seleccionar todo
rm /etc/nginx/sites-enabled/*Código: Seleccionar todo
nano /etc/nginx/sites-enabled/seedbox.confCódigo: Seleccionar todo
server {
listen 80 default_server;
server_name _;
charset utf-8;
index index.html index.php;
client_max_body_size 10M;
access_log /var/log/nginx/rutorrent-access.log combined;
error_log /var/log/nginx/rutorrent-error.log error;
error_page 500 502 503 504 /50x.html;
auth_basic "seedbox";
auth_basic_user_file "/etc/nginx/passwd/rutorrent_passwd";
root /var/www;
location = /50x.html {
root /usr/share/nginx/html;
}
location = /favicon.ico {
access_log off;
log_not_found off;
}
location /rutorrent {
try_files $uri $uri/ /index.html;
}
location ~ ^/rutorrent/(conf|share)/(.+)$ {
deny all;
}
location ~ \.php$ {
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~* \.(jpg|jpeg|gif|css|png|js|map|woff|woff2|ttf|svg|eot)$ {
expires 30d;
access_log off;
}
}Código: Seleccionar todo
service nginx restartÉste paso es opcional, pero yo para ahorrar recursos, activo sftp por ssh sin necesidad de instalar ningún otro pograma.
Para ello, lo único que tenemos que hacer es lo siguiente:
Editar el fichero de configuracion de ssh
Código: Seleccionar todo
nano /etc/ssh/sshd_configCódigo: Seleccionar todo
#Subsystem sftp /usr/lib/openssh/sftp-serverCódigo: Seleccionar todo
Subsystem sftp internal-sftpCódigo: Seleccionar todo
service ssh restartSi en los pasos anteriores era importante prestar atención a los comandos y que no faltase nada, ésto no iba a ser distinto.
Para un correcto funcionamiento, el nombre de usuario debe de ser con minúsculas y sin caracteres acentuados, de lo contrario, no funcionará
Para estandarizar la instalación, diferenciaremos entre <username> y <USERNAME> y sustituiremos por nuestro nombre de usuario en mayusculas o minusculas según corresponda
EJEMPLO DENTRO DEL SPOILER
Código: Seleccionar todo
mkdir --parents /home/<username>/{torrents,watch,.session}Código: Seleccionar todo
useradd --shell /bin/bash --home /home/<username> <username>
passwd <username>Código: Seleccionar todo
/home/<username>/.rtorrent.rcCódigo: Seleccionar todo
scgi_port = 127.0.0.1:5001
encoding_list = UTF-8
port_range = 45000-65000
port_random = no
check_hash = no
directory = /home/<username>/torrents
session = /home/<username>/.session
encryption = allow_incoming, try_outgoing, enable_retry
schedule = watch_directory,1,1,"load_start=/home/<username>/watch/*.torrent"
schedule = untied_directory,5,5,"stop_untied=/home/<username>/watch/*.torrent"
use_udp_trackers = yes
dht = off
peer_exchange = no
min_peers = 40
max_peers = 100
min_peers_seed = 10
max_peers_seed = 50
max_uploads = 15
execute = {sh,-c,/usr/bin/php /var/www/rutorrent/php/initplugins.php <username> &}
schedule = espace_disque_insuffisant,1,30,close_low_diskspace=500MCódigo: Seleccionar todo
chown --recursive <username>:<username> /home/<username>
chown root:root /home/<username>
chmod 755 /home/<username>Código: Seleccionar todo
nano /etc/nginx/sites-enabled/seedbox.confCódigo: Seleccionar todo
location ~ \.php$ {Código: Seleccionar todo
location = /<USERNAME> {
include scgi_params;
scgi_pass 127.0.0.1:5001;
auth_basic "seedbox";
auth_basic_user_file "/etc/nginx/passwd/rutorrent_passwd_<username>";
}Código: Seleccionar todo
htpasswd -s /etc/nginx/passwd/rutorrent_passwd <username>Código: Seleccionar todo
chmod 640 /etc/nginx/passwd/*
chown --changes www-data:www-data /etc/nginx/passwd/*
service nginx restartCódigo: Seleccionar todo
mkdir /var/www/rutorrent/conf/users/<username>Código: Seleccionar todo
nano /var/www/rutorrent/conf/users/<username>/config.phpCódigo: Seleccionar todo
<?php
$pathToExternals['curl'] = '/usr/bin/curl';
$topDirectory = '/home/<username>';
$scgi_port = 5001;
$scgi_host = '127.0.0.1';
$XMLRPCMountPoint = '/<USERNAME>';Para ello creamos el fichero
Código: Seleccionar todo
touch /var/www/rutorrent/conf/users/<username>/plugins.iniCódigo: Seleccionar todo
nano /var/www/rutorrent/conf/users/<username>/plugins.iniCódigo: Seleccionar todo
[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 = noPara ello, hacemos lo siguiente:
Código: Seleccionar todo
cd /etc/init.d/
nano /etc/init.d/ <username>-rtorrent
Código: Seleccionar todo
#!/usr/bin/env bash
# Dépendance : screen, killall et rtorrent
### BEGIN INIT INFO
# Provides: <username>-rtorrent
# Required-Start: $syslog $network
# Required-Stop: $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Start-Stop rtorrent user session
### END INIT INFO
## Début configuration ##
user="<username>"
## Fin configuration ##
rt_start() {
su --command="screen -dmS ${user}-rtorrent rtorrent" "${user}"
}
rt_stop() {
killall --user "${user}" screen
}
case "$1" in
start) echo "Starting rtorrent..."; rt_start
;;
stop) echo "Stopping rtorrent..."; rt_stop
;;
restart) echo "Restart rtorrent..."; rt_stop; sleep 1; rt_start
;;
*) echo "Usage: $0 {start|stop|restart}"; exit 1
;;
esac
exit 0
Código: Seleccionar todo
chmod +x <username>-rtorrentCódigo: Seleccionar todo
update-rc.d <username>-rtorrent defaultsCódigo: Seleccionar todo
service <username>-rtorrent startSi todo ha salido bien, tendremos acceso a rutorrent poniendo la ip de nuestra raspi/rutorrent
ruTorrent Webui
URL : XXX.XXX.XXX.XXX/rutorrent
y acceso sftp en filezilla con la ip de nuestra raspi y el puerto 22
SFTP
IP : XXX.XXX.XXX.XXX
Puerto: 22
Al entrar a nuestra ip/rutorrent, nos saldrá lo siguiente:

Son "pequeños errores" que vamos a solucionar con un par de comandos más
[*] Para arreglar el fallo de "stat", editamos el fichero config.php de rutorrent
Código: Seleccionar todo
nano /var/www/rutorrent/conf/config.phpCódigo: Seleccionar todo
'/usr/bin/stat',Código: Seleccionar todo
apt-get install -t stretch ffmpeg
apt-get install -t stretch mediainfoPara desactivarlo añadimos estos 2 plugins a la lista de plugins desactivados.
Código: Seleccionar todo
nano/var/www/rutorrent/conf/users/woone/plugins.iniY añadimos al final del archivo lo siguiente:
Código: Seleccionar todo
[mediainfo]
enabled = no
[screenshots]
enabled = no

Si teneis alguna duda o problema durante la instalación, agradecería que comentaseis en el post para poder ayudaros a solucionarlo.
Saludos