Instalar un cliente de torrent en la Raspberry Pi con Transmission en Raspbian

Introducción

Transmission_logoLa idea general consiste en implementar un cliente de Torrent que se ejecute continuamente en una Raspberry Pi y sea administrable a través de una interfaz web.

Como cliente torrent se eligió Transmission ya que se ha tenido una buena experiencia con Deluge pero desafortunadamente su cliente web actualmente no es compatible con los navegadores móviles.  La interfaz web de Transmission es mucho mas simple.

Establecer el punto de montaje del almacenamiento

El almacenamiento de los archivos (descargados y en proceso de descarga) se realizará en una unidad USB que deberá ser montada automáticamente bajo /media/storage1.

Identificar cual es el dispositivo que referencia la unidad USB que se utilizará como almacenamiento.  En este caso será /dev/sda1.

$ sudo fdisk -l

Disk /dev/mmcblk0: 3904 MB, 3904897024 bytes
4 heads, 16 sectors/track, 119168 cylinders, total 7626752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880     7626751     3751936   83  Linux

Disk /dev/sda: 32.5 GB, 32463912960 bytes
255 heads, 63 sectors/track, 3946 cylinders, total 63406080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005d951

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    63406079    31702016   83  Linux

Obtener el UUID de la partición a montarse automáticamente.

$ sudo blkid /dev/sda1

/dev/sda1: LABEL="storage1" UUID="12c4ff69-21a4-5c24-b126-98982b207782" TYPE="ext4

Actualizar el archivo de montaje automático de particiones (fstab) con la información de la partición contenida en la unidad USB de almacenamiento (ver último registro agregado).

$ sudo vi /etc/fstab

proc            /proc           proc    defaults          0       0 /dev/mmcblk0p1  /boot           vfat    defaults          0       2 /dev/mmcblk0p2  /               ext4    defaults,noatime  0       1

## Storage1
UUID=12c4ff69-21a4-5c24-b126-98982b207782    /media/storage1        ext4    rw,user,errors=remount-ro    0    0

Crear el punto de montaje donde se seguirá montando la unidad USB.

$ sudo mkdir /media/storage1

$ sudo chown pi:plugdev /media/storage1

$ sudo chmod 755 /media/storage1

Remontar todas las particiones para que se incluya la recién creada para storage1.

$ sudo mount -a

Instalación de Transmission

$ sudo aptitude install transmission-daemon

Configuración incial

Detener el servicio.  Se debe tener en cuenta que si no se realiza esto, los cambios que se realicen en la configuración serán desechados durante la siguiente ejecución del servicio.

$  sudo service transmission-daemon stop

Editar el archivo de configuración de Transmission.

$  sudo vi /etc/transmission-daemon/settings.json

Ajustar los siguientes valores según las necesidades del contexto.

 "download-dir": "/media/storage1/downloaded",
 "incomplete-dir": "/media/storage1/downloading",
 "incomplete-dir-enabled": true,
 "rpc-password": "MiClaveSecreta",
 "rpc-port": 4040,
 "rpc-url": "/transmission/",
 "rpc-username": "torrents",
 "rpc-whitelist": "127.0.0.1,192.168.1.*",
 "rpc-whitelist-enabled": true,

En este caso se está estableciendo la siguiente configuración.

  • Los archivos ya descargados se almacenarán en downloaded mientras que los ya descargados se almacenarán en downloading.
  • El acceso web se realizará a través del puerto 4040 de la ubicación de la tarjeta Raspberry Pi.
  • Para acceder a la interfaz web se deberá utilizar el usuario torrents y la contraseña MiClaveSecreta.  Este acceso sólo será válido desde localhost o desde cualquier equipo de la red 192.168.1.x.
  • La contraseña (especificada en el campo rpc-password de manera plana) será reemplazada por su hash tan pronto como se reinicie el servicio.

Crear los directorios para las descargas en proceso y las finalizadas según se determinaron en la configuración.

$ sudo mkdir /media/storage1/downloaded

$ sudo mkdir /media/storage1/downloading

$ sudo chown debian-transmission:debian-transmission /media/storage1/downloaded

$ sudo chown debian-transmission:debian-transmission /media/storage1/downloading

$ sudo chmod 755  /media/storage1/downloaded

$ sudo chmod 755  /media/storage1/downloading

Reiniciar el servicio para que los cambios de la configuración recién hechos sean tenidos en cuenta.

$  sudo service transmission-daemon start

 

Configuración inicial de Raspbian

Introducción

raspbianRaspbian está basado en Debian y es uno de los sistemas operativos mas utilizados por las tarjetas Raspberry Pi.

Una vez este se encuentra instalado en la tarjeta SD y la Raspberry Pi es iniciada con él, se realiza un proceso de configuración básica del sistema operativo.  Este proceso puede realizarse también en cualquier momento ejecutando el siguiente comando.

$ sudo raspi-config

QEMU_001

A continuación se describen las opciones de configuración mas comúnmente utilizadas.

Expandir el sistema de archivos

La opción Expand Filesystem permite que la partición raíz del sistema operativo tome posesión del resto del espacio libre de la tarjeta SD.  Esto será muy útil cuando se cuente con una tarjeta SD de gran tamaño para la Raspberry Pi.

Cambiar la contraseña del usuario

Por defecto, el usuario pi tiene como contraseña asignada la palabra raspberry.  Es muy recomendado por motivos de seguridad que se cambie esta contraseña lo mas pronto posible.

Tipo de inicio

QEMU_004La opción Enable Boot to Desktop/Scratch permite especificar si se desea que la carga del sistema operativo termine en una consola de texto, un escritorio gráfico o en el lenguaje de programación Scratch.

Opciones de internacionalización

QEMU_006Las Internationalisation Options permiten realizar los siguientes ajustes.

  • Localización: lenguaje y ajustes regionales.
  • Zona horaria.
  • Distribución del teclado.

En lo personal prefiero configurar mi teclado con la distribución internacional con teclas muertas, para esto se deberá seleccionar la siguiente ruta de opciones: Generic 105-key (Intl) PC > English (US) – English (US, international with dead keys).

Activar la cámara

La opción Enable Camera permite activar el acceso a la cámara de la Raspberry Pi cuando se cuenta con este periférico.

Agregar a Rastrack

La opción Add to Rastrack permite a la Raspberry Pi registrarse en el sitio de Rastrack para aparecer en el mapa mundial.

Overclocking

QEMU_015La opción de Overclock permite alterar manualmente la velocidad del procesador para obtener un mayor desempeño.  Se debe tener cuidado con esta manipulación ya que puede reducir drásticamente el tiempo de vida de la tarjeta.

Cambiar el hostname

Bajo Advanced Options está la opción Hostname que permite cambiar el nombre de la tarjeta.

Servicio de acceso remoto seguro

Bajo Advanced Options está la opción SSH que permite activar o desactivar el acceso remoto seguro a través del protocolo SSH.

Interfaz serial

Bajo Advanced Options está la opción SPI que permite activar o desactivar el acceso a la Serial Peripheral Interface (SPI).

Configuración de audio

QEMU_017
Bajo Advanced Options está la opción Audio que permite configurar el tipo de audio que se obtendrá de la tarjeta.

Actualizar esta herramienta

Bajo Advanced Options está la opción Update que permite configurar el raspi-config que se está utilizando.

“client denied by server configuration” en Apache 2.2.4

Esta vez estoy instalando Apache 2.2.4 y encontré un problema. Cuando ya estaba todo supuestamente listo e intentaba solicitar una página del Document_Root me respondía el servidor con un 403 (forbidden). Muy extraño. En los registros aparecían mensajes como el siguiente:[Tue Aug 07 17:06:14 2007] [error] [client 192.168.1.2] client denied by server configuration: /data/www/index.html

Encontré que la versión 2.2.x ajusta de una manera mas restrictiva los permisos sobre el directorio raíz (‘/’). En httpd.conf dice lo siguiente:

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>

Comentando la última línea: “Deny from all” se solucionó el inconveniente.