Headless VirtualBox unter Debian Server

Bisher hatte ich meine VirtualBox VM's immer auf einem Windows Rechner am Laufen. Da Windows ja auch einiges an Ressourcen braucht kam ich zu der Überlegung VirtualBox auf einem Linux Server zu installieren.
Der Linux Server ist dabei eine Minimal-Installation ohne grafische Oberfläche und somit sparsamer was die verbrauchten Ressourcen angeht.

Im Netz fand ich den Hinweis auf phpVirtualBox. Dies ist eine Webanwendung, die die Oberfläche zum Steuern und Verwalten von VirtualBox VM's über einen Browser ermöglicht.

Mit den Anleitungen aus dem Netz tat ich mich zunächst sehr schwer, es gelang mir zwar VirtualBox zu installieren, meine VM's einzubinden und zu starten, aber phpVirtualBox wollte einfach nicht laufen.

Letztlich lief es darauf hinaus, dass ich nie die richtige Version von phpVirtualBox für die verwendete VirtualBox Installation hatte und es mir auch nicht bewusst war, dass es hier Abhängigkeiten gibt.

Aus diesem Grund habe ich hier dieses HowTo erstellt um villeicht dem einen oder anderen weiter zu helfen.

Eine Bemerkung am Rand: Ja die VM's laufen etwas flüssiger - aber es ist kein Quanntensprung!

Die Veröffentlichung dieses Howtos erfolgt in der Hoffnung, dass es dem Ein oder Anderen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK.


Voraussetzungen

Dieses HowTo wurde für die folgenden Versionen erstellt:

  • Debian Buster
  • VirtualBox 6.1.16
  • phpVirtualBox 6.1-0

Die folgende Beschreibung basiert auf einem fertig aufgesetztem Debian Buster Server. Er muss einen Zugang zum Internet haben und eine Zugriffsmöglichkeit (z.B. über ssh) muss zur Verfügung stehen.

Im Laufe der Beschreibung wird ein Apache2 Webserver mit PHP7.x installiert. Sollte auf dem Server bereits ein Apache2 Webserver installiert sein ist dies kein Problem, er kann einfach mitverwendet werden.


Zutaten und ihre Bezugsquellen

VirtualBox 6.1.16

Dies zu finden ist ganz einfach: Es wird direkt über "apt-get" herunter geladen und installiert. Eine genaue Beschreibung erfolgt hier im HowTo.

VirtualBox Extension Pack 6.1.16

VirtualBox Extension Pack 6.1.16 kann direkt von Oracle bezogen und auf den Server herunter geladen werden. Auch hier erfolgt eine Beschreibung im HowTo.

phpVirtualBox 6.1-0

Beim Herunterladen von phpVirtualBox lag zunächst mein Problem. Die Anleitungen zum Herunterladen waren in den Anleitungen im Netz irreführend oder sogar einfach falsch.

Für die VirtualBox Version 6.1 wird eben auch phpVirtualBox benötigt. Und diese findet man unter <https://github.com/phpvirtualbox/phpvirtualbox>. Die dortige Angaben um an das Paket zu kommen sollten ignoriert werden, ich bekam hier immer nur die Version 5.0.

Daher auf der Seite den grünen Button "Code" drücken und danach "Download ZIP" auswählen - das war es dann auch schon.


Installation VirtualBox 6.1.16

Damit VirtualBox über "apt-get" installiert werden kann muss zunächst im Verzeichnis "/etc/apt/sources.list.d" die Datei "virtualbox.list" angelegt werden:

sudo vi /etc/apt/sources.list.d

Die Datei "virtualbox.list" muss den folgenden Inhalt haben:

deb http://download.virtualbox.org/virtualbox/debian buster contrib


Danach wird der Oracle VirtualBox Public Key herutergeladen und installiert:

wget https://www.virtualbox.org/download/oracle_vbox_2016.asc
sudo apt-key add oracle_vbox_2016.asc


Und nun wird VirtualBox 6.1 Installiert:

sudo apt-get update
sudo apt-get install virtualbox-6.1

Kleiner Tipp am Rande: Um festzustellen welche Versionen vorhanden sind, einfach "apt-get install virtualbox" ohne Versionsangabe eingeben. Dann werden die verfügbaren Versionen ausgegeben.


Was jetzt noch fehlt ist der VirtualBox Extension Pack 6.1.16. dieser wird wie folgt herunter geladen und installiert:

cd /tmp
wget https://download.virtualbox.org/virtualbox/6.1.16/Oracle_VM_VirtualBox_Extension_Pack-6.1.16.vbox-extpack
sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.16.vbox-extpack


Die Kommunikation zwischen phpVirtualBox und VirtualBox muss zwingend mit einem Nicht-Root-User erfolgen. Ich verwende hierzu meinen normalen Benutzer "tom". Dieser wird nun der Gruppe "vboxusers" hinzugefügt:

sudo adduser tom vboxusers

Die Installation ist nun soweit fertig, dass VirtualBox verwendet werden kann. Die Installation von phpVirtualBox ist nicht zwingend notwendig, jedoch ist die Konfiguration von VM's und deren Steuerung über die Befehlszeile nicht sehr komfortabel.
Weiter unten habe ich de Import von vorhandenen VM's und deren Steuerung über die Befehlszeile beschrieben.


Installation von Apache2 mit PHP7.x

Eine Webanwendung braucht auch eine Webserver - logisch. Hier wird nun ein Apach2 Webserver mit PHP7.x aufgesetzt:

sudo apt-get install apache2 php php-common php-mysql libapache2-mod-php php-soap php-cli php-fpm php-json php-pdo php-zip php-gd  php-mbstring php-curl php-xml php-pear php-bcmath


Installation von phpVirtualBox 6.1-0

Zunächst muss das Paket am Ablageort entpackt werden:

cd <Verzeichnis>
unzip phpvirtualbox-develop.zip


Danach wird das ganze ins Zielverzeichnis verschoben, umbenannt und die Zugriffsrechte gesetzt:

mv phpvirtualbox-develop /var/www/html/phpvirtualbox
chown -R tom:tom /var/www/html/phpvirtualbox
chmod -R 755 /var/www/html/phpvirtualbox


Im Installationspaket wird auch eine Beispiel-Konfigurationsdatei mitgeliefert. Diese kann mit kleinen Anpassungen verwendet werden:

sudo cp /var/www/html/phpvirtualbox/config.php-example /var/www/html/phpvirtualbox/config.php

sudo vi /var/www/html/phpvirtualbox/config.php

Die folgenden Zeilen müssen angepasst werden:

var $username = 'tom';
var $password = '<Passwort>';


Zum Abschluss wird der VirtualBox Webservice gestartet, der automatisch Start ermöglicht und der Apach2 durchgestartet:

sudo systemctl enable vboxweb-service.service
sudo systemctl start vboxweb-service.service
sudo systemctl reload apache2.service


Nun wird es Zeit einen Webbrowser zu öffnen und auf phpVirtualbox zu zugreifen:

http://http:/<IP-Adrese des Servers>/phpvirtualbox/

Der Benutzer und das Standard-Passwort laute "admin".

Kleiner Tipp am Rande: Sollte phpVirtualBox nicht starten oder Fehlermeldungen auftreten kann mit "ps -ef | grep vbox" überprüft werden ob der VirtualBox Webservice läuft. Sollte dies nicht der Fall sein ist ein Neustart des Servers nicht die schlechteste Idee.

tom@VBoxServer:~$ ps -ef | grep vbox
tom        632     1  0 04:32 ?        00:00:02 /usr/lib/virtualbox/vboxwebsrv --background -H localhost
tom       1100  1094  0 04:51 pts/0    00:00:00 grep vbox

Importieren von vorhandenen VM's

Besonders einfach geht dies, wenn:

  • Die VM Konfigurationsdatei "*.vbox", die Virtuelle Festplatte "*.vdi", das Snapshot-Verzeichnis und das Log-Verzeichnis in einem gemeinsamen Verzeichnis liegen
  • Als Grafik-Controller "VBoxVGA" eingestellt ist
  • Eine valide Prozessoranzahl ausgewählt wurde
  • Eine valide Hauptspeichergröße ausgewählt wurde

Der Import einer vorhandenen VM kann über phpVirtualBox (Menü - Maschine - Hinzufügen) aber auch über die Befehlszeile vorgenommen werden.

Befehle zur Steuerung von VM's über die Befehlszeile

Hilfe zur VM-Steuerung

VBoxManage --help

Importieren einer vorhandenen VM

VBoxManage registervm /home/tom/.VirtualBox/Machines/examplevm/examplevm.vbox

Stoppen einer VM

VBoxManage controlvm "Debian Server" poweroff

Pausieren einer VM

VBoxManage controlvm "Debian Server" pause

Zurücksetze einer VM

VBoxManage controlvm "Debian Server" reset

Hilfe zum Headless-Modus

VBoxHeadless --help

Starten einer VM im Headless-Modus

VBoxHeadless --startvm "Debian Server"