Proxmox VDI Client

Mit dem PVE VDI Client lässt sich auf eine einfache Art und Weise eine direkte Verbindung zu einem Proxmox Server herstellen und ermöglicht es Benutzern
über das SPICE Protokoll eine Remote Desktop Verbindung zu einer VM herzustellen. (SPICE muss natürlich in der VM aktiviert sein.)

26.02.2023 - Anleitung aktualisiert (No module named 'tkinter')
17.04.2022 - Anleitung aktualisiert (VDI Client 1.0.3, Linux Installation, Themes)

Proxmox Setup

  • Gruppe erstellen
  • Benutzer erstellen
  • Rolle erstellen
  • VM berechtigen

Datacenter → Permissions → Groups, Create

Datacenter → Permissions → Users, Add

Datacenter → Permissions → Roles, Create (der VDI Client benötigt: VM.Audit, VM.Console, VM.PowerMgmt)

Virtual Machine → VM auswählen → Permissions, Add

Windows Installation

Virt-viewer (virt-viewer-x64-11.0-1.0.msi) und PVE VDI Client (vdiclient-1.0.2-64.msi) installieren.

Der PVE VDI Client benötigt eine vdiclient.ini. Er sucht automatisch nach der Datei in:

%APPDATA%\VDIClient\vdiclient.ini
%PROGRAMFILES%\VDIClient\vdiclient.ini     # funktioniert nicht, wird nicht gefunden

Oder man gibt bei der Verknüpfung mit –config den Pfad zur vdiclient.ini an.

"C:\Program Files\VDIClient\vdiclient.exe" --config .\vdiclient.ini     # ini im aktuellen Verzeichnis

Meine minimale vdiclient.ini:

[General]
title = VDI Login
theme = LightBlue
icon = vdiicon.ico
logo = vdiclient.png
kiosk = False
inidebug = False

[Authentication]
auth_backend = pve
auth_totp = false
tls_verify = false

[Hosts]
pmx01.bachmann.lan = 8006

Anwendung starten, mit Benutzer und Passwort anmelden und VM auswählen.

Funktioniert mit einer Windows und Linux VM problemlos.

Linux Installation

getestet unter Ubuntu 21.10

$ apt install -y git python3-pip virt-viewer
$ git clone https://github.com/joshpatten/PVE-VDIClient.git
$ cd PVE-VDIClient
$ bash requirements.sh
$ cp vdiclient.py /usr/local/bin
$ chmod +x /usr/local/bin/vdiclient.py

# ich musste noch zusätzlich diese beiden Pakete installieren
$ apt install xcb libxcb-xinerama0

unter Ubuntu 22.10 beim starten der vdiclient.py

...
import tkinter as tk
ModuleNotFoundError: No module named 'tkinter'

# Paket nachinstallieren
$ apt install python3-tk

Der PVE VDI Client sucht die vdiclient.ini automatisch unter:

~/.config/VDIClient/vdiclient.ini
/etc/vdiclient/vdiclient.ini
/usr/local/etc/vdiclient/vdiclient.ini

Im Terminal vdiclient.py starten.

Für ein Desktop Icon erstelle ich die Datei ~/Desktop/vdiclient.desktop mit folgendem Inhalt:

[Desktop Entry]
Type=Application
Terminal=false
Exec=/usr/local/bin/vdiclient.py
Name=VDI Client
Comment=Proxmox VDI Client
Icon=/opt/PVE-VDIClient/vdiicon.ico    # Pfad zum Icon anpassen

Dann noch rechte Maustaste über das neue Icon und Allow Launching auswählen.

PVE VDI Client Themes

Unter Windows und Linux den vdiclient Client mit der Option –list_themes aufrufen.

Gewünschtes Theme dann einfach in der vdiclient.ini eintragen. (klappt unter Windows erst mit der Version 1.0.3)

21 Gedanken zu „Proxmox VDI Client“

  1. Sehr schöne Anleitung, habe es bei mir problemlos eingerichtet.
    Kann man das auch unter Linux machen, ich habe die Pakete installiert aber so schön mit dem Login und dann Auswahl der VM wie unter Windows bekommen ich leider nicht hin?

    Gruß und frohe Ostern
    Jürgen

    Antworten
  2. Hallo Michael,
    danke für die tolle Anleitung, bis zum Login bin ich gekommen, aber dann??? Ich sehe die freigegebenen Desktops, wenn ich sie aufrufe kommt “Verbindung zum Grafikserver konnte nicht aufgebaut werden” Von der ProxMox GUI funktioniert zumindest auf einem Node der Ubuntu Desktop über Spice.
    Irgendweine Idee wo ich noch schrauben muss?
    Gruß
    Detlef

    Antworten
          • keine Änderung, was ich ich in jedem Fall mal hinbekommen habe ist Spice direkt über die PVE WebGui. Da lag der Fehler an fehlenden einträgen in der hosts.
            Über den VDI Client sehe ich im syslog nur die Anmeldung des VDI Users. Keine Fehler im syslog von spice. Also entweder gibt es keine Fehler oder ich komme garnicht bis zum host. Finde auch keine logfiles an den Stellen, die ich mir bisher ergoogelt habe.
            Kann es sein, dass der VDI Client mit meinem Clustersetup ein Problem hat?

          • Der Cluster könnte vielleicht das Problem sein, kann ich aber nichts zu sagen, da ich keinen habe.
            Hast du eine Firewall oder Virenscanner (Security Suite) dazwischen, die was blocken könnte?

    • ok, an der Stelle steige ich nun endgültig aus. Das wahnsinnige an der Sache ist: der VDI Cllient startet auf einem Host sogar eine VM wenn die down war, kann sich aber dann nicht auf deren Grafikserver verbinden, das wird langsam zu hoch für mich

      Antworten
      • Etwas spät, aber vielleicht bringts wem anders mal was…
        Hatte genau das selbe Problem. Die VM’s wurden aufgelistet, VM’s die down waren wurden beim Versuch zu verbinden auch gestartet, aber es war nicht möglich eine Verbindung zum Grafikserver herzustellen.

        Bei mir war effektiv das Problem, dass ich im vdiclient.ini file die Domain bei [Hosts] und bei [SpiceProxyRedirect] nicht korrekt gesetzt hatte. Um diese herauszufinden, kann im vdiclient.ini file das Property inidebug = True gesetzt werden. Beim Verbindungsversuch öffnet sich dann ein Python-Script, darin wird auf Zeile 4 unter host-subject die Domain angezeigt:
        host-subject = OU=PVE Cluster Node,O=Proxmox Virtual Environment,CN=proxmox.meinedomain.ch

        Diese proxmox.meinedomain.ch (oder was auch immer bei euch steht) muss im vdiclient.ini eingetragen werden.

        [Hosts]
        # Hosts are entered as `IP/FQDN = Port`
        192.168.1.50 = 8006
        proxmox.meinedomain.ch = 8006

        [SpiceProxyRedirect]
        # The Spice Proxy provided by the Proxmox API may need to have its host/port rewritten
        # These rewrite rules are written `IP:port = IP:port`
        # 1. Use the inidebug and read the current proxy=pve1.example.com:3128
        # 2. Add your proxmox ip to the right side e.g. 123.123.123.123:6000
        proxmox.meinedomain.ch:3128 = 192.168.1.50:3128

        Antworten
    • Die ist nicht wirklich gut. Bei Youtube Videos ist meistens Bild und Ton versetzt.

      Flüssige Videos gucken ist mit den Standardeinstellungen nicht möglich.
      Lässt sich aber bestimmt noch optimieren.

      Antworten
  3. Proxmox ist eine feine Sache, aber um Desktop-VM’s nach draußen zu bringen leider etwas umständlich mit dem Ticket System.

    Es gelang mir auch keine ssh-Verbindung mit spice. Das ist mit fedora/centos/RHEL bedeutend einfacher:
    $ virt-viewer --connect qemu+ssh://USER@SERVERIP/system VM-NAME

    Lässt sich wunderbar ohne Fummelei in Startscripts einbauen.
    Performance ist im LAN gut, Videos ruckeln nur bei schnellen Bewegungen etwas, Bild und Ton sind syncron.

    Antworten
  4. Hallo leider funktioniert es bei mir nicht unter Ubuntu. Wenn ich die vdiclient.py ausführe kommt folgender Fehler.

    client@client:/usr/local/bin$ vdiclient.py
    Traceback (most recent call last):
    File “/usr/local/bin/vdiclient.py”, line 3, in
    import PySimpleGUI as sg # pip install PySimpleGUI
    File “/home/client/.local/lib/python3.10/site-packages/PySimpleGUI/__init__.py”, line 2, in
    from .PySimpleGUI import *
    File “/home/client/.local/lib/python3.10/site-packages/PySimpleGUI/PySimpleGUI.py”, line 136, in
    import tkinter as tk
    ModuleNotFoundError: No module named ‘tkinter’

    Was kann das sein ?

    mfg Manuel

    Antworten
  5. Hallo, danke dir für deine großartige Anleitung. Ich habe noch das Problem, das ich weder zu einer Linux- noch zu einer Windows-VM eine Verbindung aufbauen kann. Ich kann mich normal im Windows Client anmelden, dann wird es weiß auf dem Bildschirm und nach 2 Sekunden kommt dann die Meldung: “Keine Verbindung zum Grafikserver möglich” Hast du da einen Tipp?

    Antworten
    • Eventuell Probleme mit der Namensauflösung? Probier mal in der ini diesen Eintrag:

      [SpiceProxyRedirect]
      pve.homelab.local:3128 = IP von pve.homelab.local:3128

      Antworten

Schreibe einen Kommentar zu Younes Antworten abbrechen