Publicado en Raspberry Pi

Raspberry Pi: Montar centro multimedia completo

Introducción

Ya he explicado muy detalladamente cada paso necesario para montar un centro multimedia con la Raspberry Pi. Lo que pretendo con este artículo es juntarlo todo, y hacer un resumen rápido tanto para los que ya son usuarios avanzados, como para los que ya han seguido los pasos alguna vez y no necesitan tanta palabrería para poner en marcha una nueva RasPi. Por supuesto, todos los pasos a seguir desde el PC son en Linux.

Paso 1: Instalar Raspbian

Descargar la última versión de Raspbian y descomprimir el .zip para obtener un fichero .img:

http://www.raspberrypi.org/downloads/

Insertar la tarjeta microSD en el PC y detectar donde está montada:

df -h

Desmontar todas las particiones de la tarjeta microSD (si hubiera más de una):

umount /dev/sdc1
umount /dev/sdc2

Instalar la imagen descargada en la microSD:

dd if=/ruta/descarga/zip/2015-01-31-wheezy-raspbian.img of=/dev/sdc bs=1M

Explicación extendida: Raspberry Pi. Paso 1: Instalar Raspbian

Paso 2: Primer arranque (raspi-config)

Inserta la microSD en la Raspberry Pi y conecta un teclado USB para poder moverte por las opciones, las más importantes son:

  1. Expand Filesystem: extiende el espacio utilizable por el sistema a toda la capacidad de la microSD.
  2. Change User Password: si no lo cambias, el usuario es pi y la contraseña es raspberry.
  3. Advanced Options > Memory Split: es la memoria que le asignamos a la GPU (procesador de gráficos), para que Kodi (XBMC) funcione perfectamente es aconsejable darle la mitad de la RAM, en la Raspberry Pi 2 tenemos 1 GB y en las demás 512 MB, así que pon 256 MB si tienes una RPi antigua o 512 MB si tienes la RasPi 2.
  4. Advanced Options > SSH: es fundamental activarlo para poder acceder a la RPi por red sin necesidad de teclado ni ratón.

El resto de opciones no son importantes para el funcionamiento o son cambios muy personales.

Lo que sí es importante es configurar una IP estática en la Raspberry Pi para poder acceder a ella siempre de la misma manera, así que edita el siguiente fichero:

sudo nano /etc/network/interfaces

Sustituye esta línea:

iface eth0 inet dhcp

Por todas estas:

auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1

Donde address es la IP estática que quieres que tenga tu Raspberry Pi y gateway la IP de tu router. Cierra y guarda el fichero con Ctrl+X, Y, Intro. Carga la nueva configuración y reinicia el servicio de red:

sudo ifup eth0
sudo service networking restart

Explicación extendida: Raspberry Pi. Paso 2: Primer arranque (raspi-config)

Paso 3: Instalar Kodi

Ya puedes acceder a la RPi por consola con un teclado USB o por SSH, la segunda opción es la más cómoda. En ambos casos edita el fichero de repositorios:

sudo nano /etc/apt/sources.list

Agrega la siguiente línea al final:

deb http://archive.mene.za.net/raspbian wheezy contrib

Cierra y guarda el fichero con Ctrl+X, Y, Intro. Agrega la firma para el nuevo repositorio:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED

Actualiza la lista de paquetes e instala Kodi:

sudo apt-get update
sudo apt-get install kodi

Edita la configuración básica de Kodi:

sudo nano /etc/default/kodi

Pon ENABLED=1, USER=pi y NICE=-10 para que Kodi se inicie automáticamente en cada arranque.

Explicación extendida: Raspberry Pi. Paso 3: Instalar Kodi o XBMC

Paso 4: Montar disco duro USB

Saber la ruta del disco duro en nuestra Raspberry Pi:

sudo fdisk -l

Si el disco duro no está formateado como ext3 o ext4 (al gusto), hazlo con:

sudo mkfs.ext3 /dev/sda1

Crea un directorio donde montar el disco duro:

sudo mkdir /media/discousb

Haz que tu usuario sea el propietario del nuevo directorio:

sudo chown pi /media/discousb

Edita el siguiente fichero para que el disco duro se monte en ese directorio cada vez que arranca el sistema:

sudo nano /etc/fstab

Agrega al final la siguiente línea:

/dev/sda1      /media/discousb      ext3      defaults      0      0

Cierra y guarda el fichero con Ctrl+X, Y, Intro. Monta el disco duro sin necesidad de reiniciar con:

sudo mount -a

Explicación extendida: Raspberry Pi. Paso 4: Montar disco duro USB

Paso 5: Instalar y configurar Transmission (descarga de torrents)

Instala Transmission:

sudo apt-get install transmission-daemon

Detén el servicio para poder modificar la configuración:

sudo service transmission-daemon stop

Crea un directorio para almacenar las descargas y otro para los torrents en proceso de descarga:

sudo mkdir /media/discousb/torrents
sudo mkdir /media/discousb/torrents/tmp

Modifica los permisos de las carpetas:

sudo chown -R pi:debian-transmission /media/discousb/torrents
sudo chmod -R 777 /media/discousb/torrents

Edita el fichero de configuración de Transmission:

sudo nano /etc/transmission-daemon/settings.json

Son muchas cosas, casi todas muy intuitivas así que voy a poner aquí lo básico:

"download-dir": "/media/discousb/torrents",

«incomplete-dir»: «/media/discousb/torrents/tmp»,

«rpc-authentication-required»: true,
«rpc-bind-address»: «0.0.0.0»,
«rpc-enabled»: true,
«rpc-password»: «j72x6kxx1fnpjkz9difeu1harx0v0oudwxsfzwuo8j0r8»,
«rpc-port»: 9091,
«rpc-url»: «/transmission/»,
«rpc-username»: «pi»,
«rpc-whitelist»: «0.0.0.0»,
«rpc-whitelist-enabled»: false,

Si no cambias el rpc-password por defecto es transmission. El resto está pensado para que puedas acceder a la interfaz del Transmission desde cualquier lugar del mundo por el puerto 9091, y desde ahí poder cambiar el resto de parámetros gráficamente.

Inicia el servicio de nuevo:

sudo service transmission-daemon start

Explicación extendida: Raspberry Pi. Paso 5: Descargar torrents con Transmission

A partir de aquí, el resto de pasos son para facilitarnos la vida, la funcionalidades básicas ya están instaladas.

Paso 6: Acceso remoto con ddclient y DNSdynamic

Regístrate en DNSdynamic:

https://www.dnsdynamic.org/signup.php

Haz login con tu email y tu contraseña y ve a «Add a new domain». Escribe tu subdominio y elige un dominio, todo junto será tu DNS dinámico. Ahora vamos a la Raspberry Pi a instalar el cliente:

sudo apt-get install ddclient

El asistente que aparece te lo puedes saltar entero porque no sirve para nada. Cuando termines edita el fichero de configuración del ddclient:

sudo nano /etc/ddclient.conf

Elimina todo lo que haya y pon esto:

daemon=300
protocol=dyndns2
use=web, web=myip.dnsdynamic.com
server=www.dnsdynamic.org
login=TU@EMAIL.COM
password='TUCONTRASEÑA'
server=www.dnsdynamic.org, \
protocol=dyndns2 \
TUURL

Cambiando únicamente login poniendo tu email, password poniendo tu contraseña y TUURL poniendo el DNS dinámico que elegiste en la web. Cierra y guarda el fichero con Ctrl+X, Y, Intro.

Explicación extendida: Raspberry Pi. Paso 6: Acceso remoto con ddclient y DNSdynamic

Paso 8: Compartir ficheros con samba

Vamos a convertir la Raspberry Pi en un servidor de ficheros tipo NAS. Instala samba escribiendo:

sudo apt-get install samba samba-common-bin

Edita el fichero de configuración:

sudo nano /etc/samba/smb.conf

Hay muchos parámetros, muy bien explicados, vamos a tocar lo básico para que funcione:

workgroup = WORKGROUP

wins support = yes

El parámetro wins support viene comentado, simplemente elimina la almohadilla (#) del principio de la línea. Además vamos a compartir una carpeta poniendo las siguientes líneas al final del fichero:

[DiscoUSB]
comment=Disco USB en la RPi
path=/media/discousb
browseable=yes
writeable=yes
create mask=0775
directory mask=0775
only guest=no

Ponle una contraseña al usuario de samba, no necesariamente la misma que la del sistema:

sudo smbpasswd -a pi

Reinicia el servicio para que coja la nueva configuración:

sudo service samba restart

Explicación extendida: Raspberry Pi. Paso 8: Compartir ficheros con samba

Paso final: Abrir puertos en el router

Tienes que redireccionar todos los puertos del router que estés utilizando en la Raspberry Pi para que apunten a la IP estática de la misma, para así poder acceder a los servicios desde fuera de tu red local. Los puertos típicos son:

  • 22 para el SSH y el SFTP
  • 9091 para el Transmission

Otros pasos

Aquí iré agregando el resto de pasos que voy explicando que no son fundamentales para crear un centro multimedia:

Publicado en Raspberry Pi

Raspberry Pi. Paso 9: Crea tu propia nube con BitTorrent Sync

Introducción

La comodidad de tener grandes cantidades de información en varios sitios a la vez es algo que se ha vuelto casi fundamental últimamente. Servicios como Dropbox, Google Drive o Mega son grandes soluciones, pero todos ellos tienen 2 problemas fundamentales: seguridad y capacidad.

Teóricamente son empresas muy potentes que ofrecen una seguridad muy alta, pero es un arma de doble filo, los hackers siempre van a ir a por los grandes. Robos de contraseñas están a la orden del día y, aunque habitualmente nuestros datos no suelen ser relevantes para nadie más, el hecho de tenerlo todo en servidores de terceros siempre es sinónimo de falta de control.

Pero todavía más claro es el inconveniente de la capacidad. Y el problema ya no es que te ofrezcan 10, 25 o 50 GB gratis, sino que a día de hoy, con los teléfonos grabando vídeos FullHD, e incluso 4K, ocupando 150 MB por minuto, y fotos de más de 20 mpx, en un par de años te ves con 100 GB sólo en contenido de la cámara del móvil.

Así que necesitamos algo que no dependa de terceros pero, sobre todo, que sea lo más ilimitado posible. Y ahí es donde entra en juego nuestra Raspberry Pi, disponible las 24 horas del día y con toda la capacidad que quieras enchufarle por USB, yo por ejemplo la tengo con 3 TB. Genial, tenemos el hardware necesario, ahora necesitamos el software: BitTorrent Sync. Es mi elección preferida porque:

  1. No alojas ningún fichero en ningún servidor externo
  2. Sincronizas dispositivos directamente entre ellos por P2P
  3. Al utilizar dicho protocolo, cuantos más dispositivos tengas conectados, más rápidas serán las sincronizaciones (y no al revés como pasa con los demás)
  4. El límite de velocidad no lo pone nadie, lo pone tu línea, tanto de subida como de bajada, pero siempre pudiendo sumar al tener más dispositivos conectados a la vez
  5. La capacidad máxima de almacenamiento la pones tú con el disco duro que elijas
  6. Los programas de escritorio y apps para móviles son todos gratuitos
  7. Sin límite de tamaño de carpeta ni de fichero, un vídeo de 1 TB está perfectamente permitido
  8. Multiplataforma: Linux, Windows, Mac, móviles, tablets, NAS, ARM, Power PC, Free BSD…

Creo que son razones más que suficientes para optar por esta solución así que vamos a ver como la ponemos en marcha.

Instalar BitTorrent Sync

Vamos a agregar un nuevo repositorio para descargar e instalar BitTorrent Sync en nuestra Raspberry Pi:

sudo nano /etc/apt/sources.list.d/btsync.list

Se abrirá un documento vacío en el que escribiremos:

deb http://debian.yeasoft.net/btsync wheezy main contrib non-free
deb-src http://debian.yeasoft.net/btsync wheezy main contrib non-free

Lo guardamos y salimos con Ctrl+O, Intro, Ctrl+X. Ahora le decimos al sistema que lea los nuevos repositorios:

sudo apt-get update

Normalmente no hay problemas con este comando, pero esta vez nos devolverá un error de GPG parecido a éste:

W: Error de GPG: http://debian.yeasoft.net wheezy Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 40FC0CD26BF18B15

No pasa nada, simplemente hay que instalar la llave pública para poder utilizar el repositorio:

sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 6BF18B15

Nótese que los últimos 8 caracteres del comando anterior son los últimos 8 del mensaje de error. Y ahora sí, cuando nos diga que ha conseguido importar 1 clave pública, vamos a instalar BitTorrent Sync:

sudo apt-get install btsync

No importa que diga que no se han podido autenticar los paquetes, los instalamos igualmente.

Configuración de BitTorrent Sync

Cuando termine de instalarse aparecerá una interfaz para configurar los parámetros del BitTorrent Sync. Voy a poner aquí la secuencia en imágenes de lo básico, el resto es cuestión de cada uno modificarlo a su gusto, es todo bastante intuitivo y está muy bien explicado.

Primero nos pregunta si queremos elegir el usuario que va a leer y escribir los directorios de BitTorrent Sync, obviamente sí queremos, pero no debemos elegir root sino el que usamos habitualmente que es pi, y como grupo vamos a dejar el de por defecto.

btsync1

btsync2

btsync3

Los siguientes parámetros por los que nos pregunta son la amabilidad, la IP desde la cual permitimos el acceso a la interfaz web y el puerto por el que mostrar dicha interfaz. En los 3 casos se pueden dejar las opciones por defecto, especialmente importante que la IP sea la 0.0.0.0 ya que, como vimos en el paso 6, gracias a ddclient vamos a poder conectarnos a la interfaz del BitTorrent Sync desde cualquier lugar del mundo. El puerto no debe coincidir con otro que ya estés utilizando, eso sí, recuérdalo bien porque tendrás que redireccionarlo en tu router como ya hiciéramos con los puertos del Transmission y del SSH.

btsync4

btsync5

btsync6

Por último nos pregunta si queremos limitar las conexiones web por SSL. Si tienes un certificado de este tipo en tu Raspberry Pi y quieres utilizarlo para ésto, adelante, pero lo normal es que respondas que no.

btsync7

Después terminará de instalar lo que falta e iniciará el btsync automáticamente.

Utilizar BitTorrent Sync

Desde este preciso momento puedes acceder al BitTorrent Sync desde cualquier navegador web escribiendo la IP de tu RPi seguido del puerto que elegimos antes, por ejemplo:

http://192.168.1.10:8888

La primera vez que lo haces te pide que escribas un usuario y una contraseña. No tiene que ser el mismo que utilizas para entrar a tu Raspberry Pi, de hecho, por seguridad no debería serlo, aunque por comodidad sí que puedes poner el mismo.

Una vez dentro tendremos una pantalla vacía con 5 iconos arriba a la derecha:

btsync10

  1. Campana: Cada vez que tengas una notificación aparecerá ahí, suelen ser peticiones de compartición de carpetas desde tus otros dispositivos
  2. Carpeta: Sirve para agregar un directorio a la sincronización, puedes mantener varias carpetas sincronizadas con diferentes dispositivos
  3. Enlace: Cuando compartes una carpeta se genera un enlace, poniéndolo aquí haces que se cree la sincronización, aunque el otro dispositivo ha de aceptarla
  4. Reloj: Muestra el historial de movimientos en las sincronizaciones
  5. Rueda: El típico menú de preferencias

Dentro de las preferencias vamos a poder pausar la sincronización, elegir las columnas que queremos ver en el lista de directorios compartidos, elegir el idioma de la web o limitar las velocidades de subida y bajada, entre otras cosas.

En cada línea de cada carpeta compartida, a la derecha del todo, aparecerá el botón de compartir, con el que podremos generar un enlace para que el resto de dispositivos se sincronicen con el directorio en concreto. Puedes elegir si quieres que el resto de dispositivos sólo puedan leer, o si prefieres que puedan además modificar y eliminar los ficheros contenidos.

btsync9

Fin

Creo que el resto se puede deducir sin problemas y es fácil de usar. Yo básicamente tengo la app instalada en el móvil con la que comparto la carpeta de la cámara con una carpeta específica en mi Raspberry Pi (modo sólo lectura, para que la sincronización sea unidireccional, es decir, si borro fotos de la cámara no se borran en la RPi y si agrego fotos en la RPi no se ponen en el móvil).

Y además tengo una carpeta en la RasPi que utilizo de «nube», en modo lectura y escritura, que comparto con el resto de mis ordenadores para poder trabajar con los datos allí almacenados bidireccionalmente, es decir, actualizando en todos los dispositivos, incluida la RPi, lo que modifico en cualquiera de ellos. Que cada cual se lo monte como mejor se adapte a sus necesidades.

También es posible compartir una carpeta concreta con varios amigos donde poner las fotos de un viaje o un evento, documentos de trabajo conjunto, prácticas de la universidad, música… todo lo que alcance la imaginación.