Toolbox: Virtualbox im Browser mit phpVirtualbox

phpVirtualbox liefert ein Web-Interface zur Fernsteuerung von Virtualbox. Die Verbindung zu virtuellen Maschinen erfolgt über RDP.

In Pocket speichern vorlesen Druckansicht 9 Kommentare lesen
Lesezeit: 8 Min.
Von
  • David Wolski
Inhaltsverzeichnis

Steuerung über den Browser: phpVirtualBox in Aktion mit einer virtuellen Maschine.

Virtualbox ist vor allem Admins, Programmierern und Betriebssystembastlern ein Begriff, die für Testzwecke eine virtuelle Umgebung auf dem Desktop-PC brauchen. Für diesen Zweck bietet Virtualbox einen Typ-2-Hypervisor, der als Anwendung auf einem Host-Betriebssystem läuft und sich dazu noch komfortabel bedienen lässt. Virtualbox kann aber auch als Virtualisierungsumgebung auf einem Server arbeiten und virtuelle Systeme per Remote-Desktop-Protokoll (RDP) bereitstellen. Zwar lässt sich Virtualbox im Serverbetrieb über die Kommandozeile steuern – bequemer geht das aber mit der Ajax-Weboberfläche von phpVirtualbox, die die Bedienoberfläche des Virtualisierers im Browser nachbildet. Damit lassen sich virtuelle Maschinen leicht anlegen, starten und beenden. Virtualbox kann so auch VMware Server ersetzen, dessen Weiterentwicklung vor rund zwei Jahren eingestellt wurde.

Virtualbox verfügt über alle nötigen Voraussetzungen für den Server-Einsatz: Ein optionaler RDP-Server für Virtualbox ermöglicht die Steuerung der Gastsysteme über das Netzwerk. Neben den Verwaltungswerkzeugen für die Kommandozeile enthält der Virtualisierer auch eine SOAP-Schnittstelle für die Steuerung per API. Diese nutzt phpVirtualBox für eine alternative, web-basierte Bedienoberfläche. Auf dem Server muss dazu lediglich ein Webserver wie Apache mit PHP laufen. Per Browser lässt sich dann Virtualbox über das Netzwerk steuern, während sich die virtuellen Maschinen über RDP-Clients steuern lassen, die für nahezu jedes Betriebssystem zur Verfügung stehen. Als Server-Betriebssystem eignet sich Linux am besten, da hier alles vergleichsweise schnell eingerichtet ist.

phpVirtualbox (10 Bilder)

Weboberfläche

phpVirtualBox stellt mit Ajax ein Webfrontend bereit, das der Bedienoberfläche von Virtualbox ähnelt.

Extension Pack: Der RDP-Server ist in ein nachinstallierbares Paket ausgelagert, das nicht unter der GPL steht.

Virtualbox sollte stets in der aktuellsten Version installiert sein. Seit die Software unter der GNU General Public License (GPL) steht, bieten viele Distributionen Virtualbox über die eigenen Paketquellen an. Selbst nachinstallieren muss man das Extension Pack für Zusatzfunktionen wie USB 2.0 und die RDP-Schnittstelle. Oracle verfolgt hier seit Virtualbox 4.0 ein duales Lizenzmodell: Das Zusatzpaket ist nicht Open Source und hat eigene Nutzungsbedingungen, die in der PUEL (Personal Use and Evaluation License) zusammengefasst sind. Für Endanwender und zur Evaluierung ist das Paket kostenlos, Firmenkunden müssen bei Oracle eine kommerzielle Lizenz inklusive Support erwerben. Eine aktuelle Version des Extension Packs steht auf der Download-Seite von Virtualbox bereit. Die Versionsnummer des Pakets muss mit der von Virtualbox exakt überein stimmen, damit es sich installieren lässt. In der grafischen Oberfläche von Virtualbox ist die Verwaltung der Extension Packs unter „Datei / Globale Einstellungen, Zusatzpakete“ untergebracht. Auf der Kommandozeile gelingt die Installation mit dem Tool VboxManage. Bei Version 4.1.18 des Extension Packs mit Administratorrechten mit dieser Befehlszeile:

sudo VBoxManage extpack install \
Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361.vbox-extpack

Damit phpVirtualBox in Aktion treten kann, muss auf dem Webserver bereits PHP 5 laufen. Für Apache 2 lässt sich das unter Debian und Ubuntu mit dem Befehl

sudo apache2ctl -t -D DUMP_MODULES

überprüfen, der die geladenen Module anzeigt.

Der Programmcode von phpVirtualBox unterliegt der GPL 3 und steht auf der Projektwebseite für verschiedene Virtualbox-Versionen zur Verfügung. Die aktuelle Version für Virtualbox ab 4.1 steckt in der ZIP-Datei phpvirtualbox-4.1-7.zip. Das Archiv mit den PHP-Dateien muss ins öffentliche Verzeichnis des Webservers entpackt werden, hier der Einfachheit halber nach /var/www/phpvirtualbox/:

sudo unzip -q phpvirtualbox-4.1-7.zip -d /var/www/
sudo mv /var/www/phpvirtualbox-4.1-7/ /var/www/phpvirtualbox

Danach braucht die Konfigurationsdatei von phpVirtualBox etwas Zuwendung. Eine Beispielkonfiguration liegt als config.php-example im Zielverzeichnis /var/www/phpvirtualbox/, die mit der Befehlszeile

sudo mv /var/www/phpvirtualbox/config.php-example 
/var/www/phpvirtualbox/config.php

aktiviert wird. Die jetzt noch nötigen Änderungen in der Datei config.php lassen sich in einem beliebigen Texteditor vornehmen. In die mit "var $username" und "var $password" beginnenden Zeilen setzt man Benutzernamen und Passwort des Benutzers, unter dem Virtualbox laufen soll. Hier verwendet man die Anmeldeinformationen für das Benutzerkonto des Linux-Systems. Zweifelsohne ist es ein Schönheitsfehler, dass hier das Anmeldepasswort im Klartext steht – für den Einsatz von phpVirtualBox im lokalen Netzwerk ist das aber noch vertretbar. Besser ist, für den Betrieb der virtuellen Maschinen ein eigenes Benutzerkonto mit einem anderen Passwort anzulegen.

Das Bindeglied zwischen Virtualbox und den PHP-Skripten von phpVirtualBox ist der Dienst vboxwebsrv, den der Virtualisierer selbst mitbringt. Für einen ersten Test, ob alles funktioniert, startet man den Dienst vom gewünschten Benutzerkonto aus mit dem Kommando "vboxwebsrv". Das Benutzerkonto muss mit dem identisch sein, das in der in der config.php angegeben ist. Im Browser lässt sich jetzt das Webinterface unter der Adresse http://192.168.1.50/phpvirtualbox aufrufen, wobei man die IP des Servers im lokalen Netzwerk entsprechend anpassen muss.

Zunächst begrüßt den Anwender hier ein Anmeldedialog. Hier werden nicht die Anmeldeinformationen für das Linux-Benutzerkonto verlangt. Stattdessen meldet man sich mit dem vorkonfigurierte Standard-Konto "admin" und dessen Passwort "admin" an. Das Standard-Passwort sollte man anschließend in der Web-Oberfläche unter "File / Change Password" ändern. Generell darf in phpVirtualBox nur der Admin Maschinen ändern und erstellen.

Der gewünschte Port für RDP wird in den Eigenschaften einer virtuellen Maschine festgelegt.

Das Extension Pack spendiert Virtualbox einen RDP-Server, mit dem sich die virtuellen Maschinen über das Netzwerk nutzen lassen. Die Einstellungen dazu finden sich in den Eigenschaften virtueller Maschinen unter "Settings / Display / Remote Display". Bei "Server Port" gibt man die gewünschten Portnummern an. Für die Verbindung zu einer laufenden Maschine eignet sich unter Linux der Kommandozeilen-Client rdesktop, der sich über den jeweiligen Paketmanager aller großen Distributionen installieren lässt. Wer es komfortabler mag, kann bei vielen Distributionen den Client Remmina mit grafischer Oberfläche nutzen, der mit dem Plug-in remmina-plugin-rdp auch RDP versteht.

Unter Windows eignet sich das Programm „Remotedesktopverbindung“ im Zubehör-Menü. Alternativ dazu bietet phpVirtualBox einen integrierten RDP-Client von Oracle, der den Remote-Desktop über Flash abbildet. Bei einer laufenden Maschine startet man ihn über den Button "Console" oben rechts in deren Übersichtsseite. Allerdings ist der Client weniger reaktionsfreudig als ein eigenständiges Programm.

Ein Init-Skript sorgt für den automatischen Start von vboxwebsrv. Hier muss nur der Benutzername geändert werden.

Soll phpVirtualBox permanent laufen, ist es zu umständlich, den nötigen Dienst von Virtualbox immer erst manuell auszuführen. Die bessere Lösung ist, vboxwebsrv automatisch beim Systemstart als Init-Script zu starten. Ein passendes Init-Script vboxwebsrv stellt der Entwickler von phpVirtualBox bereit. Unter Debian und Ubuntu lässt es sich mit vertretbarem Aufwand einrichten.

Die heruntergeladene Datei vboxwebsrv muss zunächst mit einem Texteditor bearbeitet werden. In der Zeile, die mit "USER=" beginnt, ersetzt man "vbox" durch den Benutzer, in dessen Kontext der Dienst laufen soll. Hier trägt man den Benutzernamen ein, der in der config.php von phpVirtualBox definiert ist. Anschließend muss die Datei vboxwebsrv ins Verzeichnis /etc/init.d/ verschoben werden. Passende Zugriffsrechte erhält sie dann mit den folgenden Befehlen:

sudo chown root:root /etc/init.d/vboxwebsrv
sudo chmod +x /etc/init.d/vboxwebsrv

Der folgenden Konfigurationsbefehl sorgt dann für den automatischen Start:

sudo update-rc.d vboxwebsrv defaults

Im eigenen, behüteten Netzwerk, in dem weder Verschlüsselung von Netzwerkverbindungen noch sichere Authentifizierung über RDP eine Rolle spielen, ist phpVirtualBox eine reizvolle Ergänzung. Mit vertretbarem Konfigurationsaufwand kann Virtualbox sein Potential ausspielen und virtuelle Maschinen zentral auf einem leistungsfähigen Server im Netzwerk hosten.

Wer dagegen Virtualbox auf einem Server im Internet betreiben will, muss deutlich mehr Sicherheitsvorkehrungen treffen. Allerdings machen diese die Konfiguration dann auch deutlich aufwändiger. (lmd) (lmd)