Tecnología

Convierte tu Raspberry Pi en un pequeño SeedBox para descargas con BitTorrent

·

(Aviso: post a una columna porque queda mejor así… esta vez 😉 ) Como sabéis, hace unos meses me llegó mi Raspberry Pi, un cacharrito que tiene su encanto pero que tras algunas pruebas y trasteos iniciales estaba comenzando a coger polvo en un cajón de mi mesa. No obstante, las posibilidades de este pequeño miniordenador siguen siendo interesantes, y acabo de encontrar una aplicación perfecta para él: convertir al Raspberry Pi en un pequeño servidor de descargas vía BitTorrent, lo que desde hace tiempo se conoce como seedbox.

Los seedbox son de hecho cada vez más populares entre los usuarios, que o bien contratan los servicios de seedbox ya montados (SeedRootS y Dedi Seedbox son dos conocidillos) o bien contratan un VPS o un servidor dedicado en un proveedor convencional para luego aprovechar el caño de esos servidores y descargar (y servir) torrents todo el día a través de clientes como rtorrent. Es como tener descargando todo tipo de contenidos en casa, pero con velocidades que a menudo superan los 10 MB por segundo. Y lo mejor de todo es que esos contenidos quedan almacenados en el servidor -uno puede descargárselos cuando quiera con cualquier cliente FTP- y van haciendo crecer nuestro ratio de descarga sin parar, algo muy importante en trackers privados si lográis o tenéis invitaciones. Todo un invento.

El coste de ambas alternativas no tiene porqué ser especialmente alto -sobre todo si uno comparte gastos con otros «interesados»-, pero lo cierto es que es posible montarse un seedbox de bajo coste en casa. Con limitaciones, claro. La más importante, sin duda, el ancho de banda: con mi actual línea en Jazztel de 20 Mbps tengo máximos de 18 Mbps en bajada y aproximadamente 1,5 Mbps en subida, lo que no es comparable a las velocidades que ofrecen los VPS. Eso significa que aunque las descargas irán relativamente bien, actuar como semilla es mucho más costoso, y ofrecer nuestros contenidos al resto de leechers no será tan eficiente: nuestro ratio crecerá mucho más lentamente.

Y sin embargo, la idea es muy interesante porque con cacharritos como el Raspberry Pi tendremos a nuestro alcance un pequeño seedbox con un consumo energético ridículo y al que podemos acceder de forma sencilla tanto vía SSH como vía panel web (rutorrent/rtorrent al rescate) o a través de la red de área local ya que, recordad, vuestro seedbox con el Raspberry Pi estará conectado a vuestro router. 24 horas al día, 7 días a la semana. En lugar de tener un NAS (mucho más potente y versátil, pero también más caro) o un ordenador para este tipo de temas, el Raspberry Pi se convierte de ese modo en un recurso más que interesante.

¿Cómo lograr ese propósito? Fácil: pinchad en «Leer más» y comprobadlo 😉

En primer lugar, tendréis que tener los requisitos necesarios. A saber:

1. Rasbperry Pi: nuestro particular servidor de descargas

2. Tarjeta SD: donde instalaremos tanto el sistema operativo como el software necesario. Yo recomendaría una de 8 Gbytes.

3. Alimentación a microUSB: como sabéis, el Raspberry Pi se alimentan a través de un puerto microUSB, así que lo normal es que uséis vuestro cargador del móvil para estos primeros pasos. Afortunadamente yo he encontrado una solución perfecta para utilizar el Raspberry Pi como un seedbox, porque mi router de Jazztel tiene un puerto USB que precisamente se encarga de alimentar al Raspberry Pi con un simple cable de USB a microUSB. Genial 🙂

4. Disco duro externo USB: para poder almacenar todo lo que descargamos. Podemos evitarlo si compramos una SD de gran tamaño (he visto tarjetas SD de 64 GB por unos 30 ‚¬, serían una opción), pero ya se sabe: cuanto más espacio para estas cosas, mejor.

5. Conexión a Internet: aunque es posible conectarnos vía WiFi con una llave USB (yo pillé una EDUP 802.11n con un chipset RTL8192CU en DealExtreme) para ponerlo en marcha todo necesitaréis una conexión Ethernet. Y ya que vais a tener el Raspberry conectado al Router, casi es mejor olvidarse de la WiFi para este tipo de propósito. Ethernet al poder.

6. Cable y monitor HDMI: de nuevo solo necesarios para la primera instalación, en la que tendréis que ver físicamente lo que estáis haciendo en vuestro Raspberry Pi para dejarlo todo preparado. Tras la instalación y preparación inicial podréis dejar vuestro particular seedbox sin conexión HDMI ya que podréis controlarlo todo vía SSH y vía el panel web que proporciona rutorrent.

7. Teclado y ratón: como pasa con lo anterior, solo necesarios para la primera instalación, hasta que lo tengamos todo preparado. Luego ya podremos liberar los puertos USB que ocupan todos estos periféricos, aunque al principio desde luego se nos amontonen las conexiones.

8. Software: imprescindible contar con los componentes software necesarios. En mi caso la instalación se ha basado en el uso de Raspbian como distribución Linux, y luego del paquete clásico de aplicaciones para un seedbox, es decir, rtorrent (cliente BitTorrent) , rutorrent (frontend web para rtorrent), y luego Apache 2 y PHP5 para esos servicios web de los que tira rutorrent.

El proceso de puesta en marcha es bastante sencillo, y en 3 o 4 horas (la mayoría del tiempo debido a la compilación de componentes software) tendréis todo listo para disfrutar de vuestro seedbox, que en mi caso queda colocado más o menos así:

Los pasos de la instalación son los siguientes:

1. Descargar Raspbian: en la web oficial de Raspberry Pi disponen de la imagen oficial que podéis descargar de forma directa o vía BitTorrent. Recordad que el usuario es «pi» y la contraseña «raspberry» (sin contraseñas en ambos casos) para poder logaros en el sistema una vez esté instalado.

2. Instalar Raspbian: hay varios métodos, pero en mi caso tiré del de Windows. Conecté la SD a un lector de SD, la formateé completamente en FAT32, y luego instalé y ejecuté  win32diskimager. La imagen IMG de Raspbian es la que habéis obtenido en el paso anterior (eso sí, descomprimid el fichero ZIP que os habéis descargado), y tendréis que seleccionarla para luego pulsar en Write en la ventana de win32diskimager. Cuando el proceso termine, recordad expulsar la tarjeta SD de forma segura por si las moscas.

3. Primer inicio de Raspberry Pi con Raspbian: con la SD ya en nuestro cacharrito procederemos al primer reinicio, en el que tendremos que asegurarnos de tener conectado el teclado, ratón, red Ethernet y cable HDMI, además de la alimentación, que será lo último que conectemos. Al hacerlo iremos viendo la típica ristra de mensajes de Raspbian, que finalizará presentando un asistente de postinstalación más que importante. En ese asistente podremos hacer cosas como expandir la partición root para que Raspbian aproveche todo el espacio disponible en la tarjeta SD (absolutamente necesario), configurar el teclado y la hora o habilitar el servidor SSH (activadlo de todas todas). No tocaría nada de la actualización vía raspi-config (me ha dado problemas en el pasado), pero el resto de opciones son muy interesantes. Cuando terminéis con ese proceso tendréis a vuestra disposición una instalación completa de Raspbian que os dará acceso al sistema con el usuario y contraseña antes mencionados (pi/raspberry) y a partir de ahí podréis trastear con Raspbian incluso iniciando el servidor gráfico con el clásico startx que lanzará una sesión con LXDE. No os esperéis grandes velocidades en LXDE o en cosas como la navegación web porque la cosa irá más bien lentita. Pero a nosotros no nos interesa la sesión gráfica, y podremos quedarnos con la sesión en modo consola tradicional. Tenéis un vídeo medio decente de todo este proceso de primer inicio que os puede aclarar un poco más el tema. Por cierto, es bueno que en consola hagáis un ‘ifconfig’ para saber qué IP tenéis asignada y poder acceder a ella vía SSH, como mencionaré después.

4. Puesta en marcha de nuestro seedbox: hay muchos tutoriales en Internet que permiten solucionar este tema, pero es un proceso laborioso que se puede simplificar mucho a base de scripts. Es precisamente lo que ha hecho un usuario que publicó un vídeo en el que mostraba el funcionamiento de su script para instalar rtorrent, rutorrent, Apache y PHP5, y que aunque teóricamente estaba pensado originalmente para Debian de 64 bits, funciona perfectamente en los Raspberry Pi con Raspbian. El script está disponible aquí, y lo que tenéis que hacer es -como explica en el vídeo, que os recomiendo ver para empaparos- crear un ficherito vacío en Raspbian, pegar el contenido del script, salvar el fichero y darle permisos de ejecución. Una vez hecho eso lo ejecutáis (como root) y eso os irá guiando por el proceso de instalación, en el que se os pregunta alguna cosilla al final, como el usuario/contraseña con el que queréis acceder al panel web de rutorrent. En este caso debo señalar dos cosas:

a) La primera instalación de paquetes no funcionó bien, y la compilación fue incompleta, así que tras ese primer intento hice un ‘apt-get update –fix-missing’ que solventó el problema de los paquetes no descargados o instalados. Tras eso, volví a ejecutar otra vez el script, y esta vez todo fue perfecto.

b) La compilación de todos los componentes necesarios que deben compilarse bajo Raspbian es un tostón. De hecho me fui de casa a dar una vuelta y dejé el tema compilando. Tenía que haber hecho un ‘time’ del script, pero se me olvidó. En cualquier caso, yo diría que al menos estuvo 2 o 3 horas compilando, pero puede que fueran menos. Lo importante es que la compilación fue sin problemas, y tras esa compilación el proceso de instalación siguió normalmente.

5. Acceso a vuestro seedbox: ya tenéis todo instalado, y como se puede ver en el vídeo citado anteriormente aparecerá un mensaje al final de la instalación del script en el que se indica la dirección web a la que tenéis que acceder para la gestión web de rtorrent con rutorrent (algo tipo http://192.168.1.100/rutorrent). Además el script crea un comando que hace que rtorrent y el resto de servicios se inicien tras cada reinicio del Raspbperry Pi, así que si por algún motivo apagáis vuestro miniseedbox, al reiniciarlo estará todo como debería estar, con vuestras descargas parciales preparadas para seguir su marcha.  Basta con acceder por lo tanto desde cualquier ordenador de vuestra red de área local a la URL indicada anteriormente, lo que hará que os encontréis con la interfaz de rutorrent, muy similar a la de otros clientes torrent, y que ofrece todo lo necesario para comenzar a descargar contenidos vía BitTorrent. No es difícil añadir nuevos torrents (el iconito de la bola del mundo de la barra superior da acceso a esa función), y podréis hacerlo tanto subiendo un torrent que os habéis descargado en vuestro ordenador como copiando y pegando la URL del torrent que deseáis descargar. Una vez hecho eso, comenzaréis a ver cómo rtorrent/rutorrent muestra la información de la descarga en tiempo real. Muy, muy chulo. Algunas puntualizaciones:

a) Configuración de rtorrent: el script crea un ~/.rtorrent.rc que deberíais miraros porque ahí podréis indicar las opciones de configuración del cliente. Cosas como los peers máximos y mínimos para la conexión o los seeds, las conexiones máximas, la activación de DHT o de PEX (cuidado, porque normalmente para trackers privados ambas deben estar deshabilitadas) y otras opciones que es bueno que configuréis adecuadamente -algunos consejos, por aquí– conforme sobre todo a vuestra conexión a Internet.

b) Como había mencionado anteriormente, tras la instalación inicial podéis apagar vuestro Raspberry Pi, desconectar todo lo innecesario y dejar únicamente conectadas la alimentación y la red Ethernet, ya que podréis acceder vía SSH con la IP que os deberíais haber apuntado tras el primer reinicio. Podéis ir más allá y establecer una IP fija en lugar del mecanismo tradicional del DHCP, pero eso implica editar el ficherito tal y como explican por ejemplo aquí. Sea como fuere, el acceso vía SSH os permitirá actualizar vuestro seedbox y ejecutar otras tareas o comandos sin problemas.

c) Una vez descargados los contenidos el propio rutorrent ofrece un sencillo mecanismo de descarga a vuestro ordenador (o sea, copiarlo desde el Raspberry Pi a otro ordenador de vuestra red). Para ello con vuestro PC o portátil os vais a la interfaz de rutorrent,  y en la pestaña «Archivos» de la parte inferior de la interfaz podréis ver los ficheros que integran el torrent descargado (lo tenéis que seleccionar en la parte de arriba, donde están todos vuestros torrents). Pulsando con el botón derecho del ratón en cualquiera de esos archivos aparecerá la opción «Get data» que os permitirá «descargar» ese archivo de nuevo, pero esta vez desde el Raspberry Pi a vuestro ordenador. Y con la velocidad de vuestra red, claro. Es como una transferencia más en la red de área local. Otra alternativa es montar una carpeta compartida en vuestro Raspberry Pi o incluso hacer que la carpeta de descargas (el script la crea por defecto, en /home/pi/Downloads en mi caso) sea compartida, algo que explican en este documento.

d) Rutorrent dispone de varios plugins que pueden hacerlo aún más versátil, así que echadle un vistazo a ese apartado porque también es interesante.

¡Listo! Ya tenéis vuestro seedbox con un Raspberry Pi a pleno rendimiento. Disfrutadlo 😉

Suscríbete a Incognitosis

¡Recibe en tu correo las nuevas entradas!

Standard

30 comentarios en “Convierte tu Raspberry Pi en un pequeño SeedBox para descargas con BitTorrent

  1. nadie dice:

    Hace tiempo que tenía en la cabeza la idea de comprar uno de estos ‘enchufes’ para montar en mi casa mis propios servicios particulares. Había pensado en un servidor de correo y, quizás también, un pod de Diáspora (yo que nunca he usado una red social).
    Sería una forma ideal de tener tu propia nube, con garantías de privacidad, a un coste energético muy interesante.

    Lo que pasa es que leyendo tu anterior artículo, vi que el chisme este quizás tenía demasiadas limitaciones como para meterle ahí dentro tantas cosas.

    • JaviPas dice:

      Bueno, la idea es curiosa, pero es cierto que el Raspberry Pi tiene sus limitaciones… Quizás lo que comentas sea demasiado, sobre todo si tienes cierta carga tanto en el servidor de correo como en el pod. Pero por probar no pierdes nada 🙂

  2. Hola…

    Yo la verdad es que no veo bien meter apache en la rasPi solo para esto… el hw que tenemos es limitado, y no veo que sea necesario cargarlo con daemons extra, pudiendo usar transmission (otro cliente de bt en consola), que ya posee un webserver… además existe una gui, transgui, que esta disponible para windows, y funciona muy bien. Incluso hay app android…

    Yo tengo ese setup montado, y funciona a las mil maravillas…

    Saludos

    Saludos

    • pgonza, gracias por la idea de usar Transmission, y desde luego hay otros clientes BitTorrent que tienen administración web (si no me equivoco, uTorrent también lo hace posible), pero rtorrent me parece la opción más interesante por estar orientado totalmente a ncurses.

      De todos modos tu apreciación del Apache es interesante, pero en este caso no hay porqué preocuparse. He sacado una captura con htop del estado actual del Raspberry y como ves la carga está en 0,14, muy bajita, mientras que el uso de memoria también es muy reducido. Cierto que ahora mismo no está descargando nada, pero aún así Apache no parece imponer tanta carga como podría pensarse.

      En cualquier caso, la idea de Transmission como dices está curiosa, así que el tuto puede valer igualmente, pero sustituyendo una parte (rtorrent) por otra (Transmission). Saludos!

      • Hola Javi

        Por supuesto, ya sabes que para gustos, colores…. Y con linux hay mil opciones… rtorrent es igual de valido que transmission, u otro cliente de BitTorrent 🙂

        Cuando tengas unos cuantos ficheros en la lista de download el consumo de memoria sube bastante, de ahí mi interés en minimizar el consumo de los daemons…

        Saludos!

  3. Jose dice:

    ¡Muy buena la entrada! Se echan de menos los post de «cacharreo» (llegué al blog justo con un post de esos sobre alta definición :-)). No creo que dé esa salida al Raspberry, lo estoy usando para ver vídeo con la distribución de XBMP, y ya tengo un seedbox con xirvik.com (conexión simétrica a 1Gb, va como un tiro!), incluso para ver por streaming los contenidos en el seedbox usando mi conexión de ONO.

    ¡Se agradece mucho este tipo de post!

  4. Javi dice:

    Hola.

    Yo tengo este cacharrito y me lo compre con la idea de dedicarle como servidor de descarga.
    Al final desistí ya que solo me alcanza unos 900 K de descarga cuando con mi ADSL deberia de llegar a unos 1.7 M

    ¿Has tenido problemas con la velocidad de descarga?

    • JaviPas dice:

      Yo tengo una línea que da picos de 1,5-1,6 MBps y aunque no llegó a esa cifra estuvo en 1,2 sin problemas, creo recordar. De todos modos lo miraré por si acaso, pero no es un tema que me preocupe demasiado. Aunque no alcance el máximo teórico lo de tenerlo 24/7 conectado me hace ser bastante más paciente…

  5. Consejillo dice:

    Yo no tengo un RaspberryPi, pero desde mi punto de vista, si vais a usar un dispositivo con tan pocos recursos como seedbox, la mejor opción (de lejos) es usar rtorrent + screen + ssh.
    Mucha gente (no sólo yo) lo usa desde hace años para montar seedboxes en servers de bajo coste (y de poca potencia) o en pc’s MUY antiguos.
    La idea es que te conectas mediante un cliente ssh (putty por ejemplo, si usas windows) a la máquina, y cargas screen que te permite mantener varias shells abiertas a la vez en una única conexión ssh. Sí, es por línea de comandos, pero tampoco hay que ser un friki para usarlo. Buscad en google «rtorrent + screen + ssh» que hay montones de manuales/tutoriales de cómo hacerlo.
    Si mediante este método no conseguís sacarle todo el jugo a vuestra línea, simplemente es que el aparatito se queda corto de potencia, ya que hoy por hoy no existe nada más «light» en cuanto a descargas de torrent.

    De todas formas si uno sigue «emperrado» en tener una interfaz web, también podéis probar con lighttpd como servidor web en lugar de apache, a ver si ganáis algo de rendimiento.

    un saludo

    • JaviPas dice:

      La alternativa con screen es desde luego factible, y lighthttpd probablemente también es otra idea curiosa (ya puestos también está Nginx) pero a la mayoría de la gente no le va lo de controlar todo con una interfaz en modo consola.

      Como le he contestado antes a psgonza, el consumo con Apache y Rutorrent ejecutándose es muy bajo (échale un vistazo a la capturita con htop), así que para este escenario tirar de esta propuesta es perfectamente adecuado bajo mi punto de vista. Pero desde luego tus ideas son totalmente válidas, como la de usar Transmission que comentaba psgonza también. Bien por esas alternativas.

  6. Yo lo tengo con Transmission-daemon y no necesita apcache ni PHP (al menos yo no los he instalado), con las common que se instalan tienes acceso por web y listo.
    Más complicado me ha resultado el tema de configurar Samba para acceder a lo descargado, no conseguía aclararme con los permisos del usuario normal (pi), el del demonio (debian-transmission) y el que accede desde fuera, todo mezclado con un pendrive en FAT32. Al final he formateado el pendrive a ext4 y parece que está más controlado, pero no me he quedado a gusto con la configuración.
    ¿Cómo accedes a lo descargado, por Samba , FTP, …? a ver si haces otro post de esa parte de la configuración.

  7. Tomás Crespo dice:

    Muchas gracias Javi, yo hago lo mismo desde hace algunos años con mi router Asus WL-500gP flaseado con Linux (OpenWRT o DD-WRT) que tiene un par de puertos USB para los HDs

    Cuando muera quizás cambie a la Raspberry que haya entonces

  8. JR dice:

    Yo tengo mi rasp orientada a media center (raspbmc) pero luego configuré también transmission y va de lujo. También he configurado MLDonkey, pero actualmente me quedo con transmission para los torrents y Samba para utilizar mi disco duro como NAS, va de lujo.
    Eso si, todo al tiempo no se puede, je, je. Por cierto, ENORME la ñapa esa para alimentar la raspberry, imaginación al poder (y supongo que limitación de enchufes).

  9. Pingback: El timo de las tarjetas SD en eBay | Incognitosis

  10. Pingback: Truco: Solucionar error rtorrent en Raspberry Pi | Art 4 Software

  11. Mx24 dice:

    Hola, muchas gracias por el tutorial… tengo una raspberry con su pibow jejejeje y por temas de curro no le he podido meter mano aun, esta proxima semana me pondre…. el asunto, para los no instruidos en linux, ¿como se monta correctamente el disco duro externo y se configura todo para que rtorrent lo pille??

    Un saludo!!!

  12. Yo también tuve el Rpi guardado en un cajón una temporada, en mi caso precisamente porque lo quería para descargar y en la versión de debian que había a principios de verano existía un bug por el que después de mucho tiempo con peticiones de archivos se producía un kernel-panic.
    Ayer he instalado la versión actual y parece que se ha solucionado. La idea de usar el usb del router para alimentación parece muy buena, aunque tengo que ver cuánta potencia es capaz de suministrar el aparato, pues tuve que poner un adaptador de 2W porque con menos de 1W en ocasiones no tenía corriente suficiente.

  13. Rx dice:

    Buenas,

    Tengo una duda con el tutorial de youtube. En el último paso dice «Download folfer, .rtorrent.rc and .rtorrent-sessions» y no entiendo lo que tengo que hacer ni para que es este paso. Alguien me lo podría aclarar, por favor.

    Otra pregunta, he estado mirando pero no encuentro la forma de salir de la GUI al modo consola. Como puedo hacer?

    Muchas gracias

  14. Muchas gracias por tu entrada, la verdad que el script que mencionas es muy práctico y lo han ido actualizando desde que lo escribiste. El problema que estoy encontrando es relativo a los plugins. Instalarlos es relativamente complicado y como la instalación crea el usuario www-data, a la hora de instalar plugins hay que chmodear y dar los permisos adecuados a todo, cosa que es un poco rollo… Pero bueno, la verdad que lo tuyo funciona 😀 ¡Muchas gracias!

  15. Pingback: Raspberry Pi-ando – Diario Salta | Noticias e Información las 24 horas

  16. Pingback: ¿Quién necesita un Google/Apple TV teniendo XBMC? | Incognitosis

  17. pitbull dice:

    Soy nuevo en esto de linux, y tengo un problema con la compilacion cuando la «ejecuto» me dice esto todo el rato: «./rtorrent.script: line 226: htpaswwd: command not found»
    No se a que es debido.
    Cuando dices el primer intento no funcionó bien y que hiciste un «apt-get update -fix-missing» eso donde lo pongo.
    Gracias.

Comentarios cerrados.