Com VirtualBox é possivel executar diversos sistemas operacionais 
(Windows, Linux, UNIX, BSD) simultaneamente no mesmo hardware, que são 
chamados de máquinas virtuais. Uma das características é o mascaramento 
dos recursos físicos (incluindo processadores, quantidade de memória, 
interfaces de rede), o que permite diminuir a administração de drivers 
nas máquinas virtuais, e transferir uma máquina virtual entre servidores
 físicos diferentes.
Existem várias ferramentas de virtualização disponíveis.
Microsoft Virtual Server 2005 R2 – disponível para plataforma x86 e x86_64 bits. Suporte: Somente Windows.
Qemu – ferramenta de virtualização de código aberto disponível para windows, mac e Linux.
Vmware – Disponível para Windows e Linux.
VirtualBox – Aplicativo de código aberto disponível para Windows, Mac, Linux e Solaris.
Xen – Suporta Windows, bem como distribuições Linux.
O 
VirtualBox  inicialmente foi lançado sob licença 
proprietária, mas mais tarde (2007) a Oracle Corporation começou a 
lançá-lo sob GNU General Public License. Escrito completamente em C, C 
++ e Assembly Language está disponível para Windows, OS X, Linux e 
Solaris.
Recomendo já baixar a ISO nonfree: 
https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/
Adicione o repositório do virtualbox
Debian 10 Buster
  
  
   
   
    
     
    | 
     
 | 
      
# apt install wget2 vim apt-transport-https 
# echo 'deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian bionic contrib' > /etc/apt/sources.list.d/virtualbox.list 
# wget2 -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add - 
# wget2 -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | apt-key add - 
 
 | 
     
 
 
Vamos a instalação, a versão 5.2 (nesta data 08/10/19) ainda não tem uma versão 6 compatível com o phpVirtualbox.
Certifique-se que seu repositório esteja usando os repositórios 
nonfree e contrib.
  
  
   
   
    
     
    | 
     
 | 
      
# vim /etc/apt/sources.list 
 
 | 
     
 
 
Ao final de cada linha verifique se consta:  
nonfree e contrib, se não tiver adicione, ficando assim:
  
  
   
   
    
     
    | 
     
 | 
      
deb http://deb.debian.org/debian/ buster main contrib non-free 
deb-src http://deb.debian.org/debian/ buster main contrib non-free 
  
deb http://security.debian.org/debian-security buster/updates main contrib non-free 
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free 
  
# buster-updates, previously known as 'volatile' 
deb http://deb.debian.org/debian/ buster-updates main contrib non-free 
deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free 
 
 | 
     
 
 
  
   
   
    
     
    | 
     
 | 
      
# apt update 
# apt install firmware-linux firmware-linux-free firmware-linux-nonfree 
 
 | 
     
 
 
Reinicia a máquina para carregar os novos módulos do kernel.
  
  
   
   
    
     
    | 
     
 | 
      
# apt install virtualbox-5.2 
 
 | 
     
 
 
Faça download dos pacotes extras: 
https://www.virtualbox.org/wiki/Download_Old_Builds_5_2 como instalei a versão 5.2 irei baixar a versão correspondente: 
(If you’re looking for the latest VirtualBox 5.2 packages, see VirtualBox 5.2 builds.)
  
  
   
   
    
     
    | 
     
 | 
      
# cd /tmp/  
# wget2 https://download.virtualbox.org/virtualbox/5.2.32/Oracle_VM_VirtualBox_Extension_Pack-5.2.32.vbox-extpack 
 
 | 
     
 
 
Instale os pacotes extras
  
  
   
   
    
     
    | 
     
 | 
      
# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.32.vbox-extpack 
 
 | 
     
 
 

Responta Yes 
(y)
Vamos executá-lo como o nosso usuário 
vbox, porque ele não precisa acessar o resto do seu sistema.
  
  
   
   
    
     
    | 
     
 | 
      
# useradd -d /home/vbox -m -g vboxusers -s /bin/bash vbox 
 
 | 
     
 
 
Defina uma senha para seu usuario vbox
  
Diga ao seu sistema qual usuário vai executar o VirtualBox.
  
  
   
   
    
     
    | 
     
 | 
      
# echo 'VBOXWEB_USER=vbox' > /etc/default/virtualbox  
# echo 'VBOXWEB_HOST=127.0.0.1' >> /etc/default/virtualbox 
 
 | 
     
 
 
Faça com que o vboxweb-service inicie no boot. Como dito acima nosso 
usuário não precisa ter acesso total ao sistema, entao vamos instalar o 
sudo e roda-lo via sudo.
  
Adicione no /etc/rc.local o comando para iniciar junto com o boot.
  
Adicione
  
  
   
   
    
     
    
     
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
 
 | 
      
#!/bin/sh -e 
# 
# rc.local 
# 
# This script is executed at the end of each multiuser runlevel. 
# Make sure that the script will "exit 0" on success or any other 
# value on error. 
# 
# In order to enable or disable this script just change the execution 
# bits. 
# 
# By default this script does nothing. 
  
# Solução para inicialização automatica: 
# use o comando la listar as VMs criadas 
# sudo -u vbox VBoxManage list vms 
# Colete as ID 
# "Debian" {d288884d-a3d4-4903-b84e-5c6039af13b5} 
# Pegue o "ID" da VM e use o Comando a baixo descomentando a linha: 
# Adicione um sleep para aguardar 30seg para dar tempo do modulo do kernel ter tempo de iniciar 
# sleep 30 
# sudo -u vbox VBoxHeadless -s d288884d-a3d4-4903-b84e-5c6039af13b5 & 
  
  
exit 0 
 
 | 
     
 
 
Alterare as permissões:
  
  
   
   
    
     
    | 
     
 | 
      
# chmod 777 /etc/rc.local 
 
 | 
     
 
 
Vamos instalar o serviço web + php
  
  
   
   
    
     
    | 
     
 | 
      
# apt install apache2 libapache2-mod-php\ 
 php-cli php-bcmath php-gmp php-mbstring php-zip php-curl\ 
 php php-common php-soap php-gd unzip php-pear php-mysql php-xml php-soap 
 
 | 
     
 
 
Por segurança recomendo remover a assinatura do servidor, para isso:
  
  
   
   
    
     
    | 
     
 | 
      
# sed -i 's/ServerTokens OS/ServerTokens Prod/' /etc/apache2/conf-enabled/security.conf 
# sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-enabled/security.conf 
 
 | 
     
 
 
Vamos também configurar nosso 
domínio virtual para acessar o servidor via domínio (ex vbox.remontti.com.br) e restringir ele apenas para nossos IP de gerencia. 
  
  
   
   
    
     
    | 
     
 | 
      
# vim /etc/apache2/sites-available/000-default.conf 
 
 | 
     
 
 
Faça as devidas alterações, não esqueça de alterar em 
Require ip para os IPs que você vai autorizar as conexões.
  
  
   
   
    
     
    
     
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
 
 | 
      
<virtualhost *:80> 
        Protocols h2 http/1.1 
        ServerName vm.remontti.com.br 
        ServerAdmin noc@remontti.com.br 
        ErrorDocument 403 http://www.remontti.com.br/ 
  
        DocumentRoot /var/www/html 
  
        <Directory /var/www/html/> 
                Options Indexes FollowSymLinks 
                AllowOverride All 
                Require ip 127.0.0.1 ::1 192.168.0.0/16 172.16.0.0/12 100.64.0.0/10 10.0.0.0/8 250.0.0.0/22 2000:000::/32 
        </Directory> 
  
        LogLevel warn  
        ErrorLog ${APACHE_LOG_DIR}/error.log 
        CustomLog ${APACHE_LOG_DIR}/access.log combined 
</virtualhost> 
 
 | 
     
 
 
  
   
   
    
     
    | 
     
 | 
      
# a2enmod http2 
# systemctl restart apache2 
 
 | 
     
 
 
Que tal configurar um certificado grátis com let’s encrypt?
  
  
   
   
    
     
    | 
     
 | 
      
# apt install apache2 apache2-utils letsencrypt python-certbot-apache 
# systemctl stop apache2 
# letsencrypt --authenticator standalone --installer apache -d vm.remontti.com.br 
 
 | 
     
 
 
Agora já é possível acessar 
“vm.remontti.com.br” com HTTPS, faça um teste se seu domínio esta respondendo corretamente.
Para evitar que o certificado expire faça um script e colocando ele no cron para que o mesmo renove automaticamente.
  
Adicione
  
  
   
   
    
     
    | 
     
 | 
      
#!/bin/bash 
/usr/bin/systemctl stop apache2 
/usr/bin/certbot -q renew 
/usr/bin/systemctl start apache2 
 
 | 
     
 
 
De permissão de execução:
  
  
   
   
    
     
    | 
     
 | 
      
# chmod 777 /etc//renovassl.sh 
 
 | 
     
 
 
Adicione ao cron e restarte o cron
  
  
   
   
    
     
    | 
     
 | 
      
# echo '00 00   * * *   root    /etc/renovassl.sh' >> /etc/crontab 
# systemctl restart cron 
 
 | 
     
 
 
Vamos configurar o projeto 
phpvirtualbox, dentro do diretório padrão do apache.
  
  
   
   
    
     
    | 
     
 | 
      
# cd /var/www/ 
# rm -rf /var/www/html/ 
# wget2 https://github.com/phpvirtualbox/phpvirtualbox/archive/5.2-1.tar.gz  -O phpvirtualbox-5.2-1.tar.gz 
# tar -vxzf phpvirtualbox-5.2-1.tar.gz 
# mv phpvirtualbox-5.2-1 html 
# rm phpvirtualbox-5.2-1.tar.gz 
# chown vbox:vboxusers phpvirtualbox  -R 
# cd phpvirtualbox 
# cp config.php-example config.php 
# vim config.php 
 
 | 
     
 
 
  
   
   
    
     
    | 
     
 | 
      
 // ... // 
var $username = 'vbox'; 
var $password = 'pass'; 
 // ... // 
var $enableAdvancedConfig = true; 
  
 
 | 
     
 
 
  
  
   
   
    
     
    | 
     
 | 
      
# sudo -u vbox vboxwebsrv & 
# reboot 
 
 | 
     
 
 
Agora acesse:
https://DOMINIO/
Usuário: admin
Senha: admin

Não esqueça de alterar a senha do usuário admin!
O mais legal que você está usando quase nada do hardware da máquina para “subir” seu sistema de virtualização.

Virtulabox peca em não dar uma solução para inicialização automática,
 mas é muito fácil fazer isso incluindo no rc.local. Use o comando:
  
  
   
   
    
     
    | 
     
 | 
      
# sudo -u vbox VBoxManage list vms 
 
 | 
     
 
 
Vai ser listado os ID das suas VMs. Ex:
“ns1” {d288884d-a3d4-4903-b84e-5c6039af13b5}
“ns2” {a2893475-atd4-4973-b81e-6039af13bss5}
Agora que você ja tem as IDs adicione em 
/etc/rc.local: da seguinte forma, alterando pelas suas ID.
  
  
   
   
    
     
    | 
     
 | 
      
sleep 30 #  sleep para aguardar 30seg para dar tempo do modulo do kernel ter tempo de iniciar 
sudo -u vbox VBoxHeadless -s d288884d-a3d4-4903-b84e-5c6039af13b5 & 
sudo -u vbox VBoxHeadless -s a2893475-atd4-4973-b81e-6039af13bss5 & 
 
 | 
     
 
 
Agora quando o servidor reiniciar suas VMs vão iniciar 
automaticamente, (Não esqueça de quando for desligar o servidor fazer o 
processo de desligamento de cada VM)
Uma das vantagens deste servidor é que é o virtualbox é muito 
simples!!! Dentro de /home/vbox/ vão estar suas imagens sendo muito 
facil de fazer uma copia e migrada para algum outro servidor em caso de 
“pau”. É claro tenha sempre redundância de hardware em seu servidor, 
faça sempre pelo menos um RAID1 (espelhamento de disco) eu gosto de 
fazer RAID10 com pelo menos 5 SSDs, onde 1 dos SSDs eu instalo o sistema
 e os outros 4 (ou 6 ou 8 …) somo ex 2 (RAID0) e espelho nos outros 2 
(RAID1) logo temos o RAID10.
Fonte: https://blog.remontti.com.br/3670