iPad Pro como estación de trabajo portátil

5 minute read

iPad Pro
Hace un tiempo que no escribía en el blog, primero porque no encontraba algo interesante para compartir y segundo porque no había mucho tiempo de sobra (no es que ahora haya mucho tiempo de sobra pero bueno, se busca siempre un espacio para escribir unas líneas).

Lo cierto es que hace poco me hice con un iPad Pro de 11” y dentro de las cosas que estuve probando fue la posibilidad de usarlo como equipo de trabajo ligero, es decir, un equipo que pueda tener a la mano en mi mesa de noche sin que sea una computadora completa.

Si bien el iPad tiene muchas ventajas y cosas que me gustaron, el termino “Pro” no da como para tener una terminal completa de un sistema operativo o tener una máquina virtual funcional, por lo que decidí investigar a ver si existía alguna opción y de las cosas que más tuvieron sentido para mí fue la de usar el iPad Pro como un cliente que se conecta a alguna otra parte donde si pueda tener acceso a un sistema operativo completo.

De hecho en un artículo que conseguí sugerían la opción de usar un Digital Ocean Droplet para tener una máquina virtual en la nube y desde ahí poder trabajar. Esta opción no es mala, pero teniendo una estación de trabajo en casa no vi la necesidad de irme a la nube.

Siguiendo algunas de estas sugerencias terminé instalando Blink Shell que viene con soporte para mosh, y usando tmux en mi laptop con Linux como sitio remoto pude hacerlo. A continuación les comento el detalle de esta configuración.

Blink Shell (ssh / mosh)

Lo primero que tuve que buscar fue un cliente ssh decente para iPad. Dentro de las recomendaciones recurrentes en Internet Blink Shell aparecía como una opción. En principio el hecho de que haya que comprarlo sin un trial no gustaba pero como insistían en que era la mejor opción decidí probarlo (USD 19,99 a la fecha de publicación de este post).

Tengo que decir que Blink Shell es muy pero muy bueno, está diseñado para dispositivos móviles y tiene soporte para mosh.

Mosh

Te estarás preguntando como en su momento lo hice yo ¿Qué es mosh? La página de mosh dice lo siguiente:

Aplicación de terminal remoto que permite la itinerancia, admite conectividad intermitente y proporciona eco local inteligente y edición de línea de las pulsaciones de teclado del usuario.

¿Sigues sin entender para qué sirve mosh como me pasaba a mí? Es como screen pero sin tener que aprender comandos para crear y manejar sesiones, además por debajo utliza ssh. En otras palabras, vas a tener la posibilidad de continuar con tu sesión de trabajo donde la dejaste, o si por ejemplo se te cortó la conexión y logras conectarte de nuevo con otra red.

Como por debajo se seguimos teniendo ssh, para usar mosh la sintaxis es prácticamente la misma. Es decir, si antes te conectabas con ssh a un servidor de esta manera:

ssh lgallard@192.168.1.65

Ahora con mosh lo haces de esta forma:

mosh lgallard@192.168.1.65

Parece sencillo el cambio y con esto ganamos que al cerrar nuestro iPad o el equipo donde estanos usando el cliente mosh vamos a poder recuperar mágicamente la sesión de trabajo al volvernos a conectar.

Puedes configurar las opciones de Blink Shell accediendo a un asistente de configuración para tener distintos hosts y facilitar la conexión con un nombre en vez de una dirección IP. Para acceder a este asistente basta con escribir config desde el terminal:

Blink config

En mi caso ahora me puedo conectar a mi estación de trabajo de la siguiente forma:

mosh dauntless

Mosh, lo malo

El gran punto en contra de mosh es que no puedes hacer scroll del terminal, es decir, si necesitas consultar la salida de comandos que hayas ejecutado previamente y que ya no estén en la pantalla, no los vas a poder ver. Esto para mí era un gran problema porque al usar terraform perdía los planes con los cambios a ser aplicados.

Esta es la forma en que trabaja mosh, para tener un óptimo rendimiento hacen un rendering del texto. Hay un issue abierto de varios años donde los desarrolladores comentan que está a modo de referencia pero que no tienen ninguna intención de implementarlo. ¿Entonces no hay solución? Si, tmux.

¿Qué es tmux?

tmux es una herramienta que permite tener varias terminales abiertas (o ventanas) para que sean accedidas y controladas desde un solo terminal como haríamos con screen.

Debes instalar tmux en el equipo donde deseamos iniciar sesión y una vez instalado basta con ejecutar esto desde el cliente mosh (el iPad Pro en mi caso):

mosh danuntless -- tmux new  -s terminal-1

De esta forma creamos una sessión nueva cuyo nombre es terminal-1. Luego para acceder a esta sesión posteriormente debemos ejecutar lo siguiente:

mosh danuntless -- tmux a -t terminal-1

Activar scrolling en tmux

En la estación de trabajo remota se debe configurar mosh para tener el scrroling con tmux, esto se consigue editando el archivo ~/.tmux.conf con este contenido:

new-session
set -g history-limit 30000
set -g mouse on

“Espera un momento… Blink + ssh + mosh + tmux, no es medio complicado todo? No es mejor usar ssh con screen? “. Sí, es una alternativa pero con ssh no te reconectarás automáticamente y tendrás que loguearte nuevamente si por ejemplo cierras el iPad, si tu dirección IP cambia por algún motivo (por ejemplo cambias de WiFI a línea telefónica) o si la sesión ssh expira.

Reconozco que hay una curva de aprendizaje con tmux pero una vez superada te va a encantar y te preguntarás por qué no usaste antes mosh y tmux

Más sobre tmux

Si quieres aprender a usar tmux te dejo una cheat sheet con los comandos que puedes usar. En particular encontré muy útil la división en paneles y el uso del zoom entre ellos, pero debo admitir que copiar texto entre paneles es algo complicado en el iPad y a veces prefiero usar vim para esto, pero seguro ya le encontraré la vuelta.

Palabras finales

Si bien acá comento la experiencia con el iPad Pro, todo esto se puede replicar en un iPad Air e incluso usar mosh y tmux desde otras estaciones de trabajo con Linux o Windows.

Referencias

Leave a Comment