Header Ads

Administrando VMs

La virtualización hoy por hoy se ha convertido en la herramienta más usada por las organizaciones y usuarios comunes, ya que los ahorros en costes son bastante significativos, sin mencionar que es más fácil hacerle un respaldo, sincronización o clonación a una VM que a un servidor o equipo físico.
Ahora ya podemos virtualizar prácticamente todo; desde un servidor o PC, hasta un smarthphone o una red de datos, sin embargo manejar un pool de VMs incrustadas en un servidor o en puntos remotos no es tan sencillo y su administración puede causar bastantes dolores de cabeza. Y si le sumamos a esto que nuestro equipo no tiene entorno gráfico, o sí lo tiene pero los recursos son escasos, se puede crecer el enano. Es por eso que algunos administradores IT prefieren solucionar estas limitaciones "a la antigua", echando mano de la vieja consola.
Así las cosas, podremos instalar nuestras máquinas virtuales directamente desde el terminal, y arrancarlas con el inicio del sistema, lo cual en ocaciones nos proporciona ciertas libertades, ya que podemos modificar el funcionamiento de las VMs a nuestro antojo. Es por eso que daremos algunos tips para poder sortear estas dificultades, utilizando VirtualBox de Oracle, por tener calificación BBB (Bueno, Bonito y Barato)
Nota: Este artículo ha sido actualizado en Diciembre 2022. Ir a Update 2022 para ver los cambios.
Instalación
El primer paso es instalar Virtualbox 4x y crear la VM. Por consola, lea el excelente tutorial Integración Contínua: Instalar y configurar nuestra máquina virtual con VirtualBox, por consola.
No olviden que después de instalado y creadas las VMs, instalar Guest Additions y adicionar el usuario al grupo vboxusers.
adduser usuario vboxusers
Donde "usuario" es el nombre de tu usuario. Para verificarlo ejecuta en el terminal echo $USER
Si ya la tiene instalada y su VM creada, aquí algunos parámetros que debe considerar. En el siguiente ejemplo, vamos a asumir que tenemos dos VM; una llamada 7 (Windows 7) y otra Kali (Kali Linux). Para conocer los detalles de nuestras VMs ejecutamos en el terminal:
VBoxManage list vms
"7" {a14763d0-8135-4ed8-a794-4555aa307b8d}
"kali" {0cc560a6-c41c-43f7-aa8a-b9d264432e4c}
Pero si quiere conocer los parámetros específicos de las VMs:
VBoxManage list vms -l
Comandos más usados
VBoxManage startvm VM (iniciar)
user@user:~$ VBoxManage startvm 7
Waiting for VM "7" to power on...
VM "7" has been successfully started.
o
user@user:~$ VBoxManage startvm a14763d0-8135-4ed8-a794-4555aa307b8d
Waiting for VM "a14763d0-8135-4ed8-a794-4555aa307b8d" to power on...
VM "a14763d0-8135-4ed8-a794-4555aa307b8d" has been successfully started
El comando controlvm tiene varios estados (pause|resume|reset|poweroff|savestate); por ejemplo:
VBoxManage controlvm 7 reset (reinicio)
VBoxManage controlvm 7 poweroff (apagado).
user@user:~$ VBoxManage controlvm 7 poweroff
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
VBoxManage controlvm 7 pause (pausar VM)
VBoxManage controlvm 7 resume (Reiniciar VM de la pausa)
VBoxManage controlvm 7 savestate (guardar el estado actual de la VM)
user@user:~$ VBoxManage controlvm 7 savestate
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Y para restablecerla nuevamente:
VBoxManage startvm 7
Waiting for VM "7" to power on...
VM "7" has been successfully started
VBoxManage modifyvm 7 parametro (para modificar la VM)
VBoxManage createvm –name “7” –register (Crear VM)
Por terminal se puede hacer prácticamente todo. Crear la VM, clonarla, arrancarla, apagarla, reiniciarla, suspenderla, configurarla, etc, etc. Para profundizar en este tema, visite la  guía de VirtualBox
Administración
El siguiente paso es administrar nuestras VMs sin utilizar el entorno gráfico y una de las mejores alternativas es phpvirtualbox
Pasos
Instalamos los paquetes necesarios:
apt-get install php5 php5-common php5-cli libapache2-mod-php5 php5-mcrypt mysql-server php5-mysql apache2 php-soap php5-gd
Asegúrese de tener instalado las cabeceras del kernel y dependencias
apt-get install linux-headers-$(uname -r)
apt-get autoremove
apt-get install build-essential module-assistant dkms
Ahora adicionamos nuestro usuario:
nano /etc/default/virtualbox
Y añadimos la linea (donde 'user' es nuestro usuario. Cámbielo por el suyo):
VBOXWEB_USER=user
Y reiniciamos los servicios:
update-rc.d vboxweb-service defaults
/etc/init.d/vboxweb-service start
Luego verifique el estado:
/etc/init.d/vboxdrv status
VirtualBox kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) are loaded.
Y si hay problemas, ejecute:
/etc/init.d/vboxdrv setup
Verifique el funcionamiento de su apache y base de datos. Para este paso debe haber configurado antes Apache + PHP + MySql
http://localhost/info.php
# o
http://ipdelservidor/info.php
Ahora descargamos phpvirtualbox, descomprimimos y creamos la carpeta (verifique en el portal oficial si la versión ha sido actualizada. En ese caso cambie 4.3-3 por la más reciente):
mkdir /var/www/html/phpvirtualbox
cd /tmp/
wget -c --retry-connrefused -t 0 http://downloads.sourceforge.net/project/phpvirtualbox/phpvirtualbox-4.3-3.zip
unzip phpvirtualbox-4.3-3.zip
cp -R phpvirtualbox-4.3-3/* /var/www/html/phpvirtualbox/
rm -R phpvirtualbox-4.3-3*
cd
Copiamos y modificamos el archivo de configuración:
cp /var/www/html/phpvirtualbox/config.php-example /var/www/html/phpvirtualbox/config.php
nano /var/www/html/phpvirtualbox/config.php
Y cambiamos usuario y contraseña:
/* Username / Password for system user that runs VirtualBox */
var $username = 'vbox';
var $password = 'pass';
Nota: Si no quiere crear un usuario nuevo llamado 'vbox', puede cambiarlo por el nombre de su usuario y password actual del sistema con tan solo sustituir 'vbox' y 'pass'.
PHPVirtualBox
Finalmente accedemos a PHPVirtualBox por el navegador (podemos utilizar localhost, si estamos en el mismo equipo o la ip del servidor, si accedemos desde una ubicación diferente):
http://ipdelservidor/phpvirtualbox/
http://localhost/phpvirtualbox/
Para cambiar el usuario y pass por default de phpvirtualbox (admin/admin), una vez ingresado a PhpVirtualBox, pulsamos File y Change Password. Ahí colocamos la contraseña anterior (admin) y la nueva.
Extra
Verificar el soporte 3D (para Unity y otros entornos), ya que la VM puede ralentizarse.
/usr/lib/nux/unity_support_test -p
Para solucionarlo instale  Guest Additions. También puede modificar la resolución, verificando primero si la deseada esta soportada:
xrandr
Y para las ediciones sin entorno gráfico,  cambiar la resolución por defecto (800x600) con:
apt-get install virtualbox-guest-dkms
VBoxManage setextradata global GUI/MaxGuestResolution any
Para conocer los errores más frecuentes, visite  
Sourceforge  
No olviden fortificar el servidor apache para evitar contratiempos:
PHPVirtualbox 5x
PHPVirtualbox ha actualizado su version a 5x al igual que VirtualBox. Es importante señalar que las versiones 4x de PHPVirtualbox no son compatibles con Virtualbox 5x. Debe actualizar su version:
echo "Pasos para instalar PHPVirtualbox 5x"
echo "acceda por http://ipdelservidor/phpvirtualbox/ o http://localhost/phpvirtualbox/"
mkdir /var/www/html/phpvirtualbox
cd /tmp/
wget -c --retry-connrefused -t 0 http://downloads.sourceforge.net/project/phpvirtualbox/phpvirtualbox-5.0-2.zip'
unzip phpvirtualbox-*.zip
cp -R phpvirtualbox-* /var/www/html/virtualbox
rm -R phpvirtualbox-*
cd
cp /var/www/html/phpvirtualbox/config.php-example /var/www/html/phpvirtualbox/config.php
Ahora cree y edite el archivo de configuración virtualbox y le ingresa los siguientes datos (donde "usuario" es la cuenta donde está instalando PHPVirtualbox):
nano /etc/default/virtualbox
VBOXWEB_USER=usuario
VBOXWEB_HOST=127.0.0.1
Y modifique el archivo config.php con la siguiente informacion:
nano /var/www/html/phpvirtualbox/config.php
var $username = 'usuario'; # el mismo usuario de /etc/default/virtualbox
var $password = 'su_password'; # su password de usuario
var $location = 'http://127.0.0.1:18083/';
Y reinicie:
update-rc.d vboxweb-service defaults
/etc/init.d/vboxweb-service start
Puede presentarse el caso de que vboxweb-service no inicie (mensaje Fail o Could not connect to host (http://127.0.0.1:18083/)). En este caso, el culpable es vboxwebsrv
1. Verifique que SELinux no esté bloqueando el acceso a vboxwebsrv
2. Haga un ps ax | grep vboxwebsrv para verificar si esta corriendo. Si no lo está, ejecute: vboxwebsrv > nul &
o puede correrlo en background:
/usr/lib/virtualbox/vboxwebsrv --background
3. Si recibe un error /var/log/apache2/error.log similar a:
[evasive20:error] [pid 4697] [client 127.0.0.1:37310] client denied by server configuration: /var/www/html/phpvirtualbox/endpoints/api.php etc etc
Es posible que el módulo mod_evasive de apache y está bloqueando phpvirtualbox. Siga los siguientes pasos: a. Verifique si mod_evasive está activo. Abra el terminal y ejecute el siguiente comando:
perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
Si el módulo evasive esta inactivo muestra:
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
Si esta activo muestra:
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
Si no está activo, vaya al paso 2. Si está activo, desactivelo y luego vaya al paso 2.
a2dismod evasive
2. Edite los archivos:
/etc/apache2/mods-available/evasive.conf
/etc/apache2/mods-enabled/evasive.conf
Y asegúrese de se encuentren las líneas:
DOSLogDir "/var/log/apache2/mod_evasive.log" # registro de eventos
DOSWhitelist 127.0.0.1 # excluir localhost (Puede agregar mas ips)
3. Guarde los cambios, active el módulo y reinicie apache:
a2enmod evasive
/etc/init.d/apache2 force-reload
A partir de la versión 15.04 se solucionó el bug Kernel Service is not Running, por tanto ya no es necesario iniciar /etc/init.d/vboxdrv
A continuación la instalación paso a paso  PHPVirtualbox 5x para  Ubuntu 16.04x (Xenial Xerus) LTS x64VirtualBox 5x + ExtensionApache2PHP7
Instalando Apache2
Asumiendo que ya tiene instalado las cabeceras (headers,  build-essential module-assistant dkms, etc), instale Apache2..
apt -y install apache2 apache2-doc apache2-utils apache2-dev apache2-suexec-pristine libaprutil1 libaprutil1-dev
Edite  /etc/apache2/apache2.conf y asegúrese de que contenga la siguiente información:
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
ServerName localhost
ServerName gateproxy # el nombre de su servidor
ServerName 192.168.1.10 # la ip de su servidor
Modifique  /etc/apache2/sites-enabled/000-default.conf y asegúrese de que contenga la siguiente información:
< VirtualHost *:80>
 ServerAdmin webmaster@localhost
 DocumentRoot /var/www/html

 < Directory />
  #Options FollowSymLinks
  Options None
  DirectoryIndex index.php index.html index.htm
  AllowOverride None
 < /Directory>
 < Directory "/var/www/html">
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    < /Directory>

 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 < Directory "/usr/lib/cgi-bin">
  AllowOverride None
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Require all granted
 < /Directory>
 LogLevel warn
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
< /VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Establezca la contraseña de apache2 para su usuario
htpasswd -c /etc/apache2/.htpasswd $USER
Instalando y configurando Virtualbox con Extension Pack
echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | tee /etc/apt/sources.list.d/virtualbox.list
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add -
vboxmanage list runningvms | sed -r 's/.*\{(.*)\}/\1/' | xargs -L1 -I {} VBoxManage controlvm {} savestate >/dev/null 2>&1
apt -y autoremove --purge virtualbox* >/dev/null 2>&1
rm -rf /etc/vbox >/dev/null 2>&1
apt update && apt -y install virtualbox-5.0 bridge-utils && dpkg --configure -a && apt -f install
cd /tmp
export VBOX_VER=`VBoxManage --version|awk -Fr '{print $1}'`
VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack" >/dev/null 2>&1
wget http://download.virtualbox.org/virtualbox/$VBOX_VER/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VER.vbox-extpack
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VER.vbox-extpack
cd
usermod -a -G vboxusers $USER
systemctl enable vboxweb-service
systemctl start vboxweb-service
Instalando PHP7
Antes de instalar, se recomienda encarecidamente eliminar cualquier versión anterior de php. No se recomienda por el momento usar PHPVirtualbox php 7.1, solo con PHP 7.0.15-0.
Desinstalar versione previas php...
apt install php libapache2-mod-php
a2dismod php5
a2dismod mpm_event
a2enmod mpm_prefork
apt purge libapache2-mod-php php 'php5*'
apt purge php*
apt autoremove
Use el repositorio de ondrej si falta algún paquete:
add-apt-repository ppa:ondrej/php --yes
apt update
Instalando paquetes necesarios de PHPVirtualbox...
apt -y install language-pack-en-base
apt -y install php7.0 php7.0-common php7.0-mysql libmcrypt-dev mcrypt php7.0-mcrypt php7.0-gd php7.0-xml php-xml php-xml-parser php7.0-curl php7.0-soap libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap php7.0-dev php-pear php-gettext libapache2-mod-php7.0 php7.0-json php7.0-cgi php7.0-mbstring php7.0-fpm php-xdebug php7.0-cli php7.0-bz2 php7.0-intl && apt -f install
a2enmod php7.0
Instalando PHPVirtualbox...
mkdir -p /var/www/html/phpvirtualbox
cd /tmp/
wget -c http://downloads.sourceforge.net/project/phpvirtualbox/phpvirtualbox-5.0-5.zip
unzip phpvirtualbox-5.0-5.zip
cp -R phpvirtualbox-5.0-5/* /var/www/html/phpvirtualbox/
rm -R phpvirtualbox-5.0-5*
cd
cp /var/www/html/phpvirtualbox/config.php-example /var/www/html/phpvirtualbox/config.php
chown -R www-data:www-data /var/www/html/phpvirtualbox
Edite  /var/www/html/phpvirtualbox/config.php y realice los siguientes cambios (se recomienda usar el mismo usuario y contraseña establecida para apache2, que puede ser la misma de su usuario de linux):
/* Username / Password for system user that runs VirtualBox */
var $username = 'vbox'; # Reemplace vbox por su usuario
var $password = 'pass'; # Reemplace pass por su contraseña
// Disable authentication
var $noAuth = true; # Descomente esta línea
Cree el archivo  /etc/default/virtualbox y agregue la siguiente información:
VBOXWEB_USER=vbox # Reemplace vbox por su usuario
VBOXWEB_HOST=localhost
VBOXWEB_AUTH_LIBRARY=null
Cree el archivo  /etc/apache2/sites-enabled/phpvbox.conf y agregue la siguiente información (el puerto 11600 es un ejemplo. Puede ser cualquier puerto que elija siempre que no sea reservado):
< VirtualHost *:11600>
 ServerAdmin webmaster@localhost
 DocumentRoot /var/www/html/phpvirtualbox
 < Directory />
  Options FollowSymLinks
  DirectoryIndex index.php index.html index.htm config.php
  AllowOverride None
 < /Directory>
 < Directory /var/www/html/phpvirtualbox/>
  AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
 < /Directory>

 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 < Directory "/usr/lib/cgi-bin">
  AllowOverride None
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Require all granted
 < /Directory>
 ErrorLog ${APACHE_LOG_DIR}/error.log
 # Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn
 CustomLog ${APACHE_LOG_DIR}/access.log combined
< /VirtualHost>
Edite  /etc/apache2/port.conf y agregue la siguiente información:
# PHPVBOX
Listen 11600
Reinicie los servicios
systemctl restart apache2.service && systemctl restart vboxweb-service
Edite su firewall y abra los puertos TCP 11600,18083 para su interfaz de red local y reinicie. Ejemplo de regla iptables. Modifique los datos en dependencia de su red local (eth1= interfaz local y 192.168.1.0/24= rango y mascara)
/sbin/iptables -A INPUT -s 192.168.1.0/24 -i eth1 -p tcp -m multiport --dports 11600,18083 -j ACCEPT
Cree un script vigilante de vboxwebsrv (touch /etc/init.d/vboxweb.sh), establezca su propiedad ( chown root:root /etc/init.d/vboxweb.sh), dele permisos de ejecución (chmod +x /etc/init.d/vboxweb.sh) y agregue la siguiente información:
#!/bin/bash
### BEGIN INIT INFO
# Provides:          services reload
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
# VBOXWEBSERV
 date=`date +%d/%m/%Y" "%H:%M:%S`
 if [[ `ps -A | grep vboxwebsrv` != "" ]];then
 echo -e "\nONLINE"
 else
 echo -e "\n"
 sudo -H -u vbox bash -c '/usr/lib/virtualbox/vboxwebsrv --background'
 fi
Programe  vboxweb.sh en el cron cada 2 minutos (puede modificar el tiempo)
sudo crontab –e
*/02 * * * * /etc/init.d/vboxweb.sh
Acceda a sus VMs: http://192.168.1.10:11600 (en dependencia de la ip de su servidor) o http://localhost:11600 o http://localhost/phpvirtualbox/
Debe ingresar el usuario y la contraseña de su sistema, o la que eligió en el proceso de instalación. Si esta falla (algo muy común) ingrese con el usuario root y la contraseña de su sistema:
Importante:
En los archivos  phpvbox.conf  000-default.conf, por razones de publicación, se le a dado un espacio a las etiquetas que comienzan con  <. Ejemplo: < /Directory>, cuando debería ser </Directory>, < VirtualHost *:11600> cuando debería ser <VirtualHost *:11600>
Para los que usan Virtualbox 5.1x, es probable que salga el siguiente mensaje:
Esto es solo una advertencia de que se requiere actualizar a phpVirtualbox 5.1x (pero a la fecha de esta publicación, no existe esta versión de phpVirtualbox.  Va por la 5.0-5). Este mensaje no afecta el funcionamiento del aplicativo web.
Iniciando VMs automáticamente con el sistema
Cree el script  vm ( touch /etc/init.d/vm), establezca su propiedad ( chown root:root /etc/init.d/vm), dele permisos de ejecución ( chmod +x /etc/init.d/vm) y agregue la siguiente información:
Reemplace  tu_usuario por el nombre de su usuario y ">my_vm_name   por el nombre de su máquina virtual. Tenga especial cuidado con el uso de mayúsculas y minúsculas. Si tiene alguna duda sobre el nombre de su VM, puede reemplazarlo con el UUID (ej:  VMNAME="4ec6acc1-a232-566d-a040-6bc4aadc19a6")
Tenga en cuenta que la cabecera del script debe quedar tal cual. No la modifique ni le agregue nada. Esta cabecera se basa en  Linux Standard Base Core Specification (LSB headers), para que funcione correctamente con el comando  update-rc.d y sus Runlevels.
#!/bin/bash
### BEGIN INIT INFO
# Provides:          vm
# Required-Start:    $local_fs $remote_fs $network $syslog $named
# Required-Stop:     $local_fs $remote_fs $network $syslog $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts vm
# Description:       starts vm using start-stop-daemon
### END INIT INFO

# how to use:  /etc/init.d/vm {start|stop|shutdown|reset|status}
# Permissions:  sudo chmod +x /etc/init.d/vm
# update-rc.d add:  sudo update-rc.d vm defaults 99 01
# remove:   sudo update-rc.d -f vm remove
# confirm update-rc.d: ls -al /etc/rc?.d/ | grep vm
# add user vboxusers: sudo usermod -a -G vboxusers $USER # where $USER is your user

VMUSER="tu_usuario"
VMNAME="my_vm_name" # also you can put UUID in this variable (VMNAME="4ec6acc1-a232-566d-a040-6bc4aadc19a6")

case "$1" in
    start)
        echo "Starting $VMNAME..."
        sudo -H -u $VMUSER VBoxManage startvm "$VMNAME" --type headless
        ;;
    stop)
        echo "Saving State $VMNAME..."
     sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" savestate
      sleep 20
        ;;
    shutdown)
        echo "Shutting Down $VMNAME..."
        sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" acpipowerbutton
      sleep 20
        ;;
    reset)
        echo "Resetting $VMNAME..."
        sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" reset
        ;;
    status)
        echo -n "VMNAME->";sudo -H -u $VMUSER VBoxManage showvminfo "$VMNAME" --machinereadable |grep "VMState="| cut -d "=" -f2
        exit 1
        ;;
esac
exit 0
Agregue la tarea para que su  vm sea lo primero que inicie con el sistema y lo último que se cierre:
update-rc.d vm defaults 99 01
Es posible que no salga nada en pantalla, por tanto es prudente verificar si el arranque fue agregado:
ls -al /etc/rc?.d/ | grep vm
lrwxrwxrwx   1 root root    12 ago 15 12:38 K01vm -> ../init.d/vm
lrwxrwxrwx   1 root root    12 ago 15 12:38 K01vm -> ../init.d/vm
lrwxrwxrwx   1 root root    12 ago 15 12:38 S04vm -> ../init.d/vm
lrwxrwxrwx   1 root root    12 ago 15 12:38 S04vm -> ../init.d/vm
lrwxrwxrwx   1 root root    12 ago 15 12:38 S04vm -> ../init.d/vm
lrwxrwxrwx   1 root root    12 ago 15 12:38 S04vm -> ../init.d/vm
lrwxrwxrwx   1 root root    12 ago 15 12:38 K01vm -> ../init.d/vm
Para iniciar o parar la VM manualmente, ejecute en el terminal:
/etc/init.d/vm start
/etc/init.d/vm stop
Las opciones son: start|stop|shutdown|reset|status
Para iniciar las VMs en Windows podemos consultar VirtualBox: arrancando y controlando máquinas virtuales “sin cabeza” (GUI)

Update 2023
phpvirtualbox se ha quedado sin soporte desde 2018 y su última versión fue la version 5.2. Afortunadamente el usuario BartekSz95 ha publicado el repositorio con muchos parches a la fecha y compatible con VirtualBox 7.x, php 8x y Ubuntu 22.04:
sudo apt -y install libapache2-mod-php php php-soap php-xml
wget -c https://github.com/BartekSz95/phpvirtualbox/archive/main.zip
unzip -q main.zip
local_user=${SUDO_USER:-$(whoami)}
mv phpvirtualbox-main/config.php-example phpvirtualbox-main/config.php
sed -i "s:'vbox':'$local_user':g" phpvirtualbox-main/config.php
sudo mv phpvirtualbox-main/ /var/www/html/phpvirtualbox
sudo chown -R www-data:www-data /var/www/html/phpvirtualbox
echo "VBOXWEB_USER=$local_user" | sudo tee /etc/default/virtualbox
echo "VBOXWEB_HOST=localhost" | sudo tee -a /etc/default/virtualbox
sudo usermod -aG vboxusers $local_user
sudo service apache2 restart
sudo service vboxweb-service stop > /dev/null
sudo service vboxweb-service start
Cree un bash script para verificar si el puerto está activo (caso contrario iniciar el servicio):
#!/bin/bash
if pgrep -x vboxwebsrv > /dev/null; then
    echo "vboxweb OK"
  else
    echo "vboxweb starting..."
    service vboxweb-service start
    sleep 10
    # check again
    if pgrep -x vboxwebsrv > /dev/null; then
        echo "vboxweb start successful"
    else
        echo "vboxweb failed to start"
        logger "vboxweb failed to start"
    fi
fi
Puede ver el script completo de instalación en nuestro repo Vault.
Y acceder por:
http://localhost/phpvirtualbox
Con las credenciales (puede cambiarlas en el menu "File > Change Password"):
admin
admin
Y para interactuar con las máquinas virtuales, instale remmina:
sudo apt install -y remmina remmina-plugin-vnc
o vinagre:
sudo apt install -y vinagre
Y se conecta a localhost:3389
Remote Display
Y no olvide marcar la casilla "Enable Server" en la pestaña "Remote Display" para que pueda conectarse a la VM.


Con la tecnología de Blogger.