Microsoft SQL Server

Parece algo bastante obvio, pero más de una vez habrás tenido que obtener la fecha, sin la hora, de un campo datetime de SQL Server, probablemente para compararla con otra fecha, y has terminado por comparar día, mes y año por separado. Pues bien, hay una manera más fácil y limpia de conseguirlo.

Supongamos que queremos obtener solo la fecha de hoy:

CONVERT(DATE,GETDATE())

Si queremos la hora exacta de ahora mismo sin la fecha:

CONVERT(TIME,GETDATE())

Funciona exactamente igual con cualquier campo datetime y, por supuesto, devuelve un datetime.

Acceso FTP para Qviart Mini

Ya tenemos nuestro Qviart Mini educado y sabemos agregar canales nuevos o que hayan cambiado de frecuencia. Pero a poco que lo hayáis usado, os habréis dado cuenta de que transferir ficheros desde el móvil o PC hacía el decodificador, o viceversa, es un poco tedioso; siempre con el pendrive para arriba y para abajo, ya sea para actualizar el firmware o cambiar la lista de canales.

Por eso vamos a simplificar una acción tan común configurando el cliente FTP que trae el Qviart Mini, bastante escondido, por cierto:

Menú > Aplicaciones de red > Other Apps > Descarga FTP

En esta pantalla tenemos que poner los datos de nuestro servidor FTP: nombre del servidor, IP, puerto, nombre de usuario y contraseña.

Qviart Mini FTP

Al darle a “Conectar” nos aparecerá el mismo gestor de ficheros que tenemos al acceder a los USB. Buscamos el fichero que queremos y al darle a “OK” sobre él nos dará dos opciones:

  1. Download to USB: guarda el fichero en el USB, ideal para reutilizarlo varias veces
  2. Update directly: ejecutar una actualización de firmware o de canales directamente sin necesidad de guardar el fichero en el USB

Qviart Mini FTP

Eligiendo la primera opción, se nos creará una nueva carpeta en el USB llamada FTP_DOWNLOAD donde se guardarán todos los ficheros que descarguemos de esta manera.

ColdFusion

Normalmente sabemos qué columnas nos traemos de una query, y por eso las pintamos en el orden que nos interesa. Pero si quisiéramos mostrar los datos de una query sin necesidad de saber las columnas que traemos o, simplemente, son tantas que es muy laborioso escribir una línea para cada una, necesitas obtener el listado de columnas que nos devuelve la consulta.

ColdFusion nos ofrece ColumnList, pero si lo has probado sabrás que devuelve el listado de columnas pero en orden alfabético, no en el orden de la tabla o el especificado en la query.

<cfquery name="qry_alumnos" datasource="facultad">
SELECT id_alumno, nombre, apellidos FROM Alumnos
</cfquery>
<cfoutput>#qry_alumnos.ColumnList#</cfoutput>

Nos devolvería:

apellidos,id_alumno,nombre

Sin embargo, hay una manera de conseguir mostrar los campos ordenados, y es utilizar la función getColumnList().

<cfset columnas = ArraytoList(gry_alumnos.getColumnList())>
<cfoutput>#columnas#</cfoutput>

Esto nos devolvería:

id_alumno,nombre,apellidos

Y así es como tendríamos un array de campos perfectamente ordenado tal y como debe ser, y no en orden alfabético.

Para completar os dejo el código para mostrar los resultados en una tabla HTML:

<table>
   <tr>
      <cfloop index="i" list="#columnas#">
         <td><cfoutput>#i#</cfoutput></td>
      </cfloop>
   </tr>
   <cfoutput query="qry_alumnos">
      <tr>
         <cfloop index="i" list="#columnas#">
            <td>#evaluate(i)#</td>
         </cfloop>
      </tr>
   </cfoutput>
</table>

En el primer bucle cfloop pinto los nombres de los campos y en el segundo los datos de cada registro.

Agregar canales nuevos al Qviart Mini

Ya vimos como educar el Qviart Mini para poder ver los canales de pago por satélite de manera gratuita y sin tener que tocar nada en el futuro. Sin embargo, las frecuencias por las que se emiten los canales pueden ir cambiando con el tiempo (Nick Jr.), así como crearse nuevos canales (BeIN Sports Spain) o destruirse los que ya había (Discovery MAX).

Ante esta situación hay dos posibles acciones por nuestra parte: esperar a que alguien cree un nuevo listado de canales, descargarlo y ponerlo en nuestro decodificador, o buscar nosotros mismos ese canal concreto y ponerlo en el sitio que queramos.

Obviamente aquí voy a explicar la segunda opción, que sirve igualmente para el Qviart Mini como para el Qviart Unic. Lo primero es saber dónde está el canal que queremos, para ello vamos a acceder a la siguiente web:

http://es.kingofsat.net/pack-digitalplusa.php

Podemos utilizar filtros para encontrar lo que buscamos o, más rápido todavía, pulsar Ctrl+F y escribir el nombre del canal. En cualquier caso, una vez sepamos donde está, nos tenemos que fijar en la barra superior que lo contiene. Por ejemplo, vamos a buscar MTV Rocks.

Como ves, lo primero que pone en la barra es 19.2ºE y justo después Astra 1M. Éste es el satélite al que apunta nuestra parabólica. Si es otro, obviamente no nos vale esta información, pero es el más típico y al que apuntan casi todas las antenas comunitarias.

Después vemos que pone 11739.00 V 66, Astra 1M, DVB-S, QPSK, 27500 3/4, ASTRA 1, 38.0 Mbps, NID:1, TID:1066.

Lo que nos interesan son el 11739 y el 27500 que marco en negrita. Son los dos datos que vamos a tener que poner en el decodificador para poder sintonizar, tanto el canal que buscamos, como el resto de los que hay bajo la misma cabecera, en este caso nos encontrará: VH-1, MTV Rocks, Nickelodeon Spain y Nick Junior.

Qviart Mini

Teniendo apuntados los datos que necesitamos, ahora nos vamos al decodificador y accedemos a Menú > Instalación > Configuración de antena. Aquí hay que modificar 3 cosas:

  • Trasponder: 11739/V/27500/3/4
  • Tipo LNB: 09750
  • Empezar la búsqueda: Buscar TP

Al pulsar OK te hará un par de preguntas, responde a ambas que NO (eliminar canales existentes y búsqueda por red) y cuando termine tendrás los nuevos canales al final de tu lista. Luego ya es cuestión de colocarlos donde te guste.

Sólo un apunte más, el tipo LNB 09750 es el típico de las parabólicas comunitarias, si la tuya es individual tendrás que buscar tu tipo LNB.

JavaScript logo
Como ya sabrás, JavaScript se ejecuta en el cliente, por lo que no puedes preguntar por cosas del servidor. Sin embargo, sería muy bueno tener una función que nos dijera si un archivo existe en el servidor para poder tomar decisiones al respecto.

Pues bien, la solución nos la da AJAX. Pedimos la cabecera del archivo que queremos comprobar y si nos devuelve un 404 es que no existe, así de fácil. Sé que al leer AJAX tendemos a tirar por jQuery, pero en este caso, al ser algo tan sencillo voy a explicarlo en JavaScript puro, que siempre es más rápido que tener que cargar un framework.

function existeUrl(url) {
   var http = new XMLHttpRequest();
   http.open('HEAD', url, false);
   http.send();
   return http.status!=404;
}

Como puedes ver, ni siquiera necesitas cargar el archivo ya que solicitamos sólo el ‘HEAD’ (no hacemos ni GET ni POST), por lo que aunque sea de 100 megas tendrás una respuesta rápida. La misma función se podría hacer preguntando si el status es 200, que sería que existe el fichero y la cabecera del mismo es correcta.

Por cierto, el false del open es para que la consulta sea síncrona y así el return se ejecute cuando haya terminado de solicitar la cabecera, no vaya a ser que la conexión sea muy pobre y no le de tiempo a hacer el send antes de tener la respuesta del open. La url es relativa al sitio web.

Introducción

La necesidad de tener un decodificador o receptor satélite surgió hace muchos años, no es precisamente algo moderno, pero ya que cada vez es más difícil tener contenido gratuito en la televisión normal, especialmente en cuanto a fútbol, fórmula 1 o motos, esta necesidad se ha vuelto más pronunciada, por no hablar de los desorbitados precios que nos oferta la M verde y la necesidad de contratar fibra y móvil con ellos para poder ver la tele.

Teniendo este panorama vamos a optar por comprar un receptor que sea capaz de decodificar la señal satélite, ya sea de manera gratuita o pagando. En este artículo pretendo solucionar algunas dudas en torno a este mundillo y ver cómo instalar y configurar un decodificador para poder ver todos los canales de Movistar+ y algunos más.

Elección del decodificador

La elección del decodificador es lo más complicado de todo ya que hay muchas marcas y cada una tiene muchos modelos: Qviart, Iris, Engel, MVision, DoomBox, Vu+, Nanoxx…

Yo me he decidido por Qviart ya que, hasta donde yo sé, es la única marca que te garantiza más de 2 años de decodificación gratuita de la señal satélite, de hecho, no tiene límite. Casi todas las marcas a los 2 años dejan de servirte IKS (Internet Key Sharing) que es el método por el cual tu receptor es capaz de decodificar la señal satélite. En teoría lo hacen así para no saturar los servidores IKS. En todo caso, en 2 años está más que rentabilizado el decodificador y podrías comprar otro o utilizar otros sistemas como CCCam o Newcam, que funcionan tanto gratuitamente como pagando. Las gratuitas duran bastante poco y las tienes que ir buscando y cambiando manualmente y las de pago suelen ser más estables. En cualquier caso, o mucho trabajo o pagar, aunque siempre muchísimo menos que con las operadoras.

Una vez optado por Qviart, me decanto por el Qviart Mini ya que, además de ser el más barato, es el más pequeño, que siempre viene bien para ocultarlo en el salón. Su hermano mayor, el Qviart Unic, es idéntico en prestaciones pero más grande en tamaño por lo que se calienta menos. Además tiene display digital y un botón físico de apagado/encendido. La diferencia de precio es de unos 20-25 euros y todo lo que cuento aquí sirve para ambos decos.

Qviart Mini

Acciones previas

Con el Qviart Mini en casa necesitamos algunas cosas que no vienen en la caja: un cable ethernet o antena wifi USB compatible, un cable HDMI para conectarlo a la TV y un cable de antena tipo F de rosca en el extremo que se conecta al decodificador (como el de la imagen de abajo). Éste será el cable que vaya a la toma de satélite de la pared. Si tu comunidad tiene antena parabólica comunitaria probablemente conectándolo a la toma de televisión en el agujero que no es para la TV normal será suficiente, seguramente ponga Radio, FM o SAT. Si tu comunidad no tiene parabólica o vives en una vivienda unifamiliar tendrás que comprar una, instalarla y orientarla. Pero esa parte no es objetivo de este artículo (aunque es muy fácil de hacer).

Conector F

Educar el Qviart Mini

Lo primero es modificar el firmware original del decodificador para que sea capaz de conectarse a los servidores IKS, CCCam, Newcam, etc. En nuestro caso vamos a instalar Prometheus, pero, muy importante, antes hay que comprobar que el firmware original es el 4.00* o 5.00. Si es de reciente compra lo será seguro, si no, habría que actualizar primero el firmware original para poder instalar Prometheus encima.

Nada más arrancar el Qviart Mini nos aparecerán varios iconos en la parte inferior sobre fondo completamente negro, probablemente esté todo en inglés así que con el mando vamos a Settings > Language y en la primera opción elegimos Español. Ahora nos vamos a Configuración > Acerca de STB y comprobamos que efectivamente donde pone “Versión de Software” pone 4.00* o 5.00.

Backup del firmware original

Antes de tocar nada es conveniente hacer un backup del firmware original que trae el decodificador. No es muy crítico porque está en varios foros, pero no está de más tenerlo guardado en algún sitio por casa.

Inserta un pendrive en uno de los puertos USB y ve a:

Menú > Expansión > USB > Botón amarillo (Cargar) > Cargar todo en USB > Nombre usb_boot_upgrade > OK

Ahora mete ese pendrive en un PC y guarda los ficheros que te ha creado.

Instalar firmware

El proceso para instalar el firmware es válido tanto para poner el 5.00 del original como para meter Prometheus, que a día de hoy goza de la versión 1.08. Lo primero es descargar el firmware correspondiente, yo los he conseguido en ForoKeys, descomprimirlo y meter el fichero resultante en un pendrive, puedes meter ambos firmware si vas a tener que instalar los dos. Conecta ese pendrive en el deco y ve a:

Menú > Expansión > USB > Selecciona el firmware que quieres instalar > OK > ¿Quiere actualizar la base de datos? > SI > OK

Aparecerá una barra de carga y al terminar se reiniciará el decodificar automáticamente.

Instalar Prometheus

Activar IKS

Una vez que tenemos el firmware Prometheus instalado vamos a comprobar que está funcionando, vamos a:

Menú > Expansión

Donde ahora habrá varias opciones más, la última es la que nos dice si Prometheus está conectado o desconectado. Si es la segunda, pulsamos sobre esa opción para conectarlo, apagamos y volvemos a encender el decodificador. A partir de ahora debería conectarse automáticamente cada vez que arranque.

Comprobar luz Prometheus

Sintonizar canales o instalarlos

Ya tenemos todo listo para poder ver la señal satélite gratuitamente en nuestra televisión. Lo único que hay que hacer es sintonizar los canales como haríamos en una TV normal. Pero es un proceso bastante largo como puedes intuir. Así que podemos instalar directamente los canales que alguna buena persona haya exportado desde su decodificador.

Canales Qviart Mini

Para poder instalar la lista de canales de otro usuario hay que descargarla, descomprimirla y meterla en el pendrive, después ve a:

Menú > Expansión > USB > Selecciona la lista de canales > OK > ¿Quiere actualizar la base de datos? > SI > OK

Esto no sólo tarda un segundo, si no que, además, te deja los canales ordenados como los tuviera el usuario original, lo que nos ahorra un gran trabajo también. La única precaución que hay que tener es que sea un listado de canales de una antena que apunte al mismo satélite al que apunta nuestra parabólica. Habitualmente es Astra1 (19.2E).

Sintonizar canales Qviart Mini

En todo caso, si no encuentras una lista de canales que te guste, o tu antena apunta a otro satélite, o prefieres experimentar la emoción de ver como se van detectando los canales, entonces ve a:

Menú > Instalación > Configuración de antena

Aquí deberemos elegir el satélite al que apunta nuestra parabólica. Si no sabes cual es puedes ir cambiando el satélite hasta que en la barra superior donde pone Q aparezca algo mayor de 0%. Aunque insisto, lo normal es que sea Astra1 (19.2E). Después tienes que seleccionar la opción “Empezar la búsqueda” y ponerte cómodo, además de tardar bastante tendrás todos los canales descolocados, y no son precisamente pocos, más de 300 encontrará seguro.

Qviart Mini Movistar F1 HD

Instalar canales IPTV o Netlink

Si no tenemos suficiente con los cientos de canales que nos sintoniza el decodificador, podemos instalar otro buen puñado de canales streaming. Yo por ejemplo tengo instaladas las autonómicas españolas.

Como con todo lo anterior, hay que buscar en algún foro un listado de canales IPTV, descargar, descomprimir y meter en el pendrive, después, como siempre, ir a:

Menú > Expansión > USB > Selecciona la lista de canales > OK > ¿Quiere actualizar la base de datos? > SI > OK

Para ver estos canales hay que ir a:

Aplicaciones de red > Netlink

Extras

Además de todo esto, que no es poco, el decodificador tiene algunas funciones más como juegos, DLNA, Timeshift, grabador vía EPG o con horario manual, CCCam, etc. Pero son cosas que ya os dejo para investigar vosotros, a no ser que haya mucha demanda de información y entonces podré explicar algo concreto por aquí.

Pros y contras

Por último, voy a valorar, bajo mi experiencia, lo bueno y lo malo que tienen los decos en general y este Qviart Mini en particular.

Pros: poder ver todo lo que se emite por satélite de manera gratuita por una inversión inicial de 90€ como pago único, utilizar servidores IKS para no tener que andar buscando claves: una vez instalado Prometheus no hay que volver a tocar el decodificador nunca más (a no ser que quieras actualizar la versión), grabar programas con el decodificador en standby, poder pausar un canal en directo y seguir por donde lo pausaste, no dependes de la calidad de tu conexión a Internet ya que la señal viene directamente del satélite (sólo se usa la red para actualizar automáticamente las claves)…

Contras: los servidores IKS a veces se saturan o se caen (pero normalmente cambiando de canal todo vuelve a funcionar), los menús son bastante arcaicos, no existe ninguna garantía de que todos los canales funcionen siempre, los CCCam de pago son muy estables pero no son gratis a pesar de ser bastante asequibles, los CCCam gratuitos duran bastante poco y es tedioso ir cambiándolos…

Canales satélite gratis

Conclusión

Hay mucho texto porque me gusta explicarme bien pero en definitiva tardas 5 minutos en tener el deco listo. Si quieres ver todo el fútbol, la fórmula 1, las motos, las películas de estreno, las series, los canales infantiles, el golf y en definitiva todo lo que ofrece Movistar+ y algunas cosas más, especialmente extranjeras, sin duda merece la pena la inversión, a fin de cuentas es lo que te cobra Movistar por 1 mes de su servicio. Falla, es verdad, pero muy poco, de hecho a mi sólo me ha fallado en algunos partidos de fútbol y cambiando de canal se soluciona, en el resto de canales va prácticamente siempre perfecto. Además puedes compartir por streaming en red local y ver lo que reproduzca el deco en cualquier dispositivo de casa.

actualizacion de software ubuntu

Ubuntu te lanza una Actualización de software pero en mitad del proceso se queda colgado (sí, Linux también se cuelga), la única manera de terminar es cerrando la ventana y forzando el cierre. No hay mensaje de error ni pistas para solucionarlo. Sin embargo, los más intrépidos habréis intentado ejecutar la actualización por consola, y ahí sí, recibimos algo parecido a esto:

E: No se pudo bloquear /var/lib/apt/lists/lock - open (11: Recurso no disponible temporalmente)
E: No se pudo bloquear el directorio /var/lib/apt/lists/

La ruta concreta es lo de menos porque puede pasar con varias diferentes, por suerte el problema es siempre el mismo: algún proceso se ha quedado enganchado al fichero y no deja que nadie más lo utilice. La solución también es única:

sudo fuser -vki /var/lib/apt/lists/lock

Donde la ruta es la que nos dio el primer error, fuser es un comando que nos lista los ficheros abiertos y las opciones del mismo son:

  • v: verbose, es decir, ver de forma más extensa lo que se va a ejecutar
  • k: kill, mata los procesos que tengan el fichero ocupado
  • i: interactive, pide confirmación para matar cada proceso

Y nada más, una vez muertos los procesos que tenían ocupado el fichero podemos actualizar sin problemas. En cualquier caso, siempre es positivo reparar paquetes rotos y eliminar los que ya no sirvan, por si acaso alguno ha producido este inconveniente:

sudo dpkg --configure -a

sudo apt-get autoremove

Si además queremos aprovechar que tenemos la consola abierta para hacer la actualización ejecutamos:

sudo apt-get update && sudo apt-get upgrade

Que es exactamente lo que hace visualmente Actualización de software.

Raspberry Pi Centro Multimedia

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:

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.

samba

Introducción

Antes de tener la Raspberry Pi probablemente tuvieras un ordenador donde almacenabas todo tu contenido multimedia. Ahora lo ideal sería transferir todo ese material al disco duro USB conectado a la RPi. Ya que tenemos SSH podríamos utilizar el protocolo SFTP para transferir los ficheros, pero también podemos tener una carpeta compartida en la red mediante samba y así transformar nuestra RasPi en un servidor NAS.

Instalar samba

Lo primero es instalar los dos paquetes necesarios para lo que queremos:

sudo apt-get install samba samba-common-bin

El primero es el samba en sí mismo y el segundo nos sirve para poder asignar una contraseña a nuestro usuario de samba. Hasta aquí fácil. Ahora viene lo más crítico, que es configurarlo apropiadamente. El 90% de los fallos vienen de aquí.

Configurar samba

Vamos a tocar lo básico, el fichero de configuración está muy bien comentado y explicado, por si te apetece toquetear y adaptarlo a tus necesidades, pero para el común de los mortales habrá que cambiar muy pocas cosas.

sudo nano /etc/samba/smb.conf

Toda línea que empiece por # (almohadilla) es un comentario y no tiene efecto en la configuración del samba. Nosotros nos tenemos que fijar en 2 parámetros fundamentalmente:

workgroup = WORKGROUP

wins support = yes

El primero es workgroup y da nombre al grupo de trabajo de tu red, por defecto viene el que le pone Windows de serie a sus redes. Normalmente no es necesario cambiarlo. El segundo, wins support, aparecerá comentado, con una almohadilla delante. Es muy importante que descomentes esa línea (quita la #). Da igual si vas a utilizarlo o no, eso ya lo decides tú poniendo yes o no, pero la configuración del samba debe leer ese parámetro para que todo funcione correctamente.

Compartir carpetas

Una vez puestos correctamente esos 2 parámetros del principio del fichero nos iremos al final del todo y en líneas nuevas escribiremos esto:

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

Donde la primera línea define el nombre que tendrá nuestra carpeta compartida en la red, en mi caso DiscoUSB. comment puede ser cualquier cosa que quieras que defina a la carpeta. path es la ruta de la carpeta que quieres compartir, como yo comparto todo el disco duro USB especifico dónde está montado. browseable para que se pueda navegar por los subdirectorios. writeable para poder leer y escribir. create mask y directory mask definen los permisos que se aplican a los ficheros y directorios nuevos. only guest permite acceder como usuario anónimo o no.

No creo que sea difícil de entender. Si quieres compartir más carpetas, debajo de estas líneas pondrías otras similares para cada carpeta, por ejemplo:

[MusicaRPi]
comment=Musica en la RPi
path=/media/discousb/musica
browseable=yes
writeable=yes
create mask=0775
directory mask=0775
only guest=no

[Torrents]
comment=Torrents para Transmission
path=/media/discousb/torrents
browseable=yes
writeable=yes
create mask=0775
directory mask=0775
only guest=no

Y así con todas y cada una de las carpetas que desees compartir en tu red. Yo prefiero compartir directamente el directorio donde está montado el disco duro USB y así tengo acceso a todo, pero cada uno que se lo monte como le convenga. Ahora guardamos y cerramos el fichero de configuración: Ctrl+O, Intro, Ctrl+X.

Establecer contraseña

Por último, vamos a darle una contraseña a nuestro usuario pi, la lógica diría que es la misma que para acceder al sistema, pero no, samba tiene su propia gestión de contraseñas así que hay asignarle una a cada usuario, puedes utilizar la misma para no liarte u otra diferente por seguridad:

sudo smbpasswd -a pi

Nos pide que pongamos una contraseña dos veces y fin. Esa será la contraseña que debemos poner cuando queramos acceder a alguna de las carpetas compartidas que definimos antes en el fichero de configuración.

Para terminar vamos a reiniciar el servicio para que todos los cambios surtan efecto:

sudo service samba restart

Fin

Ya podemos compartir ficheros entre la Raspberry Pi y cualquier otro dispositivo que tengamos en casa sin necesidad de utilizar un software de FTP, ya sea un PC con Windows o con Linux, un Mac o un dispositivo móvil. En Android yo utilizo ES File Explorer para acceder a mis carpetas compartidas por LAN. Cojo cosas de la RasPi y pongo cosas en ella sin problemas.

Y mañana explicaré como montar tu propia nube privada (algo para sustituir a Dropbox) de forma segura, con capacidad ilimitada y sin servidores de terceros gracias a la RPi y BitTorrent Sync (ownCloud lo dejaremos para más adelante).