MyProx - ein einfaches Enduser-Frontend für Proxmox VE
2022
MyProx ist eine einfache Weboberfläche, mit der Enduser auf VMs in Proxmox VE zugreifen können.
Motivation
Die Proxmox-Weboberfläche ist für Administratoren geradlinig nutzbar und bestens geeignet. Für einfache Anwender hingegen, die nur eine (oder mehrere) virtuelle Maschinen haben und nur einfachste Dinge tun möchten (etwa Starten und Stoppen der VM, sowie Zugriff auch die VM-Konsole), wäre eine einfachere Oberfläche wünschenswert. Daher und dafür wurde MyProx entwickelt.
Beschreibung
Ziel von MyProx ist es, eine einfache und leichtgewichtige Weboberfläche zu bieten, mit der Endanwender ihnen zugeordnete virtuelle Maschinen nutzen können.
Folgende Anforderungen soll die Lösung erfüllen:
- alle VMs auflisten können, für die ein Benutzer Berechtigungen hat
- VM-Status verwalten können, z.B. starten und stoppen
- SPICE-Konsole (virt-viewer) öffnen können
- Proxmox-VNC-Konsole öffnen können
- Authentifizierung gegen Proxmox durchführen
- responsives Design
- keine Root-Rechte erfordern
- auf einem leichtgewichtigen Framework aufsetzen
- kein unnötiges JavaScript; keine externen Schriftarten oder JavaScript
- einfache Installation mittels Pip und nur wenige Abhängigkeiten
Implementierung
Mit "proxmoxer" ist eine Python-Bibliothek verfügbar, mit der ziemlich geradlinig auf die REST-API von Proxmox zugegriffen werden kann. Für einen bequemeren Zugriff auf die benötigten Operationen kapseln wir die Aufrufe mittels einer neuen ProxAPI-Klasse.
Die Möglichkeiten dieser Klasse werden in einer davon abgeleiteten weiteren Klasse erweitert, insbesondere um Methoden zur Nutzung der Proxmox-Tags zur Annotation - etwa um ein Expiry-Datum speichern zu können.
Mittels des leichtgewichtigen CherryPy-Frameworks wird eine Webanwendung erstellt. Die benötigten HTML-Seiten werden mittels Jinja2-Templating mit den dynamischen Inhalten angereichert. CSS steuert das Aussehen und die weitere Darstellung je nach Bildschirmgröße.
Proxmox VE stellt den Zugriff auf die VMs über einen SPICE-Proxy bereit. Um diesen mit dem SPICE virt-viewer nutzen zu können, muss vorher ein Zugriffsticket angefordert werden und schließlich ein Connection-File generiert werden, das den Viewer mit den notwendigen Daten versorgt.
Auch der Zugriff auf die VNC-Konsole (als Alternative zum Zugriff via SPICE) benötigt gesonderte Authentifizierung über ein Cookie, das zuvor gesetzt werden muss.