Convertir una Raspberry Pi en un escritorio remoto para máquinas virtuales Proxmox (parte 2)

Publicado por P. Ruiz en

Raspberry Pi logoSi has aterrizado directamente en este artículo, habrás deducido por el título que existe una primera parte. Pues bien, antes de continuar te aviso de que te va a resultar imprescindible haberla leído antes de continuar aquí.

Si ya la has leído, o lo que sería aún mejor, la has puesto en práctica, probablemente te habrás planteado algunas cuestiones como las siguientes:

  1. Proxmox VE logoAl final de la primera parte comprobamos que todo funcionaba correctamente desde la cuenta de usuario predeterminada de la Raspberry Pi pero, ¿qué pasaría si en nuestra Raspberry Pi tenemos más de una cuenta de usuario y quisiéramos que todas ellas se beneficiaran de esta nueva característica?

  2. ¿Podríamos conseguir que la Raspberry Pi se comportara como un verdadero cliente ligero y no permitiera realizar ninguna tarea de forma local?. Así podríamos obligar a un futuro usuario a utilizar únicamente las máquinas virtuales que le facilitáramos en Proxmox VE.

  3. Si hemos evitado que la Raspberry Pi se utilice de forma local, podríamos revertir la situación.

Pues bien, hoy en SomeBooks.es estamos a punto de dar respuesta a todas esas inquietudes. Así es que, si estás listo, comencemos…

Tanto este artículo como el anterior se basan en el contenido del artículo PVE-VDIClient – A Python Graphical VDI Client for Proxmox que, a su vez, utiliza la interfaz gráfica para seleccionar clientes ligeros de Josh Patten.

Conseguir que otras cuentas de usuario utilicen escritorios remotos

Como hemos dicho más arriba, al final del artículo anterior dejamos todo listo para que la cuenta predeterminada, o la que estemos utilizando en ese momento, siempre que forme parte del grupo administradores, pueda usar de forma remota una máquina virtual almacenada en un servidor Proxmox VE.

Sin embargo, si lo que necesitamos es que, cualquier cuenta local en la Raspberry Pi pueda utilizar esa funcionalidad, basta con copiar copiar el archivo vdiclient.py a la carpeta /usr/local/bin/.

Primero nos aseguramos de encontrarnos en la carpeta apropiada:

cd ~/PVE-VDIClient

Y a continuación realizamos la copia del archivo:

sudo cp vdiclient.py /usr/local/bin/vdiclient

Copiamos el script de Python a la ruta general.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-025

De paso, podemos aprovechar para copiar las imágenes que utiliza el programa, aunque ten en cuenta que puedes utilizar las tuyas propias:

sudo cp vdiclient.png /etc/vdiclient/
sudo cp vdiicon.ico /etc/vdiclient/

Copiamos las imágenes

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-026

Con esto, habremos completado el primer objetivo de este artículo.

Evitar que la cuenta de usuario funcione de forma local

Imagina que estás preparando este sistema para utilizarlo con los trabajadores de una empresa o con los alumnos de un colegio. En estos casos, puede que no te interese que la Raspberry Pi se utilice de forma local.

Si obligas al usuario a utilizar siempre un escritorio remoto, estarás forzándolo a utilizar un entorno controlado. Me resulta sencillo pensar, por ejemplo, en un script que recupere el estado original de algunas (o todas) las máquinas de un servidor Proxmox VE todas las noches a una hora concreta. Así, los trabajadores (o los alumnos) se encontrarían todas las mañanas sus máquinas como recién instaladas, sin importar los cambios que hicieran el día anterior.

Pues bien, la idea que te proponemos consiste en iniciar sesión automáticamente en la Raspberry Pi con la cuenta predeterminada. Después, durante el inicio de sesión ejecutamos un script que lance el cliente VDI que instalamos en el artículo anterior. Si esto lo ponemos en un bucle infinito, el usuario no podrá dejar de ejecutarlo.

Le quedaría la alternativa de mostrar el modo consola para tratar de revertir los cambios que vamos a implementar ahora, pero necesitará la contraseña de la cuenta, que no debemos darle.

Pues bien, una vez fijado el objetivo, comencemos…

Como hemos dicho antes, lo primero será conseguir que la cuenta de usuario inicie sesión automáticamente. Si utilizas, como yo, la cuenta de usuario predefinida en la Raspberry Pi (que siempre se llama pi), este comportamiento es el predeterminado, luego lo tenemos resuelto.

En el contexto que nos encontramos, la cuenta predeterminada no tiene por qué estar sometida a ataques externos. Sin embargo, debes pensar que la cuenta pi es conocida por todos los hackers del planeta.

En muchos lugares se aconseja deshabilitarla y sustituirla por otra cuenta, con el nombre que tú elijas y que forme parte del grupo sudo. Si decides tomar esta precaución, puedes necesitar la ejecución del programa raspi-config para conseguir que esa nueva cuenta inicie sesión de forma automática.

A continuación, evitaremos que la interfaz gráfica de la Raspberry Pi (que es LXDE) se inicie automáticamente. Para ello, sustituiremos su archivo de inicio automático por uno en blanco.

Comenzamos desplazándonos al directorio /etc/xdg/lxsession/LXDE-pi:

cd /etc/xdg/lxsession/LXDE-pi

Y renombrando el archivo original, como precaución por si lo necesitamos más adelante. Así, el sistema no lo encontrará, pero no lo habremos eliminado:

sudo mv autostart autostart.bak

Cambiamos el nombre del archivo.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-027

A continuación, creamos un nuevo archivo vacío para asegurarnos de que LXDE no produce un error durante su inicio:

sudo touch autostart

Creamos el archivo.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-028

Lo siguiente será crear un archivo de inicio automático para la cuenta de usuario. Debemos hacerlo en la ruta ~/.config/lxsession/LXDE-pi (recuerda que el carácter ~ representa de forma abreviada al directorio de inicio de la cuenta actual, en nuestro ejemplo, equivale a /home/pi).

Primero, creamos la ruta:

mkdir -p ~/.config/lxsession/LXDE-pi

El argumento -p se encarga de crear la parte del árbol de directorios que falte en la ruta indicada.

Y, a continuación, nos desplazamos hasta ella:

cd ~/.config/lxsession/LXDE-pi

Nos desplazamos a la carpeta que acabamos de crear.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-029

A continuación, cambiamos el nombre del archivo de inicio automático predeterminado de la cuenta de usuario. Como hicimos con el archivo de la interfaz gráfica, así evitamos que el sistema lo encuentre, pero podremos recuperarlo en cualquier momento.

Al diferencia, en este caso, es que el archivo puede no existir. En ese caso recibiremos un error, pero no te preocupes, es algo normal.

mv autostart autostart.bak

En mi caso, el archivo no existe previamente.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-030

A continuación, crearemos un archivo nuevo:

nano autostart

Como en otras ocasiones, usamos el editor nano.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-031

Y dentro del archivo escribimos una orden como esta:

@/usr/bin/bash /home/pi/thinclient

Básicamente, estamos diciendo que se utilice el intérprete de comandos Bash para ejecutar el script llamado thinclient que almacenaremos en la ruta /home/pi.

Una vez completado el contenido, pulsamos la combinación de teclas Control + X para salir del editor… Pero debes asegurarte de guardar los cambios.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-032

Lógicamente, ahora falta crear el script al que hemos hecho referencia arriba.

Lo haremos, de nuevo, usando el editor nano.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-033

En su interior, escribiremos un contenido como este:

#nos cambiamos al directorio PVE-VDIClient de la ruta donde se encuentra la imagen
cd ~/PVE-VDIClient
#Ejecutamos el cliente en un bucle para que el usuario no pueda cerrarlo
while true
do
    /usr/bin/python3 ~/PVE-VDIClient/vdiclient.py
done

Como antes, al final pulsamos la combinación de teclas Control + X para salir del editor, asegurándonos de guardar los cambios.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-034

Después de esto, solo nos quedará reiniciar. Por ejemplo, ejecutando lo siguiente:

sudo reboot

Reiniciamos el sistema

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-035

Un momento más tarde, nos encontraremos con un escritorio vacío que solo nos muestra la ventana del cliente VDI.

Casi la única alternativa será conectarse al servidor Proxmox VE.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-036

Recuperar el estado original del escritorio

Afortunadamente, todos los cambios que hemos venido implementando en este artículo son reversibles. Así, si necesitas volver atrás en algún momento, solo tienes que abrir una nueva ventana de terminal y aplicar los pasos que te indicamos a continuación.

Puedes abrir la ventana de terminal usando la combinación de teclas Alt + Control + T.

Lo primero será conseguir que el escritorio del usuario se vuelva a cargar con normalidad. Para conseguirlo, volveremos al directorio ~/.config/lxsession/LXDE-pi que ya visitamos en el apartado anterior:

cd ~/.config/lxsession/LXDE-pi

Y cambiamos el nombre del archivo autostart, que creamos entonces por autostart.new. Así conseguimos dos cosas: que el sistema no lo encuentre al iniciarse y conservarlo, por si necesitamos utilizarlo más adelante para revertir el cambio que estamos haciendo.

mv autostart autostart.new

Por úiltimo, restituimos el archivo autostart original, que en estos momentos se llama autostart.bak:

mv autostart.bak autostart

Observa que, en mi imagen, aparece un error en este punto. El motivo es que el archivo autostart original no existía y, por lo tanto, no hay nada que recuperar.

Aplicamos los cambios en la carpeta ~/.config/lxsession/LXDE-pi.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-037

A continuación, debemos recuperar el inicio normal de la interfaz gráfica. Lo conseguiremos volviendo al directorio /etc/xdg/lxsession/LXDE-pi y deshaciendo los cambios que hicimos:

cd /etc/xdg/lxsession/LXDE-pi

Como antes, cambiamos el nombre del archivo autostart por autostart.new para evitar que el sistema lo encuentre y poder utilizarlo más adelante, si es necesario:

sudo mv autostart autostart.new

Y recuperamos el archivo autostart original, que habíamos renombrado en su momento como autostart.bak:

sudo mv autostart.bak autostart

Aplicamos los cambios en la carpeta /etc/xdg/lxsession/LXDE-pi.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-038

Llegado este momento, solo nos queda reiniciar el sistema para comprobar que todo funciona correctamente.

sudo reboot

Reiniciamos el sistema

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-039

Un momento más tarde, estaremos ante el escritorio de nuestra Raspberry Pi como si nada hubiese ocurrido.

Escritorio de la Raspberry Pi.

Convertir-una-Raspberry-Pi-en-un-escritorio-remoto-para-maquinas-virtuales-Proxmox-040

Y hasta aquí el contenido de este artículo. Espero que te haya resultado útil.