Controla tu máquina linux desde tu móvil/tablet (iOS, Android etc.)


Prefacio

Siempre me ha gustado aprender idiomas. Y desde hace bastante tiempo domino perfectamente el español y el inglés, pero desde hace muchos años he tenido "la espinita" de aprendier uno nuevo. Me recomendaron mucho aprender alemán (varias personas) pero es demasiado mainstream para mí... (Aunque sí pienso aprenderlo en el futuro).

Por ahora, me he decidido por el ruso como principal lenguaje para aprender (con la ayuda del fantástico sitio LearnRussian de RT) y aunque es muy genial, hay un pequeño problema: El ruso se escribe en alfabeto cirílico jajaja:

Algunas letras del alfabeto cirílico


iOS Devices


Al principio, el no tener un teclado que me permitiera escribir en este alfabeto cómodamente me desmotivó un poco, sin embargo recordé que tengo mi iPhone y en los dispositivos móviles de hoy en día, los periféricos han dejado de ser una limitación. Gracias a un pequeño truco que les voy a enseñar, ahora soy capaz de controlar mi computadora desde el iPhone (esto incluye usar su cómodo teclado virtual en la computadora de escritorio por medio del dispositivo) y así es como he logrado facilitar mi aprendizaje del nuevo idioma, veamos entonces:

NOTA: Para mis ejemplos usaré Fedora Linux como distribución, pero puedes adaptar lo que explicaré acá a cualquier otra distro sin esfuerzo alguno, ya que más allá del comando para el gestor de paquetes no usaré nada específico de la distro como tal.

1) Instalar dependencias

Para lograr esto, ocuparemos 1 solo paquete x11vnc, que se instala desde repos oficiales de cualquier distro:

sudo yum -y install x11vnc

y para el iDevice, ocupamos la aplicación HippoRemote (Lite o PRO según tus necesidades y hasta qué punto o qué tanto quieras controlar tu computadora. Yo ocupo la PRO porque la Lite no permite usar el teclado cirílico del iPhone, sólo el normal); Puedes adquirir esta app desde la AppStore directo en tu iDevice. Otra app que ocuparemos será Fing (es completamente gratuita) e igual la puedes instalar desde la AppStore en tu dispositivo.


2) Conexión VNC

Ahora necesitaremos correr un servidor VNC sencillo en nuestra máquina linux. Como este servidor no puede encriptarse con el método que usaremos (dado que de hacerlo no sería accesible a la aplicación que ocuparemos para el control remoto) lo primero que necesitamos hacer es restringir todo acceso/control a nuestra máquina para cualquier dispositivo distinto de nuestro iDevice, (por eso instalamos Fing). Entonces primero y antes que nada, abrimos Fing y ubicamos la dirección IP de nuestro iDevice:


Para luego correr este comando en la consola de la computadora que queramos controlar:

x11vnc -usepw -ncache 10 -ncache_cr -noxdamage -display :0 -allow 192.168.2.3

Aquí hay 2 parámetros importantes: el :0 se refiere al display/pantalla. Si tienes un sólo monitor/salida será :0 y si tienes más añadidos serán :1, :2, :3 etc. (Las sesiones de X abiertas cuentan como salidas aunque estén ejecutándose en una misma pantalla). El 192.168.2.3 corresponde a la IP de tu iDevice según Fing.

Al correr el comando se te pedirá ingresar una contraseña (recomiendo un PIN más que una contraseña en este paso) y se te preguntará si se guardará para futuras sesiones (recomiendo responder que sí). Aunque este comando es en sí seguro (al pedir una autenticación y tener un sistema de autorización que sólo permite el control por medio de VNC al iDevice); No recomendaría bajo ningún motivo usar este puente sobre una red Wi-Fi pública o para pronto bajo cualquier sospecha de que tu navegación está siento interceptada por alguna tercera parte (en sí, no recomiendo hacer esto fuera de tu casa y tu red protegida propia pues jajajaja), ya que la información que se envía del iDevice a tu computadora es suceptible a sniffing, (pues no está encriptada bajo SSL ni nada similar), este setup es entonces enteramente para uso privado y personal, Nada de andar luciéndote en el Starbucks.

Una vez que el servidor esté corriendo en la computadora, debes asegurarte de que ambos dispositivos (el iDevice y la máquina) estén conectados a la misma red/router por medio de Wi-Fi, Ethernet, como sea (Duh! si eso ya lo verificamos con fing! jajaja) y si esto es correcto, entonces puedes proceder a desbloquear el puerto 5900/TCP en tu firewall:


NOTA: En fedora podemos elegir si esta regla será sólo para esta sesión (ejecución) o permanente (para siempre), también debemos recargar el firewall desde el menú de opciones después de aplicar nuestros cambios. En algunos casos (como en el mío) ésto bastará para abrir el puerto, pero en otros posiblemente también debas hacerlo en el firewall del módem/router para que la conexión/puente funcione.


3) ¡A conectarse!

Ya que abrimos el puerto, obtenemos la dirección IP de nuestra máquina a controlar desde la terminal con el comando ifconfig e introducimos los datos para Nueva Conexión VNC en HippoRemote como se detalla a continuación:


(Reemplazando address por la dirección IP de tu equipo y password por la contraseña que elegiste para la conexión VNC, además de asignarle un nombre a dicho equipo, la MAC Address la descubre la aplicación ya después) y listo, podremos empezar a usar el control remoto de HippoRemote en nuestra computadora.

Una excelente app por la que vale la pena pagar sin lugar a dudas y que nos puede ayudar para realizar más de una tarea, como quizá, no sé... Facilitar el aprendizaje de ruso, administrar/controlar otras apps (como spotify/chrome y una larga lista) o incluso hacer del iDevice nuestro Joystick para algunos juegos entre otras muchísimas cosas.




Extra: ¿Y si tengo un Android u otro móvil?


Hace tiempo el amigo replicante (+Jose Tannhausser) nos hablaba en su blog de QRemoteControl, una aplicación con un enfoque similar al de HippoRemote pero disponible para Android, Blackberry, Symbian, Meego, y Sailfish OS. De momento no parece tener la potencia del hipopótamo, sin embargo tiene algo bastante bueno y esto es que es de código libre, así cualquiera puede aportar al proyecto y hacerlo crecer y mejorar. QRemoteControl requiere la instalación de un servidor propio en la máquina a usar (software disponible para muchas distros allá afuera en forma de paquete oficial) y una app en el dispositivo móvil, ambas cosas son completamente gratuitas (obviamente) y están disponibles desde la web oficial del proyecto. Más información en el post que le dedicó tannhausser por acá.

Finalizando...

Tener la posibilidad de usar apps para control remoto de nuestros equipos es algo realmente cool, ya que nos permite darle un uso más práctico a nuestro smartphone (y simbiótico con la PC) que si usáramos un visor VNC directamente para lograr un resultado similar (cosa que puede ser bastante lenta según tus equipos). Lo más genial, es que al ser casi universales, estas 2 apps nos permiten abrir un mundo de posibilidades para todo tipo de PC's (desde las más básicas hasta las más modernas) y apps, sin tener que pasar por algo tan tedioso como la configuración de un setup LIRC (mismo que incluso tiene varias limitantes a comparación de éste enfoque) o bien, estar sufriendo porque el control remoto específico de tu app/servicio no está disponible en Linux (¡cof cof!! spotify) jaja.

P.D. Nótese que el título de este post dice "máquina linux" en lugar de PC explícitamente porque este mismo setup (en el caso de iOS + HippoRemote) nos serviría para utilizar un iDevice como control remoto de cualquier tipo de "aparato linux" que permitiera instalar y usar x11vnc.