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 upgrade
Vamos 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 buildtorrent
Editamos el fichero sources.list
Código: Seleccionar todo
nano /etc/apt/sources.list
Código: Seleccionar todo
deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi
Código: Seleccionar todo
nano /etc/apt/preferences
Código: Seleccionar todo
Package: *
Pin: release n=stretch
Pin-Priority: 100
Código: Seleccionar todo
apt-get update
Có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-geoip
NOTA: 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 install
Código: Seleccionar todo
svn checkout http://svn.code.sf.net/p/xmlrpc-c/code/stable xmlrpc-c
cd xmlrpc-c/
./configure
make
make install
Volvemos 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 install
Volvemos 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 rutorrent
INSTALACIÓN DEL PLUGIN rRUTORRENT MOBILE
Código: Seleccionar todo
cd /var/www/rutorrent/plugins/
git clone https://github.com/xombiemp/rutorrentMobile.git mobile
Código: Seleccionar todo
cd /var/www/rutorrent/plugins/
git clone https://github.com/exrat/filemanager
chown -R www-data:www-data /var/www/rutorrent
Código: Seleccionar todo
nano/var/www/rutorrent/plugins/create/conf.php
Código: Seleccionar todo
$useExternal = 'buildtorrent';
$pathToCreatetorrent = '/usr/bin/buildtorrent';
Editamos el fichero
Código: Seleccionar todo
/var/www/rutorrent/plugins/filemanager/conf.php
Có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.ini
Código: Seleccionar todo
upload_max_filesize = 8M
date.timezone = Europe/Madrid
Código: Seleccionar todo
service php7.0-fpm restart
Creamos 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_passwd
Código: Seleccionar todo
rm /etc/nginx/nginx.conf
nano /etc/nginx/nginx.conf
Có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.conf
Có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_config
Código: Seleccionar todo
#Subsystem sftp /usr/lib/openssh/sftp-server
Código: Seleccionar todo
Subsystem sftp internal-sftp
Código: Seleccionar todo
service ssh restart
Si 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.rc
Có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=500M
Có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.conf
Có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 restart
Código: Seleccionar todo
mkdir /var/www/rutorrent/conf/users/<username>
Código: Seleccionar todo
nano /var/www/rutorrent/conf/users/<username>/config.php
Có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.ini
Código: Seleccionar todo
nano /var/www/rutorrent/conf/users/<username>/plugins.ini
Có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 = no
Para 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>-rtorrent
Código: Seleccionar todo
update-rc.d <username>-rtorrent defaults
Código: Seleccionar todo
service <username>-rtorrent start
Si 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.php
Código: Seleccionar todo
'/usr/bin/stat',
Código: Seleccionar todo
apt-get install -t stretch ffmpeg
apt-get install -t stretch mediainfo
Para desactivarlo añadimos estos 2 plugins a la lista de plugins desactivados.
Código: Seleccionar todo
nano/var/www/rutorrent/conf/users/woone/plugins.ini
Y 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
