Jump to content

# RemoteBox

From ArchWiki

Related articles

- VirtualBox
- Category:Hypervisors
- PhpVirtualBox

RemoteBox is an open-source remote client for managing VirtualBox, written in Perl and GTK. It enabled administering a VirtualBox installation on a server, including its guests and interact with them as if they were running locally. While VirtualBox is installed server-side, RemoteBox runs on a client machine. It provides a complete GTK graphical interface with a look and feel very similar to that of VirtualBox's native GUI. If you are familiar with other virtualization software, such as VMWare ESX, then think of RemoteBox as the "poor man's VI client".

## Installation

### Client-side

RemoteBox is the client application, which can be obtained by installing the remoteboxAUR package. For remote desktop operations an RDP client is also needed. RemoteBox includes presets for freerdp, rdesktop and krdc. As of this writing, freerdp-gitAUR 2.0.0.beta1 has been tested and found working. Alternatively VNC can be used with included presets for TigerVNC, vinagreAUR, krdc and realvnc-vnc-viewerAUR.

### Server-side

The VM host needs a working VirtualBox installation. For remote desktop operations a non-free Oracle VM VirtualBox Extension Pack is needed for RDP support or alternatively an open-source virtualbox-ext-vnc can be used for VNC support. Also consider installing guest additions ISO for guests to be able to install or update the tools.

VirtualBox installation includes the VirtualBox web service (`vboxwebsrv`) providing a HTTP(S) server offering API to clients such as RemoteBox. The service should not and also refuses to run as root. For improved security an additional user for running VMs and web service should be created. The user requires a password (to be used for remote login), a home directory (for VirtualBox settings and virtual machines configuration) and a shell (for RemoteBox to be able to login). The rest of this page assumes a `vbox` user with primary group `vboxusers`.

The provided service file `/usr/lib/systemd/system/vboxweb.service` serves as a template that can be custimized with a drop-in file as follows:

    /etc/systemd/system/vboxweb.service.d/override.conf

    [Service]
    User=vbox
    Group=vboxusers
    PIDFile=/run/vboxwebsrv/vboxwebsrv.pid
    ExecStart=
    ExecStart=/usr/bin/vboxwebsrv --pidfile /run/vboxwebsrv/vboxwebsrv.pid --background --host 0.0.0.0

Logging can be enabled by editing the `ExecStart` line in the override file above to include the `--logfile <log file location>` directive. For increased verbosity you can also include the `--verbose` directive. Make sure the vbox user has permissions to write to the configured log file location.

The `--host` directive can be changed to localhost or the hostname to only bind the service locally, or be set to an IP of a single chosen interface. An alternative port from the default 18083 can be set with `--port`.

You also need to create a tmpfile rule for `vboxwebsrv`'s PID file:

    /etc/tmpfiles.d/vboxwebsrv.conf

    d /run/vboxwebsrv 0755 vbox vboxusers

To test `vboxweb.service` immediately you need to first manually create the `/run/vboxwebsrv` directory:

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

Now the `vboxweb.service` can be started and/or enabled.

## Connecting RemoteBox to vboxwebsrv

Open RemoteBox and click the Connect button. Specify the following:

    URL: http:<server IP>:18083
    Username: vbox
    Password: <vbox user password>

To make it easier connecting during future sessions, after login go to File > Connection Profiles and create a new connection profile.

## Troubleshooting

If you encounter a login problem connecting to the server, first check that the service is running. From the server console, check `vboxweb.service` unit status.

It should output that it is running. If not, check logging with journalctl and, if you configured `--logfile`, the `vboxwebsrv`'s log file for any leads.

Even with increased verbosity the VirtualBox web service might not give you any useful leads. In that case you can try to run the server manually as vbox from the command line with su or sudo.

    [vbox]$ /usr/bin/vboxwebsrv --pidfile /run/vboxwebsrv/vboxwebsrv.pid --host 0.0.0.0

Omit the `--background` and `--logfile` directives. If the service starts, the problem could be permissions to the log file. Leave it running and check if you can connect with RemoteBox from the client. Also check the `~/.config/VirtualBox` directory gets created and populated with configuration and/or log files.

If you still cannot connect, you can stop the service with `Ctrl-c` and start it with the `--background` directive. Next, using `netstat` or similar check whether `vboxwebsrv` is listening on port 18083. If you see a different port you can try connecting with RemoteBox on that port instead.

Another reason could be a firewall, either on your server, or even on your client.

If you are getting the following error message:

    vboxwebsrv: error: failed to initialize COM! hrc=NS_ERROR_FAILURE

Check that your home directory is writable for the user vbox.

## See also

- RemoteBox - Linux Server Configuration
- RemoteBox home page
- RemoteBox on SourceForge

Category:

- Virtualization

RemoteBox
Add topic