sexta-feira, 9 de abril de 2021

Virtual Machine no OMV5 - Rodando o Ubuntu Server 20.04 LTS como VM!

Pessoal,

Consegui instalar VM no OMV5. Deu um bom trabalho e rolou um pouco de "gambiarra", mas deu certo.

Até onde tinha lido, o Debian 10, base o OMV5 não teria suporte ao Virtual Box. O recomendado seria usar o Cockpit. Até tentei várias vezes, mas não consegui fazer funcionar nem f*udendo!

Então pensei: vou instalar um Docker com Ubuntu Server. "Deve funcionar", pensei. Não, não consegui publicar o console do Ubuntu de jeito nenhum.

Então fui tentar instalar o Virtual Box direto pelo console do OMV5. Mas sempre dava um erro. Até que consegui algumas instruções deu certo. Interessante que está no fórum do OMV (veja aqui).

Então a coisa fica assim. No Debian 10 está rolando o OMV5 e o Virtual Box, ambos correndo paralelamente. Dentro do Virtual Box vai correr o Ubuntu Server. Cada um desses tem um IP diferente para acessar pelo Terminal.

Vamos lá. Tudo é feito pelo console do OMV5 (você tem que abrir o Shell, Terminal, Putty ou qualquer forma dessas para acessar o console).

Primeiro vamos instalar o Virtual Box 6.1, última versão no momento da publicação.

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

        wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

      echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian buster contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list

        sudo apt update

        sudo apt install linux-headers-$(uname -r) dkms

        sudo apt install virtualbox-6.1


Pronto, agora vamos instalar o pack de extensões do Virtual Box:

        cd ~/

    wget https://download.virtualbox.org/virtualbox/6.1.0/Oracle_VM_VirtualBox_Extension_Pack-6.1.0.vbox-extpack

        sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.0.vbox-extpack


Agora vamos criar o usuário "vbox" e torná-lo membro do "vboxusers":

        adduser vbox

        sudo usermod -aG vboxusers vbox

        sudo systemctl status vboxdrv (para saber se o serviço vboxservices está ok, deve aparecer "active (exited)".


Pronto, se tudo deu certo o Virtual Box foi instalado e está funcionando!

Agora vamos instalar o phpvirtualbox, que vai publicar no navegador a página para criar e gerenciar as VMs que você quiser usar.

        sudo apt-get install php7.3-soap


Agora vamos para outra máquina. Eu baixei este arquivo no Mac, editei e mandei pro Debian pelo FileZilla (veja como aqui).


Extraia o arquivo, renomeie a pasta para "phpvirtualbox" (é mais fácil para trabalhar com este nome), abra o arquivo "config.php-example" que está dentro da pasta, localize e edite o conteúdo destas linhas:

    var $username = 'vbox';
    var $password = 'vbox'; (or the password supplied by you)
    var $enableAdvancedConfig = true;

Agora salve este arquivo, renomeie-o para "config.php" e copie o folder todo para "/var/www" (é aqui que você vai precisar do Filezilla).

Volter para a máquina onde está o OMV5 e continue com estes comandos:

        chown -R 998:996 /var/www/phpvirtualbox

        chmod -R 755 /var/www/phpvirtualbox/


Agora vamos abrir o nano para editar o arquivo abaixo com o seguinte comando:

        sudo nano /etc/default/virtualbox

VBOXWEB_USER=vbox

Reiniciei os serviços vbox com os comandos:

        Restart vbox services

        sudo systemctl restart vboxdrv

        sudo systemctl restart vboxweb-service


Agora vamos criar o usuário "phpvirtualbox-webgui" para o NGINX:

        adduser phpvirtualbox-webgui (a senha é phpvirtualbox)


Vamos criar o configfile para o site "phpvirtualbox-webgui" que roda no NGINX abrindo o nano e digitando o código abaixo:

        nano /etc/nginx/sites-available/phpvirtualbox-webgui

server {
server_name phpvirtualbox-webgui;
root /var/www/phpvirtualbox;
index index.html;
autoindex off;
server_tokens off;
sendfile on;
large_client_header_buffers 4 32k;
client_max_body_size 25M;
error_log /var/log/nginx/phpvirtualbox-webgui_error.log error;
access_log /var/log/nginx/phpvirtualbox-webgui_access.log combined;
error_page 404 = /404.php;
location /404.html {
internal;
}
location /extjs6/ {
alias /usr/share/javascript/extjs6/;
expires 2d;
}
location ~ ^/(css|js|images)/ {
expires 2d;
}
location /favicon {
expires 14d;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.3-fpm-phpvirtualbox-webgui.sock;
fastcgi_index index.php;
fastcgi_read_timeout 60s;
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
listen [::]:8080 ipv6only=off;
include /etc/nginx/phpvirtualbox-webgui.d/*.conf;
}

Essas chaves são assim mesmo. É só copiar para o arquivo que criamos. Agora é criar o arquivo de configuração para o "php-fpm":

        nano /etc/php/7.3/fpm/pool.d/phpvirtualbox-webgui.conf


[phpvirtualbox-webgui]
user = phpvirtualbox-webgui
group = phpvirtualbox-webgui
listen = /run/php/php7.3-fpm-phpvirtualbox-webgui.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0600
pm = ondemand
pm.max_children = 25
pm.process_idle_timeout = 10s
chdir = /
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; phpvirtualbox php.ini settings ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories
php_value[include_path] = ".:/usr/share/php:/var/www/phpvirtualbox"
; Pam Authentication Support (see /etc/pam.d)
php_value[pam.servicename] = "phpvirtualbox-webgui";
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
php_value[upload_max_filesize] = 25M
; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
php_value[post_max_size] = 25M
; Do not expose to the world that PHP is installed on the server.
; http://php.net/expose-php
php_value[expose_php] = Off
; Name of the session (used as cookie name).
; http://php.net/session.name
php_value[session.name] = X-PHPVIRTUALBOX-SESSIONID
; Default timeout for socket based streams (seconds)
; http://php.net/default-socket-timeout
php_value[default_socket_timeout] = 90
; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
php_value[max_execution_time] = 90

Do mesmo modo, é só copiar igual aí em cima.

Vamos ativar site PHPVirtualbox:

        sudo ln -s /etc/nginx/sites-available/phpvirtualbox-webgui /etc/nginx/sites-enabled/

        systemctl restart nginx

        systemctl restart php7.3-fpm


Para saber se deu tudo certo, entre com a URL "http://<IP do seu OMV5>:8080" no navegador. Deve entrar na página do phpvirtualbox onde é perguntado o nome do usuário (admin) e a senha (admin).

Pronto, se tudo deu certo o Virtual Box está rodando e você pode acessar o phpvirtualbox para criar e gerenciar as VM. Ótimo.

Agora precisamos iniciar e parar as VM automaticamente em boot e desligamento. Para isso, vamos abrir o  nano novamente e editar:

        nano /etc/default/virtualbox

VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg

        nano /etc/vbox/autostart.cfg

default_policy = deny
# Create an entry for each user allowed to use autostart
vbox = {
allow = true
}

        sudo chgrp vboxusers /etc/vbox

        sudo chmod 1775 /etc/vbox


E por último vamos escolher qual VM vai começar e para automaticamente. Na primeira vez que configurar o autostart, este comando tem que rodar: 

        su vbox

        VBoxManage setproperty autostartdbpath /etc/vbox

E agora escolha a VM (ou as VMs) que quiser que sejam iniciadas automaticamente (lembre-se, a VM deve estar desligada para esses comandos funcionarem):

        VBoxManage modifyvm [servername 1] --autostart-enabled on

        VBoxManage modifyvm [servername 2] --autostart-enabled on --autostart-delay 120
    
        VBoxManage modifyvm [servername 3] --autostart-enabled on --autostart-delay 300

        VBoxManage modifyvm [servername 1] --autostop-type savestate

        VBoxManage modifyvm [servername 1] --autostop-type savestate

        VBoxManage modifyvm [servername 1] --autostop-type savestate


E, por último, reinicie o serviço de autostart:

        su root

        sudo service vboxautostart-service restart


Pronto! Até agora fizemos o seguinte: dentro do servidor corre o Debian 10. Nesse Debian corre o OMV5 e o VirtualBox. Dentro do Virtual Box vai correr o Ubuntu Server e no Ubuntu vai correr o PiVPN.

Agora temos que criar a VM. Eu tentei criar, mas não consegui publicar o console da VM. Assim, perdi a paciência e fui pro modo bruto!

Baixei o Virtual Box no Mac e criei a VM lá mesmo. Depois dela pronta e configurada, exportei ela ("Exportar Appliance") e, como o Filezilla, copie este arquivo (.ova) para a pasta "/home/vbox/VirtualBox VMs" que foi criada no servidor. Para entrar no FileZilla, usei o IP do Ubuntu "estrutural" (192.168.1.2) com a porta 22 e root + senha.

Depois abri o phpVirtualBox (lembre-se: <IP do seu OMV5:8080) e "importei" a appliance para lá. Só precisei trocar a placa de rede da VM (estava wifi pq fiz no MacBook para a placa do server - lembre-se de deixar em modo bridge na VM para pegar um IP exclusivo pelo DHCP do roteador).

Pronto! Acabou. Puta trabalho, mas agora está como eu queria!

Ah, para acessar o Ubuntu Server, entre pelo terminar e conecte-se via SSH. Como é server, não tem modo gráfico, é tudo por lá mesmo.

Obrigado pessoal!

Nenhum comentário:

Postar um comentário