T01E19 - Controlar tu Raspberry con un botón desde Android

Una de los aspectos que mas me gusta y mas me atrae es las posibilidades que te ofrece GNU/Linux para emprender cualquier tipo de proyecto que se te pueda pasar por la cabeza. Esto ya lo reflejo directamente en la propia entradilla del podcast. Y lo cierto es que, ya sea en tu Raspberry Pi, o en cualquier otro tipo de placa SBC, en un VPS o en tu ordenador portátil, tu GNU/Linux representa todo un mundo de posibilidades. Sin embargo, hoy en día siempre queremos ir paso mas allá, y a parte de las posibilidades que nos ofrecen todos estos equipos, buscamos su inter operatividad. Así que, precisamente, esto es de lo que voy a tratar en este nuevo episodio del podcast, como puedes controlar tu Raspberry con un botón desde Android.

Con GNU/Linux, y todos los proyectos que rodean y provienen del software libre, podemos hacer desde lo mas sencillo a lo mas complejo. Desde levantar un servido de páginas web como Apache o Nginx, a un servidor de bases de datos como MariaDB o PostgreSQL. Igualmente, podemos levantar un servidor de voz sobre IP, tan espectacular como Mumble, así como cantidad de otros servicios a cual mas interesante.

Sin embargo, un día te das cueeenta de que tu Raspberry se arrastra, y todo comienza a cambiar. Tu relación con tu Raspberry Pi empieza a degradarse, ya no es lo que era, no fluye la misma energía… Entonces, se te ocurre lo mas sencillo, desinstalar paquetes y servicios que no utilizas.

Empiezas por los que no utilizas nunca, hasta que llega un momento, que te encuentras con algunos que utilizas de forma puntual. Estos servicios te cuesta mas desinstalarlos e instalarlos cada vez que quieres utilizarlos, que pararlos y levantarlos únicamente cuando los necesites.

Efectivamente, esa es una buena solución. Cuando los necesites,te puedes conectar vía SSH y levantar el servicio que necesites. Y una vez terminado lo tumbas. Sin embargo, no siempre estás delante de tu equipo para hacerlo. Entonces, recuerdas que, como te comenté en el episodio 14 del podcast, puedes recurrir a Termux. Sin embargo, recurrir a Termux te da pereza. Eso a pesar de que siempre llevas tu Android contigo. Así que la solución es utilizar una aplicación como la que te cuento en el podcast, que te permite controlar tu Raspberry con un botón desde Android…

Controlar tu Raspberry con un botón desde Android

Controlar tu Raspberry con un botón desde Android

Para poder controlar tu Raspberry con un botón desde Android, necesitamos actuar tanto en el móvil Android como en la Raspberry. Que conste, que cuando me refiero a Raspberry, es exactamente igual que si me refiriera a un VPS o a tu portátil. Esto se puede aplicar a cualquier equipo con GNU/Linux.

Actuando en la parte de cliente

Primero vamos a actuar en la parte de cliente, es decir, actuaremos sobre el equipo que queremos controlar. Como sabes, en GNU/Linux, para levantar o tumbar un servicio necesitas derechos de administrador. Con tu usuario, normalmente, no podrás hacer este tipo de operaciones. Si las operaciones que quieres realizar, requieren de derechos de administrador, te recomiendo que sigas los pasos que te indico a continuación. Es posible, hacerlo de otras maneras, pero sinceramente, esta es la que mas me gusta.

  • Crearemos un nuevos usuario
sudo adduser usuario_gestor
  • Añadiremos a nuestro nuevo usuario al grupo sudo
sudo gpasswd -a usuario_gestor sudo
  • Editaremos el archivo /etc/sudoers, con sudo visudo e indicaremos que acciones puede realizar nuestro usuario, y que no necesita introducir password.
usuario_gestor ALL=(ALL:ALL) NOPASSWD:ALL

Este usuario tiene que acceder perfectamente vía clave SSH. Para no tener problemas con contraseñas, te recomiendo que utilices clave SSH, tal y como explico en el artículo sobre sincronización sin contraseña, donde te explico como puedes gestionar el acceso de esta forma.

Una vez realizadas estas sencillas operaciones, ha llegado el momento de comprobar que nuestro nuevo usuario funciona conforme a lo esperado. Para ello,

  • conectate vía SSH desde otro equipo
  • comprueba que no necesitas contraseña
  • ejecuta algunos comandos con sudo y comprueba que no te pide contraseña.

Si todo ha ido conforme a lo esperado, y no has tenido ningún problema, a partir de ahora todo va a ser coser y cantar.

En la parte de Android

Una vez tenemos resuelta la parte de cliente, ahora nos toca atacar la parte del móvil, que sin lugar a dudas es mas sencilla, si no te manejas bien con el terminal.

El primer paso, evidentemente, es instalar la app, que te permitirá controlar tu Raspberry con un botón desde Android. Existen diferentes apps disponibles. Tras probar varias de ellas, finalmente me decanté por SSH Button. No tiene, anuncios, y es muy sencilla de configurar y utilizar.

Lo cierto es que precisamente por su sencillez, tampoco te deja hacer grandes cosas. Pero realmente si necesitas hacer algo mas complicado siempre puedes recurrir a Termux para resolverlo.

Las opciones que te ofrece SSH Button a la hora de su configuración son las siguientes,

  • Settings. Para establecer el valor del timeout
  • Default. Te permite definir una serie de parámetros por defecto para el cliente. Estos parámetros son los que utilizará cada vez que crees un nuevo botón.
    • IP
    • Puerto
    • Nombre de usuario con el que nos conectamos al cliente
    • Contraseña del usuario con el que nos conectamos al cliente

Una vez hemos definido el valor del timeout y los parámetros por defecto, podemos empezar a crear botones para controlar nuestra Raspberry con un botón.

Para crear un botón, tendremos que configurar los siguientes parámetros,

  • Etiqueta. Nos permite definir el texto que aparece en el botón. Procura que este texto sea lo suficiente descriptivo para que no lleve a confusión.
  • Comando. Este es el comando que queremos ejecutar al pulsar el botón. En caso de que sea necesario ejecutarlo con derechos de administrador tendremos que añadir sudo.
  • A parte de estos dos parámetros que deberían ser distintos para cada uno de los botones, tenemos que establecer los parámetros del cliente. Estos parámetros serán por defecto los que hemos definido, en la configuración por defecto. Así cuando creemos un nuevo botón, aparecerán esos parámetros. Aunque, evidentemente, siempre los podemos modificar. ¿De que parámetros hablamos?
    • Dirección IP u Puerto de la Raspberry o del equipo que sea
    • Nombre de usuario con la que nos autentificaremos en el servidor.
    • Contraseña, correspondiente al usuario anterior.
    • Clave privada de usuario. Tendremos que marcar, esta opción, si queremos utilizar una clave SSH para acceder al servidor. Por supuesto, tenemos que indicar donde se encuentra la clave privada que utilizaremos para autentificarnos.

Como ves son parámetros muy básicos, de forma que definida la primera vez, esto es muy sencillo. Y mas si tenemos en cuenta que la app, cuenta con una opción para clonar botón. De forma que una vez clonado solo tendremos que modificar la etiqueta del botón y la acción que realiza, o lo que es lo mismo, el comando que le queremos asignar.

Conclusión

Como ves se trata de una aplicación realmente sencilla, pero desde mi punto de vista, es mas que suficiente para nuestras necesidades. Mas que nada, por que tal y como he comentado en el desarrollo del podcast, siempre tienes la posibilidad de abrir un terminal Termux en Android y realizar operaciones mas complejas si fuera necesario.