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

Publicado por P. Ruiz en

Raspberry Pi logoA 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.

Proxmox VE logoEl 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:

  1. 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).

    Tipo de pantalla seleccionado

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

    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.

  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.

    Cuenta de usuario para las pruebas

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

    De nuevo, si necesitas ayuda con esta tarea, puedes consultar nuestro artículo Crear nuevas cuentas de usuario en Proxmox VE.

  3. 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.

    Hemos añadido la cuenta de usuario anterior

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

    Y en la categoría Miembros las máquinas a las que dicha cuenta tendrá acceso.

    Como vemos en la imagen, hemos incluido las dos máquinas de prueba.

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

    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.

Escribimos la orden y pulsamos la tecla Intro.

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

Lo siguiente será usar la orden apt para instalar las dependencias que necesitamos:

sudo apt install python3-pip python3-pyside2* virt-viewer git -y

Instalamos dependencias con apt.

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

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

Instalamos dependencias con la orden pip3.

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

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

Actualizamos PySimpleGUIQt.

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

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

Clonamos el repositorio de forma local.

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

Una vez completado, nos desplazamos al directorio en el que se encuentra:

cd ./PVE-VDIClient

Cambiamos el directorio actual

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

Y convertimos el archivo vdiclient.py en ejecutable:

chmod +x vdiclient.py

Damos permisos de ejecución al archivo

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

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

Creamos el directorio

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

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

Creamos el archivo.

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

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.

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

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.

Ejecutamos el cliente para Proxmox VE.

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

Al hacerlo, obtendremos una nueva ventana donde debemos escribir las credenciales de la cuenta de usuario que habíamos creado en Proxmox VE.

Y, cuando estemos listos, hacemos clic sobre el botón Log In.

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

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.

Por ejemplo, hacemos clic sobre el botón Connect de la máquina con Ubuntu.

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

Lo normal sería que ahora obtuviésemos el escritorio de la máquina virtual elegida, pero en mi caso, obtengo el siguiente error:

SPICE informa de que no encuentra el servidor, y nos muestra su nombre.

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

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

Iniciamos el editor de archivos con el nombre del archivo que queremos editar.

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

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.

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

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.

Si la máquina está apagada se iniciará y, poco después, nos mostrará su pantalla de autenticación.

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

Solo tenemos que elegir la cuenta (en este caso solo tenemos una) y su contraseña.

Cuando hayamos acabado, pulsamos la tecla Intro.

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

Un momento más tarde, nos encontraremos en el escritorio.

Observa que se ha ajustado automáticamente la resolución del escritorio al del monitor local..

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

Siguiendo el mismo proceso, podemos ejecutar la máquina virtual con Windows.

… Y también en el caso de Windows 11, la resolución de pantalla es correcta.

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

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.