Pulsa "Enter" para saltar al contenido

Seedbox en la Raspberry Pi 3 con CentOS 7

centosrutorrentraspberry3

¿Otra guía de como montar un seedbox?, pues si, aunque realmente casi todo proviene de otros artículos, si que hay unas cuantas modificaciones y correcciones para ajustarnos al uso estándar de un seedbox casero. Voy a tratar aunar en un solo articulo una configuración básica de rTorrent para CentOS.

La recomendación es seguir la anterior guía para la instalación de CentOS 7 (AARCH), ya que supone una mejora notable de rendimiento.

Creación del usuario

Para mayor seguridad, ejecutaremos el programa rtorrent con un usuario al que asignaremos los permisos mínimos, y le ponemos una contraseña.

useradd rtorrent
passwd rtorrent

Instalación de rTorrent

De acuerdo con esta guia, necesitaremos descargar y compilar manualmente libtorrent y rTorrent, pero antes, instalaremos las dependencias: (unos 5 minutos)

yum install subversion automake libtool cppunit-devel libcurl-devel xmlrpc-c-devel unzip ncurses-devel php php-cli php-curl screen openssl-devel gcc-c++ nano

Ahora descargamos libtorrent y rtorrent.

curl -L https://github.com/rakshasa/rtorrent/releases/download/v0.9.7/libtorrent-0.13.7.tar.gz | tar xvz -C /root/
curl -L http://rtorrent.net/downloads/rtorrent-0.9.6.tar.gz | tar xvz -C /root/

Compilamos libtorrent: (unos 20 minutos)

cd /root/libtorrent-0.13.7
./autogen.sh
./configure
make
make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

Y compilamos rTorrent: (otros 20 minutos)

cd /root/rtorrent-0.9.7
./autogen.sh
./configure --with-xmlrpc-c
make
make install
ldconfig

Configuración de rTorrent

A partir de ahora trabajaremos con el usuario rtorrent, si ya teníamos la sesión root abierta podemos saltar mediante

su - rtorrent

Siguiendo con la guia de antes, crearemos una config básica:

mkdir /home/rtorrent/.sessions
nano /home/rtorrent/.rtorrent.rc

Y pegamos:

/home/rtorrent/.rtorrent.rc
# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.

# Maximum and minimum number of peers to connect to per torrent.
#min_peers = 40
#max_peers = 100

# Same as above but for seeding completed torrents (-1 = same as downloading)
#min_peers_seed = 10
#max_peers_seed = 50

# Maximum number of simultanious uploads per torrent.
#max_uploads = 15

# Global upload and download rate in KiB. "0" for unlimited.
download_rate = 0
upload_rate = 0

# Default directory to save the downloaded torrents.
directory = ~/torrents

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = ~/.sessions

# Watch a directory for new torrents, and stop those that have been
# deleted.
schedule = watch_directory,5,5,load_start=~/watch/*.torrent
schedule = untied_directory,5,5,stop_untied=~/watch/*.torrent

# Close torrents when diskspace is low.
schedule = low_diskspace,5,10,close_low_diskspace=200M

# Stop torrents when reaching upload ratio in percent,
# when also reaching total upload in bytes, or when
# reaching final upload ratio in percent.
# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
#schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"
#schedule = ratio,5,5,"stop_on_ratio=1,1M,10"
#ratio.enable=
#ratio.min.set=1
#ratio.max.set=2
#ratio.upload.set=1K
#system.method.set = group.seeding.ratio.command, d.close=, d.stop=

# Set Schedules
#schedule = throttle_1,00:10:00,24:00:00,download_rate=0
#schedule = throttle_2,07:50:00,24:00:00,download_rate=200

# Stop Seeding When complete
#system.method.set_key = event.download.finished,1close_seeding,d.close=
#system.method.set_key = event.download.finished,2stop_seeding,d.stop=

# The ip address reported to the tracker.
#ip = 127.0.0.1
#ip = rakshasa.no

# The ip address the listening socket and outgoing connections is
# bound to.
##bind = 127.0.0.1
#bind = rakshasa.no

# Port range to use for listening.
port_range = 51515-51520

# Start opening ports at a random position within the port range.
#port_random = no

# 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 = no

# Set whetever the client should try to connect to UDP trackers.
use_udp_trackers = yes

# Alternative calls to bind and ip that should handle dynamic ip's.
#schedule = ip_tick,0,1800,ip=rakshasa
#schedule = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
# encryption = allow_incoming,enable_retry,prefer_plaintext
#encryption = allow_incomming,try_outgoing

# 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
dht = off

# UDP port to use for DHT.
#
# dht_port = 6881

# Enable peer exchange (for torrents not marked private)
#
# peer_exchange = yes
peer_exchange = no

#
# Do not modify the following parameters unless you know what you're doing.
#

# Hash read-ahead controls how many MB to request the kernel to read
# ahead. If the value is too low the disk may not be fully utilized,
# while if too high the kernel might not be able to keep the read
# pages in memory thus end up trashing.
#hash_read_ahead = 10

# Interval between attempts to check the hash, in milliseconds.
#hash_interval = 100

# Number of attempts to check the hash while using the mincore status,
# before forcing. Overworked systems might need lower values to get a
# decent hash checking rate.
#hash_max_tries = 10

#Added for rutorrent stuff
encoding_list = UTF-8
#scgi_local = /tmp/rpc.socket
#schedule = chmod,0,0,"execute=chmod,777,/tmp/rpc.socket"
scgi_port = localhost:5000

# Start The Plugins when Rtorrent Starts not when the page is first opened. If apache service is restart separately the plugins are likely to be stopped. Only really needed for RSS feeds.
execute = {sh,-c,/usr/bin/php /var/www/php/initplugins.php &}

Creamos el script para iniciarlo

nano /home/rtorrent/start.sh
/home/rtorrent/start.sh
#! /bin/bash

/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent

Configuración del Servidor Web

Iniciaremos el servidor web:

systemctl start httpd

systemctl enable httpd

y comprobamos que efectivamente es accesible desde el navegador. Una vez hecho esto, y ya con la cuenta de root descargaremos rutorrrent, una interfaz web para rtorrent.

curl -L https://github.com/Novik/ruTorrent/archive/v3.9.tar.gz | tar xvz -C /var/www/html/

Montar un servidor FTP

Algunos reproductores como el VLC tienen una opción para reproducir contenido en streaming, en este caso desde un servidor FTP en la Raspberry, así no tenemos que moverlo al sobremesa o simplemente por optimizar un poco las trasferencias (SFTP puede no ser la mejor opción para archivos grandes). Tomando la información de esta guia, resumo:

yum install vsftpd
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.old
nano /etc/vsftpd/vstfpd.conf
/etc/vsftpd/vstfpd.conf
#
# Sample anonymous FTP server configuration
#
listen=YES
local_enable=NO
anonymous_enable=YES
write_enable=NO
anon_root=/media
listen_address=0.0.0.0
listen_port=21
systemctl start vsftpd
systemctl enable vsftpd

Algunos arreglos + ProTips

Una vez entremos en la página de rutorrent deberían mostrarse una retahíla de errores, vamos a tratar de solucionarlos:

cd /var/www/html/rutorrent/

Probablemente tendremos una notificación en rojo indicando que no tenemos espacio suficiente en el disco, se está refiriendo a la partición del sistema, si estamos utilizando un disco externo, se lo indicaremos en estos 2 ficheros:

nano conf/config.php
nano plugins/diskspace/conf.php

En el primero cambiaremos y en el segundo añadiremos la siguiente linea con la ruta a disco de las descargas:

$topDirectory = '/media/Disco_Externo/';

Fallos en los plugins de screenshots, media_info y rutracker_check, estos simplemente no aportan gran funcionalidad, pero requieren librerías grandes para funcionar, así que los quitaremos:

rm -R plugins/screenshots/ -f
rm -R plugins/mediainfo/ -f
rm -R plugins/rutracker_check/ -f
rm -R plugins/spectrogram/ -f
rm -R plugins/_cloudflare/ -f

No se puede Localizar unrar

Por mas que he buscado no he encontrado el paquete unrar para ARM, pero podemos compilarlo nosotros mismos en un momento: (2 minutos)

curl http://www.rarlab.com/rar/unrarsrc-5.4.5.tar.gz | tar xvx
cd unrar
make
make install

Conclusiones

Así por concluir un poco, y partiendo que que nuestra instalación es sobre CentOS 7.2 AARCH, ¿ha merecido la pena?, diría que si.

Nada mas adquirí la Raspberry Pi 3 le instalé la distribución oficial de CentOS (versión para ARMv7), y no me acabó de convencer, no notaba un aumento significativo del rendimiento frente a la 1-2. Tampoco me voy a explayar mucho, quizá otro día haga un benchmark en condiciones, pero un poco por comparar picos de carga (durante comprobación) de rTorrent y velocidad de transferencia del FTP:

ARMv7 AARCH
rTorrrent (carga) 100% 45%
vsftpd 5 MB/s 11.3 MB/s

En comparación con otras guías, como la de biolinux, he encontrado bastante mas amigable y robusto CentOS que Archlinux.

Sé el Primero en Comentar

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.