© Thor Jorgen Udvang, 123RF

Fernsteuerung

Virtuelle Desktops im Webbrowser mit Phpvirtualbox

28.02.2013
Virtualisierungsaufgaben komplett auf einen eigenen Server auszulagern, spart auf dem Client erhebliche Ressourcen ein. Phpvirtualbox bietet in einer solchen Konfiguration die Möglichkeit, die Remote-VMs bequem via Browser anzulegen, zu konfigurieren, zu verwalten und zu nutzen.

Wer Virtualisierung lediglich auf dem lokalen Linux-PC nutzt, um etwa Windows oder andere Linux-Distributionen parallel zu verwenden, dem genügt Virtualbox [1] von Oracle in der Regel. Das kostenlose Programm mit seiner intuitiv zu bedienenden grafischen Benutzeroberfläche erinnert vom Umfang der Funktionen her in etwa an VMware Workstation und hält ein Vergleich mit diesem inzwischen in fast jeder Hinsicht stand: Das haben wiederholte Tests in LinuxUser über die Jahre bestätigt. Zudem lässt sich die Software leicht installieren (siehe Kasten "Virtualbox integrieren")

Virtualbox integrieren

Die Installation von Virtualbox verursacht keine größeren Probleme – zumal sich, seit die Software unter der Obhut von Oracle steht, die früher etwas unübersichtliche Lizenz-Situation mit zwei parallel verfügbaren Varianten entspannt hat. Seit Dezember 2010 offeriert der Datenbank-Spezialist das Programm ausschließlich unter der GPLv2. Die Standard-Version entspricht funktional in etwa der früheren Open Source Edition (OSE). Diese bringen Sie durch Nachinstallieren des nach wie vor unter der proprietären PUEL-Lizenz [5] stehenden, kostenlosen Extension-Packs auf den Stand der vormals kommerziellen Version.

Bei Einsatz von Phpvirtualbox ist es wichtig, dass die verwendete Version mit der von Virtualbox zusammenpasst. Da Sie normalerweise zuerst Virtualbox einrichten, betrifft dieser Punkt zwar eher die Auswahl der korrekten Version von Phpvirtualbox. Allerdings empfiehlt es sich, von wenigen Ausnahmen einmal abgesehen, die jeweils aktuellste Version beider Programme zu verwenden. Virtualbox-Pakete für nahezu alle wichtigen Distributionen und Architekturen finden sich auf Oracle-Webseite [6].

Die generelle Empfehlung lautet, Pakete – sofern vorhanden – immer aus den Quellen der Distribution zu bevorzugen. Das gilt jedoch nicht für Virtualbox, das sich mit sehr kurzen Release-Zyklen rasant weiterentwickelt und kinderleicht installieren lässt. Die Paketquellen eines aktuellen Ubuntu 12.10 enthalten zwar wenigstens nicht unzählige Virtualbox-Pakete (OSE-Version, Gastsystem-Erweiterungen, Kernel-Module), sondern nur noch eines, dafür aber lediglich in Version 4.1.18.

Die Download-Seite bietet darüber hinaus Installationshinweise für alle wichtigen Distributionen. Der zum Darstellen der Bildschirmanzeige der virtuellen Maschinen im Zusammenhang mit Phpvirtualbox essentielle RDP-Server steht wie erwähnt nur durch Installieren des Extension-Packs bereit, das Sie ebenfalls von der Download-Seite herunterladen [7]. Achten Sie unbedingt darauf, dass die Versionsnummer von Extension Pack und Virtualbox übereinstimmen.

Die GUI von Virtualbox verwaltet das Extension Pack übrigens unter Datei | Globale Einstellungen, Zusatzpakete. Dort haben Sie die Möglichkeit, es gegebenenfalls neu zu installieren oder aktualisieren.

Als Alternative böte sich KVM mit Werkzeugen wie dem auf der Libvirt basierenden Virt-Manager an. Das Gespann arbeitet heute kaum weniger komfortabel als Virtualbox. Faktisch bringt die KVM-Lösung sogar mehr Funktionen mit und erstreckt sich nicht nur auf den Einsatz am Host-System: Der Virt-Manager bietet die Möglichkeit, von jedem beliebigen Rechner auf virtuelle Maschinen zugreifen sowie VMs anzulegen und zu konfigurieren.

In dieser Eigenschaft gleich die verteilte Lösung mit KVM und Virt-Manager dem seit einiger Zeit nicht mehr erhältlichen VMware-Server. Da stellt sich für Virtualbox-Anwender die Frage, ob sich so etwas nicht mit Virtualbox ebenfalls realisieren ließe.

Aus der Ferne

Betreiben Sie zu Hause einen kleinen Server, etwa als zentralen Speicher für Media-Dateien, böte es sich an, diesem bei ausreichender Ausstattung mit Arbeitsspeicher, Festplatten und einer CPU mit VT-Erweiterung die Aufgabe des Virtualisierens zu übertragen. Das brächte einige Vorteile mit sich: Ein Arbeitsplatzsystem, das nur noch zum Erstellen oder Konfigurieren von virtuellen Maschinen zum Einsatz kommt oder zum Anzeigen von Inhalten einer laufenden virtuellen Maschine, braucht erheblich weniger Ressourcen.

Festplattenplatz für Images und Container brauchen Sie dann auf dem normalen PC ebenfalls nicht mehr. Zwar verschiebt sich das Problem mit dem Platz hin zum Server, weshalb eine Investition in Festplatten beim intensiven Einsatz angebracht erscheint, dafür stehen aber alle für das Virtualisieren benötigten Ressourcen zentral bereit.

Im Inneren

Die Innovation der im Folgenden vorgestellten Lösung mit Phpvirtualbox liegt weniger in der PHP-Software selbst – die besteht im Wesentlichen aus einem optischen Nachbau der Qt-Oberfläche von Virtualbox. Das Novum liegt in Virtualbox selbst: Die seit 2005 erst von Innotek, später von Sun und aktuell von Oracle kontinuierlich weiterentwickelte Software bietet mehr als viele ahnen.

So stellt etwa die grafische Qt-Oberfläche nicht die einzige Möglichkeit zum Betrieb einer virtuellen Maschine dar. Weit mehr Optionen bietet die Konsolen-Schnittstelle Vboxmanager. Ferner gibt es das SDL-Programm VboxSDL zum Steuern der VMs, die Sie bei Bedarf aber auch über einen in der Konsole laufenden RDP-Server ansprechen. Das entsprechende Modul heißt seit einiger Zeit Vboxheadless.

Der Einsatz von Phpvirtualbox basiert auf dem in Virtualbox enthaltenen Webserver-Modus Vboxwebsrv. Hierbei handelt es sich um einen vollständigen SOAP-basierten Applikationsserver, der die komplette Virtualisierung bereit stellt. Sie benötigen lediglich einen gewöhnlichen Webserver als Fundament für den Applikationsserver. Eine GUI-Instanz von Virtualbox braucht auf dem Server nicht zu laufen: Sie darf es zwar, falls Sie auf dem Server lokal arbeiten möchten; Phpvirtualbox kommuniziert aber ausschließlich über Vboxwebsrv.

RDP-Server

Phpvirtualbox eignet sich nicht nur zum Verwalten von virtualisierten Maschinen auf dem Server, sondern erlaubt zusätzlich den Zugriff auf die eigentlichen Desktops (Abbildung 1). Diese Funktionalität zählt jedoch eigentlich nicht zu den Eigenschaften von Phpvirtualbox, sondern vielmehr zu jenen von Virtualbox selbst, das mit dem Installieren des Oracle Extension Packs einen RDP-Server bereit stellt. Bis Version 3 war diese Komponente nur in der proprietären Virtualbox-Version enthalten.

Abbildung 1: Virtualbox bringt von Haus einen RDP-Server mit. Sie brauchen daher am Arbeitsplatz nur einen RDP-Client wie Remmina, um auf die grafische Oberfläche virtueller Desktops zuzugreifen.

Haben Sie Virtualbox auf einem Rechner installiert, der über eine grafische Oberfläche wie KDE verfügt, aktivieren Sie den RDP-Server in der Konfiguration der jeweiligen virtuellen Maschine im Bereich Anzeige im Reiter Fernsteuerung mit der Funktion Server aktivieren.

Den zu verwendenden TCP-Port dürfen Sie selbst festlegen. Selbstverständlich funktioniert Virtualbox mithilfe der oben erwähnen Schnittstelle samt RDP-Server auf Servern ohne grafische Oberfläche. Am Arbeitsplatz benötigen Sie lediglich einen beliebigen RDP-Client, wie etwa KRDC, den Sie in den Paketquellen der meisten Distributionen finden.

Die Performance liegt auf ähnlichem Niveau wie beim Anzeigen der virtuellen Desktops im nativen Virtual-Machine-Manager von Virtualbox unter KDE/Qt. Ähnliche Performance bietet lediglich KVM/Virt-Manager beim Verwenden des Spice-Protokolls, das auch im Tool Gnome Boxes [2] zum Einsatz kommt.

Startklar

Phpvirtualbox ist der grafischen Oberfläche von Virtualbox exakt nachempfunden und lässt sich dank Ajax-Funktionalität mit wenigen Ausnahmen ebenso bedienen wie die native GUI. Beim Herunterladen der als Zip-Archiv bereit stehenden PHP-Software gilt es allerdings darauf zu achten, dass Sie die richtige Version auswählen [3].

Für alle aktuellen Versionen von Virtualbox ab 4.2 aufwärts wählen Sie die Version 4.2-4 von Phpvirtualbox. Da es sich um PHP-Code handelt, beschränkt sich die Installation darauf, das heruntergeladene Zip-Archiv mit Ark oder einem Archivmanager der Wahl ins Documentroot des Webservers auf dem Server zu entpacken.

Wer lieber zur Kommandozeile greift, verwendet die Befehle aus Listing 1. Mit diesen entpacken Sie die Software zuerst im Home-Verzeichnis und verschieben anschließend das entpackte Verzeichnis mit Root-Rechten ins Verzeichnis phpvirtualbox/ im Documentroot des Webservers.

Listing 1

$ unzip -q phpvirtualbox-4.2.2.zip
$ sudo mv ~/phpvirtualbox-4.2-4/ /var/www/phpvirtualbox

Der Betrieb von Phpvirtualbox setzt einen Webserver mit PHP-Unterstützung voraus. Bei Fedora, Red Hat und deren Derivaten installieren Sie dazu das Paket httpd; bei Ubuntu und OpenSuse apache2. Für den automatischen Start des Webservers sorgt bei Ubuntu sudo update-rc.d apache2 defaults, Fedora-Nutzer verwenden systemctl enable httpd.service, OpenSuse-Nutzer chkconfig -a apache2.

Das PHP-Modul für den Apache Webserver lagert bei auf Fedora basierenden Distributionen im Paket php. Ubuntu- und OpenSuse-Anwender installieren zusätzlich das Paket libapache2-mod-php5, gefolgt von einem Neustart des Apachen mit service apache2 restart. Fedora-Anwender und Nutzer anderer Systemd-basierter Distributionen verwenden dazu systemctl restart httpd.service. Haben Sie den Apache-Webserver und das PHP-Modul installiert, aktivieren Sie mit a2endmod php5 das Modul. Ubuntu-Nutzer stellen lediglich ein sudo voran.

TIPP

Mit sudo apache2 -t -D DUMP_MODULES oder httpd -t D DUMP_MODULES bei Red Hat und Fedora stellen Sie leicht fest, ob Apache bereits mit PHP-Unterstützung läuft.

Konfiguration

Bevor Sie Phpvirtualbox zum ersten Mal im Browser aufrufen, gilt es zwei Konfigurationsdateien zu bearbeiten. Eine betrifft das Virtualbox-Modul Vboxwebsrv, die andere Phpvirtualbox selbst. So entnimmt Virtualbox in den Standard-Einstellung der Konfiguration-Datei /etc /default/virtualbox mit dem Eintrag VBOXWEB_USER=User, unter welchen Benutzerkonto mitsamt dem zugehörigen Kontext die Software läuft. Per Default ist das der Nutzer vbox, den Virtualbox bei der Installation anlegt. Der sollte übrigens auch zwingend der Gruppe vboxusers angehören (Abbildung 2), damit Virtualbox ohne Einschränkungen seinen Dienst tut und beispielsweise Zugriff auf USB-Geräte bietet.

Abbildung 2: Phpvirtualbox muss das Benutzerkonto kennen, unter dem Virtualbox läuft.

Mit dem Default-Nutzer vbox und der Default-Gruppe vboxusers sollte es keine Probleme geben. Beim Einsatz von Virtualbox auf einem Server empfiehlt es sich jedoch, für den Virtualbox-Betrieb einen Nutzer ohne eigene Login-Shell vorzusehen, den Sie mit den Werkzeugen der Distribution anlegen und der Gruppe vboxusers hinzufügen. Via Kommandozeile erledigt das der folgende Befehl:

# useradd -G vboxusers -s /bin/false User

Das empfiehlt sich deshalb, weil Sie in der Konfiguration von Phpvirtualbox (/var/www/phpvirtualbox/config.php) auf den gleichen Benutzer verweisen müssen. Dessen Passwort steht in der Datei aber im Klartext (Listing 2).

Listing 2

var $username = 'vbox';
var $password = 'pass';
var $location = 'http://localhost:18083/';

Damit sollte ein erster Zugriff auf das Interface von Phpvirtualbox möglich sein, sofern Virtualbox auf dem Server im Webserver-Modus läuft. Dazu starten Sie wie oben erwähnt Vboxwebsrv. Sie finden alle wichtigen Binaries des kompletten Virtualbox-Paketes unter /usr/lib/virtualbox. Für einen ersten Test oder gelegentlichen Gebrauch rufen Sie den Server /usr/lib/virtualbox/vboxwebsrv einfach direkt auf.

Da /usr/lib/virtualbox zusätzlich via Symlink in /usr/bin liegt, brauchen Sie den absoluten Pfad nicht anzugeben. Eleganter klappt es allerdings, indem Sie das mitgelieferte Init-Skript für Vboxwebsrv verwenden, das Virtualbox beim Installieren unter /etc/init.d/vboxweb-service anlegt. Sie rufen damit Vboxwebsrv komfortabel mit den Optionen start, stop oder restart auf.

Das klappt prinzipiell auch mit Upstart (Ubuntu) oder Systemd (Fedora), die sich jeweils abwärtskompatibel verhalten. Soll der Dienst vboxweb-service automatisch starten, gehen Sie genauso vor wie beim Apache Webserver. Ubuntu-Nutzer verwenden sudo update-rc.d vboxweb-service defaults. Unter Fedora erzeugen Sie das Autostart-Skript mit systemctl enable vboxweb-service.service. Bei Suse können Sie chkconfig -a vboxweb-service benutzen. Ergänzende Informationen zur Installation finden Sie im Wiki von Phpvirtualbox [4].

Client konfigurieren

Hat alles funktioniert, erscheint beim Aufruf der URL http://Server/phpvirtualbox der Login-Screen (Abbildung 3). Hier melden Sie sich eingangs mit dem Benutzernamen admin und dem Passwort admin an, nicht mit den Credentials des oben erwähnten Virtualbox-Users. Wünschen Sie eine deutsche Oberfläche, stellen Sie diese wahlweise unter Preferences | Language ein oder ändern in der Datei /var/www/phpvirtualbox/config.php den Eintrag var $language = 'en'; auf 'de'.

Abbildung 3: Steht der PHP-Code von Phpvirtualbox im gewünschten Verzeichnis bereit und laufen der Webserver sowie Vboxwebsrv, sollte ein erster Login möglich sein.

Danach sollten Sie im Web-Interface das Passwort des Administrator-Zugangs ändern, was Sie im Menü Datei | Passwort ändern erledigen. Der Benutzername des Administrator-Kontos bleibt admin. Darüber hinaus haben Sie im Menü Datei | Globale Einstellungen im Bereich Benutzer die Möglichkeit, zusätzlich zum Administrator-Account weitere Benutzerkonten für Phpvirtualbox anzulegen (Abbildung 4). Der Unterschied zum Admin-Konto besteht aber lediglich darin, dass admin weitere Benutzer anlegen darf.

Abbildung 4: Phpvirtualbox kennt auch normale Benutzer. Diese dürfen allerdings ebenfalls alles, außer weitere Nutzer anlegen.

Nutzen Sie Phpvirtualbox lediglich selbst, erleichtern Sie sich die Arbeit mit der Software ein wenig, indem Sie das Authentifizieren mit dem folgenden Eintrag in der Datei config.php vollständig deaktivieren:

var $noAuth = true;

Das geschieht dann allerdings um den Preis der Sicherheit. Wer etwa in Umgebungen mit mehreren Benutzern ein höheres Bedürfnis nach Sicherheit hat – wie gesehen sind unter Phpvirtualbox per Default alle Benutzer Admins – kann in der Datei config.php auch weitere Module zum Authentifizieren konfigurieren. Neben WebAuth (auf .htaccess basierend) ist auch ein Login gegen einen Verzeichnisdienst (LDAP oder Active Directory) möglich. Das Wiki gibt Auskunft, wie das funktioniert [8].

Ferner finden Sie dort eine Reihe weiterer Parameter und Optionen für die Vboxwebsrv-Konfiguration [9]. So können Sie einen Session-Timeout eintragen oder den Standard-Port ändern, auf dem Vboxwebserv auf Anfragen lauscht. Es ist sogar möglich, Vboxwebsrv und den Webserver auf unterschiedlichen Maschinen zu betreiben.

Im Einsatz

In Summe unterstützt Phpvirtualbox fast alle Funktionen, die Sie in der Qt-Oberfläche finden (Abbildung 5). Das umfasst das Starten und Stoppen von virtuellen Maschinen (Pause, ACPI-Shutdown oder Save/Discard-State), Snapshots, das Konfigurieren von VMs sowie das Importieren und Exportieren virtueller Maschinen. Daneben bietet Phpvirtualbox den Zugriff auf virtuelle Maschinen über eine emulierte Konsole. Einzelheiten finden sich im Bereich Features auf der Projektseite. Sogar das Durchreichen von USB-Geräten nach Bedarf ermöglicht das PHP-Interface (Abbildung 6).

Abbildung 5: Phpvirtualbox unterstützt das Anlegen und Konfigurieren von virtueller Maschinen.
Abbildung 6: Bei Bedarf reichen Sie einzelne USB-Geräte über Passthrough an das Gastsystem durch.

Zwar bietet Phpvirtualbox nahezu alle wichtigen Einstellungen, zum Anzeigen des Bildschirminhalts laufender virtueller Maschine benötigen Sie jedoch wie eingangs erwähnt einen RDP-Client. Der in Virtualbox enthaltene RDP-Server gehört allerdings zu den nicht freien Komponenten des Programms und steht daher nur bereit, wenn Sie Oracles kostenloses Extension-Pack für Virtualbox installieren.

Die Bildschirmausgabe erfolgt deutlich flüssiger als etwa bei einem VNC-Client. Das Aktivieren des RDP-Servers funktioniert genauso wie beim Qt-Client: Klicken Sie dazu wahlweise im Hauptfenster von Phpvirtualbox direkt auf dem Link Anzeige oder in der Symbolleiste auf das Symbol Ändern, gefolgt von einem Klick auf den Menü-Eintrag Ändern.

Ein dritter Weg führt über den Punkt Maschine | Ändern in der Menüleiste von Phpvirtualbox. In jedem Fall öffnet sich der Konfigurationseditor für die links markierte virtuelle Maschine. Bei den letzten beiden Varianten müssen Sie allerdings noch zum Bereich Anzeige navigieren und im Reiter Fernsteuerung das Häkchen bei Server aktivieren setzen.

Abbildung 7: Der in Virtualbox enthaltene RDP-Server ist der Schlüssel zum grafischen Zugriff aus der Ferne.

Danach legen Sie gegebenenfalls noch den für die jeweiligen virtuellen Maschinen zu verwendenden TCP-Port fest. Nutzen Sie mehr als eine virtuelle Maschine gleichzeitig, sollten Sie darauf achten, verschiedene Ports anzugeben.

Läuft auf dem Server eine grafische Oberfläche (bevorzugt KDE), dann können Sie selbstverständlich auch direkt auf dem Server einen RDP-, VNC- oder (noch besser) NX-Server aufsetzen, was Ihnen schon mal grafischen Zugang zur Qt-Benutzeroberfläche von Virtualbox verschafft. Wahlweise rufen Sie die entfernte Virtualbox-GUI via SSH und X11 von Ihrem Arbeitsplatz aus auf.

Melden Sie sich dazu auf dem Server mit ssh -X -l Vbox-User Server als derjenige Benutzer an, unter dessen Account Virtualbox auf dort läuft, und rufen Sie dann in der SSH-Sitzung virtualbox auf (Abbildung 8).

Abbildung 8: So geht's auch: Zugriff auf ein auf dem Server installiertes Virtualbox via SSH.

Nicht uncharmant und schnell zu realisieren ist auch die Idee, direkt auf dem Server einen RDP- oder NX-Server zu installieren. Letzterer bietet deutlich mehr Performance als etwa VNC. Die GPL-Implementation "FreeNX Server" findet sich in den Paketquellen nahezu jeder Distribution.

Wahlweise können Sie auch die inzwischen proprietäre, nichtsdestotrotz aber kostenlos verfügbare Original-Version von Nomachine installieren, die "NX Free Edition for Linux", was aber für unser Szenario keinen Vorteil birgt. Die GPL-Version lässt sich im Handumdrehen einrichten, sofern Sie die SSH-Authentifizierung verwenden (Abbildung 9).

Abbildung 9: So geht's noch besser: Zugriff auf ein auf dem Server installiertes Virtualbox via NX-Protokoll.

Fazit

Bei Phpvirtualbox handelt es sich zweifellos um ein nützliches Werkzeug für Virtualbox-Anwender. Das Tool zeigt eindrucksvoll, was moderne Webtechnologien mit PHP und Ajax zustande bringen. Der Aufwand zur Inbetriebnahme ist zudem wesentlich kleiner, als dieser Beitrag möglicherweise suggeriert. Die Vorteile einer zentrale Instanz wiegen die Mühe auf jeden Fall auf. 

Infos

[1] Phpvirtualbox:http://code.google.com/p/phpvirtualbox

[2] Gnome Boxes: Th. Drilling, "Schlicht und einfach", LU 02/2013, S. 70, http://www.linux-community.de/27688

[3] Download:http://code.google.com/p/phpvirtualbox/downloads/list

[4] Phpvirtualbox-Wiki: http://code.google.com/p/phpvirtualbox/wiki/Installation

[5] Virtualbox-Lizenz:https://www.virtualbox.org/wiki/Virtualbox_PUEL

[6] Virtualbox herunterladen:https://www.virtualbox.org/wiki/Linux_Downloads

[7] Virtualbox Extension Pack:https://www.virtualbox.org/wiki/Downloads

[8] Vboxwebsrv und Verzeichnisdienste: http://code.google.com/p/phpvirtualbox/wiki/AuthenticationModules

[9] Paremeter und Optionen von Vboxwebsrv: http://code.google.com/p/phpvirtualbox/wiki/vboxwebServiceConfigLinux

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Related content

Kommentare