Convertir una Raspberry Pi en un escritorio remoto para máquinas virtuales Proxmox (parte 1)
A diferencia de lo que hacemos habitualmente, el artículo de hoy no es original. Se basa 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.
El objetivo consiste en utilizar una Raspberry Pi para identificarse en un servidor Proxmox que contenga diferentes máquinas virtuales. Según la cuenta de Proxmox que utilicemos, el software de Josh Patten nos mostrará una lista de máquinas virtuales del servidor (aquellas a las que tenga acceso la cuenta de usuario usada).
A continuación, cuando hagamos clic sobre el botón de conexión de cualquiera de esas máquinas, se mostrará su escritorio de forma local y podremos trabajar como si se tratara del sistema operativo local. Incluso se ajustará automáticamente la resolución de pantalla y podremos utilizar los puertos USB de la Raspberry Pi como si fuesen los de la máquina virtual.
Además, si la máquina virtual requerida se encuentre apagada en ese momento, se iniciará de forma automática.
El artículo original está en inglés y habla tanto de Raspberry Pi como de otros clientes que ejecuten Debian. Yo, me he permitido traducir su información al español y centrarme únicamente en Raspberry Pi que, dicho sea de paso, también funciona en su variante para PC y Mac (Raspberry Pi Desktop).
También, he completado un detalle relacionado con la resolución de nombres… Y todo al más puro estilo SomeBooks.es. Es decir, guiándote en cada paso con explicaciones e imágenes ilustrativas.
Así es que, si estás listo, comencemos…
Primeros pasos
Antes de comenzar nuestro trabajo con la Raspberry Pi, te recomiendo llevar a cabo varios ajustes en tu servidor Proxmox VE. Son los siguientes:
-
Lógicamente, deberemos haber creado las máquinas virtuales a las que pensamos acceder pero, además, nos aseguraremos de que el tipo de pantalla que tienen seleccionado es SPICE (qxl).
Si lo necesitas,puedes echar un vistazo a nuestros artículos Crear una máquina virtual en Proxmox VE y SPICE: protocolo de escritorio remoto para máquinas virtuales de Proxmox VE – Parte 1 y Parte 2.
-
Para evitar la necesidad de acceder a las máquinas virtuales con privilegios administrativos en Proxmox VE, también crearemos tantas cuentas de usuario como vayamos a necesitar. Yo, para esta prueba, usaré solo una.
De nuevo, si necesitas ayuda con esta tarea, puedes consultar nuestro artículo Crear nuevas cuentas de usuario en Proxmox VE.
-
Por último, necesitaremos un nuevo conjunto (pool, en inglés) que contenga en la categoría Permisos la cuenta de usuario, con el rol que va a representar.
Y en la categoría Miembros las máquinas a las que dicha cuenta tendrá acceso.
Como antes, si necesitas ayuda con esta tarea, puedes recurrir a nuestro artículo Crear Conjuntos en Proxmox VE.
Después de esto, estamos listos para comenzar.
Instalar el software necesario
Como es habitual, lo primero será asegurarnos de que nuestro sistema se encuentra completamente actualizado. Lo conseguiremos abriendo una nueva ventana de terminal y escribiendo la siguiente orden:
sudo apt update && sudo apt upgrade -y
Una forma rápida de abrir la ventana de terminal consiste en usar la combinación de teclas Alt + Control + T.
Lo siguiente será usar la orden apt para instalar las dependencias que necesitamos:
sudo apt install python3-pip python3-pyside2* virt-viewer git -y
Y, por último, instalamos las dependencias a través de pip. Así conseguiremos instalar la versión 0.30.0 de PySimpleGUIQt, que es la última que no necesita PySide2. El motivo es que no tenemos un paquete PySide2 para armv7 (el procesador que gobierna la Raspberry Pi). También instalamos el resto de dependencias de PySimpleGUIQt.
Para lograrlo, usaremos la siguiente orden:
pip3 install proxmoxer PySimpleGUIQt
Lo siguiente será obligar a pip para que actualice a la última versión de PySimpleGUIQt, aunque no encuentre la dependencia PySide2. Como hemos instalado PySide2 con el comando apt, PySimpleGUIQt lo encontrará en el momento de ejecutarse.
pip3 install --upgrade PySimpleGuiQt==0.35.0 --no-deps
Ya estamos listos para clonar en nuestra Raspberry Pi el repositorio de Josh Patten. Solo tenemos que escribir lo siguiente:
git clone https://github.com/joshpatten/PVE-VDIClient.git
Una vez completado, nos desplazamos al directorio en el que se encuentra:
cd ./PVE-VDIClient
Y convertimos el archivo vdiclient.py en ejecutable:
chmod +x vdiclient.py
Ya tenemos el software necesario. Nos falta configurarlo para que funcione de forma adecuada con nuestro servidor. Vamos a ello.
Configurar el software
Para crear el archivo de configuración, primero necesitaremos un directorio donde almacenarlo, que debe estar, de forma predeterminada, dentro de la carpeta /etc. Por lo tanto, lo crearemos con una orden como esta:
sudo mkdir -p /etc/vdiclient
El argumento -p crea la parte del árbol que falte en la ruta indicada. Si ya existe alguno de los directorios de la ruta, se deja como está.
En este caso, no es necesario usar el argumento, porque el directorio /etc debe existir, pero es una buena práctica para evitar errores en otras situaciones.
Ahora llega el momento de crear el archivo de configuración, que debe llamarse vdiclient.ini. Para lograrlo, usaremos la siguiente orden:
sudo nano /etc/vdiclient/vdiclient.ini
Al hacerlo, se ejecutará el editor de textos nano, donde debemos escribir un contenido como este:
[General]
title = apalrd VDI
icon=vdiicon.ico
logo=vdilogo.png
kiosk=false
[Authentication]
auth_backend=pve
auth_totp=false
tls_verify=false
[Hosts]
192.168.1.49=8006
La dirección IP que te marco en color rojo debe corresponderse con la del servidor Proxmox VE. Como es lógico, deberás modificar el valor por el que sea adecuado en tu red. También puedes poner el nombre DNS del servidor Proxmox VE, si tienes un sistema de resolución de nombres instalado en tu red.
Una vez completado el contenido, pulsamos la combinación de teclas Control + X para salir del editor… Pero debes asegurarte de guardar los cambios.
Comprobar si funciona… y resolver un contratiempo
Para comprobar si todo funciona correctamente, basta con ejecutar el software que acabamos de instalar y configurar. Lo conseguimos escribiendo lo siguiente:
./vdiclient.py
Observa que estamos ejecutando un programa escrito en Python que se encuentra en el directorio actual, por lo que debemos asegurarnos de que nos encontramos en ~/PVE-VDIClient.
Al hacerlo, obtendremos una nueva ventana donde debemos escribir las credenciales de la cuenta de usuario que habíamos creado en Proxmox VE.
Así conseguiremos que se muestre una nueva ventana donde se listan todas las máquinas virtuales que tiene disponibles la cuenta elegida. En este caso, como esperábamos se muestra una máquina virtual con Ubuntu y otra con Windows.
Lo normal sería que ahora obtuviésemos el escritorio de la máquina virtual elegida, pero en mi caso, obtengo el siguiente error:
Lo primero que observamos es que no hace referencia a la dirección IP, si no al nombre de mi servidor Proxmox VE. Esto me hace pensar que necesitaría un servidor DNS en mi red que resolviera el nombre, pero desafortunadamente no es así.
Sin embargo, existe una solución sencilla: editar el archivo /etc/hosts y añadir una línea que relacione la dirección IP con el nombre lógico del servidor. Eso es lo que haremos a continuación.
Lo primero es recurrir al editor nano para editar el archivo:
sudo nano /etc/hosts
Y, una vez que se muestre su contenido, añadimos una línea como esta al final del archivo:
192.168.1.49 somebooks01.local
Como es lógico, tendrás que ajustarlo a los datos particulares de tu instalación.
Una vez completada la tarea, pulsamos la combinación de teclas Control + X para salir del editor… Pero asegurándonos de guardar los cambios.
Si ahora repetimos el proceso de conexión como hemos explicado más arriba, comprobaremos que sí obtenemos el escritorio de la máquina virtual.
Solo tenemos que elegir la cuenta (en este caso solo tenemos una) y su contraseña.
Un momento más tarde, nos encontraremos en el escritorio.
Siguiendo el mismo proceso, podemos ejecutar la máquina virtual con Windows.
Como no quiero extenderme mucho, con esto doy por concluido el artículo de hoy, pero te aviso de que habrá una segunda parte donde te explico algunos ajustes complementarios.
En cualquier caso, antes de terminar quiero agradecer su trabajo tanto al autor del artículo original como del software utilizado.
Espero que te resulte útil.