Difference between revisions of "PhpVirtualBox"

From ArchWiki
Jump to: navigation, search
(Web interface)
m (Web interface)
Line 66: Line 66:
Edit {{Ic|/etc/php/php.ini}}, make sure the following lines are uncommented.
Edit {{Ic|/etc/php/php.ini}}, make sure the following lines are uncommented.
  extension=json.so  # this module is built into php as of version 5.4 and so will not exist or need to be uncommented
  extension=json.so  ; this module is built into php as of version 5.4 and so will not exist or need to be uncommented

Revision as of 23:30, 16 April 2013

phpVirtualBox is an open source, AJAX implementation of the VirtualBox user interface written in PHP. As a modern web interface, it allows you to access and control remote VirtualBox instances. Much of its verbage and some of its code is based on the (inactive) vboxweb project. phpVirtualBox was designed to allow users to administer VirtualBox in a headless environment - mirroring the VirtualBox GUI through its web interface.


To remotely control virtual machine you need two components: VirtualBox web service, running in the same OS with virtual machine, and web interface, written in PHP and therefore dependent on PHP-capable web server. Communication between them, based on SOAP protocol is currently unencrypted, so it is recommended to install both on the same machine if you do not want your username and password to be send via network as clear text.

VirtualBox web service

To use the web console, you must install virtualbox-ext-oracleAUR package from AUR.

VirtualBox web interface (phpvirtualbox)

Install phpvirtualbox from Official Repositories on a php-capable web server of your choice (Apache is suitable choice).


From here on out, it is assumed that you have a web server (with root at /srv/http) and php functioning properly.

Web service

In virtual machine settings, enable the remote desktop access and specify a port different with other virtual machines.

Every time you need to make machine remotely available execute something like this:

vboxwebsrv -b --logfile path to log file --pidfile /run/vbox/vboxwebsrv.pid --host

As user whom account you want service to be running from (--host option is not necessary if you enabled association with localhost in the /etc/host.conf).

Note: This user must be in group vboxusers!

virtualbox is available in community and it's contains the vboxweb.service for systemd.

For start vboxweb from non-root user you must:

1. Create or add a user in the group vboxusers (for example, vbox)

2. Create your custom vboxweb_mod.service file by copy /usr/lib/systemd/system/vboxweb.service to /etc/systemd/system/vboxweb_mod.service

3. Modify /etc/systemd/system/vboxweb_mod.service like this:

 Description=VirtualBox Web Service

 ExecStart=/usr/bin/vboxwebsrv --pidfile /run/vboxweb/vboxweb.pid  --background


4. Create tmpfile rule for your vboxweb_mod.service

# echo "d /run/vboxweb 0755 vbox vboxusers" > /etc/tmpfiles.d/vboxweb_mod.conf

5. Create manually /run/vboxweb directory for first start vboxweb_mod.service

# mkdir /run/vboxweb
# chown vbox:vboxusers /run/vboxweb
# chmod 755 /run/vboxweb

or just reboot your system for automatically create.

6. Start vboxweb_mod.service

# systemctl start vboxweb_mod

and enable it if nessesary

# systemctl enable vboxweb_mod

Web interface

Edit /etc/php/php.ini, make sure the following lines are uncommented.

extension=json.so  ; this module is built into php as of version 5.4 and so will not exist or need to be uncommented

Edit the example configuration file /usr/share/webapps/phpvirtualbox/config.php-example appropriately (it is well-commented and does not need explanations). Copy that file into /etc/webapps/phpvirtualbox/config.php and symlink to /usr/share/webapps/phpvirtualbox/config.php.

If you are running Apache as webserver, you can copy /etc/webapps/phpvirtualbox/apache.example.conf into /etc/httpd/conf/extra/phpvirtualbox.conf, and then add following line into /etc/httpd/conf/httpd.conf:

Include conf/extra/phpvirtualbox.conf

Edit /etc/webapps/phpvirtualbox/.htaccess and remove the following line.

deny from all

Don't forget to restart the webserver like this (example for Apache):

systemctl restart httpd


If everything works fine, visit http://YourVboxWebInterfaceHost/phpvirtualbox and it should show a login box. The initial username and password are both "admin", after login change them from the web interface (File -> change password). If you set $noAuth=true in the web interface config.php, you should immediately see the phpvirtualbox web interface.


If you encounter a login problem, and you have upgraded virtualbox from 3.2.x to 4.0.x, you should run the following command to update you websrvauthlibrary in you virtualbox configuration file which has been changed from VRDPAuth.so to VBOXAuth.so.

VBoxManage setproperty vrdeauthlibrary default
VBoxManage setproperty websrvauthlibrary default 

If you are still unable to login into the interface, you can try to disable webauth by

VBoxManage setproperty websrvauthlibrary null

on virtualization server and set username and password to empty strings and set $noAuth=true in /etc/webapps/phpvirtualbox/config.php on web server. By doing this, you should immediatelly access the web interface without login process. And then, maybe you can try some apache access control.

External Resources