🖥️ Criação de VMs - Proxmox VE
Guia completo de criação e configuração de máquinas virtuais no Proxmox VE, incluindo exemplos das VMs do projeto FSociety.
📋 Visão Geral
O Proxmox VE suporta criação de VMs via interface web (GUI) e linha de comandos (CLI). Este guia cobre ambos os métodos e detalha a configuração de cada VM do projeto.
🛠️ Criação de VM via Web UI
Passo a Passo
-
Clicar em “Create VM” no canto superior direito
-
General Tab
| Campo | Descrição | Exemplo |
|---|---|---|
| Node | Node onde criar a VM | |
| VM ID | ID único (100-999999) | 102 |
| Name | Nome da VM | PfSense |
| Resource Pool | Pool opcional | (vazio) |
| Start at boot | Iniciar automaticamente | ✅ |
- OS Tab
| Campo | Descrição | Exemplo |
|---|---|---|
| Use CD/DVD disc image | Usar ISO | ✅ |
| Storage | Storage do ISO | local |
| ISO image | Ficheiro ISO | pfSense-CE-2.8.1.iso |
| Type | Tipo de SO | Other |
| Guest OS | Sistema operativo | Other |
- System Tab
| Campo | Descrição | Exemplo |
|---|---|---|
| Graphic card | Placa gráfica | Default |
| Machine | Tipo de máquina | Default (i440fx) |
| SCSI Controller | Controlador SCSI | VirtIO SCSI single |
| BIOS | Tipo de BIOS | Default (SeaBIOS) |
| Add TPM | Trusted Platform Module | ❌ |
| Qemu Agent | Agente QEMU | ✅ (para Linux) |
- Disks Tab
| Campo | Descrição | Exemplo |
|---|---|---|
| Bus/Device | Tipo de disco | SCSI / VirtIO Block 0 |
| Storage | Storage pool | pve-nvme |
| Disk size (GiB) | Tamanho do disco | 50 |
| Cache | Modo de cache | Write back (default) |
| Discard | TRIM/Discard | ✅ (para SSD) |
| SSD emulation | Emular SSD | ✅ (se SSD) |
| IO thread | Thread de I/O dedicada | ✅ |
- CPU Tab
| Campo | Descrição | Exemplo |
|---|---|---|
| Sockets | Número de sockets | 1 |
| Cores | Cores por socket | 2 |
| Type | Tipo de CPU | host (ou kvm64) |
| CPU units | Prioridade CPU (100-500000) | 1024 (default) |
- Memory Tab
| Campo | Descrição | Exemplo |
|---|---|---|
| Memory (MiB) | RAM total | 2048 |
| Minimum memory | RAM mínima (ballooning) | 512 |
| Ballooning Device | Dispositivo de ballooning | ✅ |
- Network Tab
| Campo | Descrição | Exemplo |
|---|---|---|
| Bridge | Bridge de rede | vmbr0 |
| VLAN Tag | Tag VLAN (opcional) | (vazio) |
| Model | Modelo de NIC | VirtIO (paravirtualized) |
| MAC address | Endereço MAC | (auto) |
| Firewall | Firewall da bridge | ❌ |
| Disconnect | Iniciar desconectada | ❌ |
- Confirm
Rever todas as configurações e clicar em Finish
💻 Criação de VM via CLI
Sintaxe Básica
# Criar VM básica
qm create <vmid> \
--name <nome> \
--memory <ram-mb> \
--cores <num-cores> \
--net0 virtio,bridge=<bridge> \
--scsi0 <storage>:<size>
# Exemplo completo
qm create 105 \
--name Servidor-de-dominio \
--memory 2048 \
--cores 2 \
--sockets 1 \
--cpu host \
--ostype l26 \
--net0 virtio,bridge=vmbr1,firewall=0 \
--scsi0 pve-nvme:50 \
--scsihw virtio-scsi-pci \
--boot order=scsi0 \
--onboot 1 \
--agent 1
Comandos Úteis
# Listar todas as VMs
qm list
# Ver configuração de uma VM
qm config <vmid>
# Modificar configuração
qm set <vmid> --<parametro> <valor>
# Iniciar VM
qm start <vmid>
# Parar VM
qm stop <vmid>
# Reiniciar VM
qm reboot <vmid>
# Remover VM
qm destroy <vmid>
# Clonar VM
qm clone <vmid> <novo-vmid> --name <novo-nome>
🔧 VMs do Projeto FSociety
VMID 101: Proxmox-Backup
Função: Proxmox Backup Server
SO: Proxmox Backup Server 4.0.11
| Parâmetro | Valor |
|---|---|
| VM ID | 101 |
| Nome | Proxmox-Backup |
| Estado | Running |
| Start at boot | Sim |
| RAM | 1536 MB (1.5 GB) |
| vCPU | 1 core |
| Disco | 50 GB |
| Storage | local-lvm (HDD) |
| Network | vmbr1 (LAN) |
| IP | 192.168.1.30/24 |
| Gateway | 192.168.1.1 (pfSense) |
Criação via CLI:
qm create 101 \
--name Proxmox-Backup \
--memory 1536 \
--cores 1 \
--net0 virtio,bridge=vmbr1 \
--scsi0 local-lvm:50 \
--scsihw virtio-scsi-pci \
--onboot 1 \
--agent 1
VMID 102: PfSense
Função: Firewall e Router (Four-Legged)
SO: pfSense CE 2.8.1 (FreeBSD 15.0-CURRENT)
| Parâmetro | Valor |
|---|---|
| VM ID | 102 |
| Nome | PfSense |
| Estado | Running |
| Start at boot | Sim |
| RAM | 2048 MB (2 GB) |
| vCPU | 2 cores |
| Disco | 50 GB |
| Storage | pve-nvme (NVMe) |
| Network 0 | vmbr0 (WAN) - 192.168.31.100/24 |
| Network 1 | vmbr1 (LAN) - 192.168.1.1/24 |
| Network 2 | DMZ - 10.0.0.1/24 |
Criação via CLI:
qm create 102 \
--name PfSense \
--memory 2048 \
--cores 2 \
--cpu host \
--net0 virtio,bridge=vmbr0 \
--net1 virtio,bridge=vmbr1 \
--net2 virtio,bridge=DMZ \
--scsi0 pve-nvme:50 \
--scsihw virtio-scsi-pci \
--onboot 1
Nota: pfSense não usa qemu-agent (FreeBSD)
VMID 104: Web-Server
Função: Nginx Reverse Proxy (DMZ)
SO: Ubuntu Server 24.04 LTS
| Parâmetro | Valor |
|---|---|
| VM ID | 104 |
| Nome | Web-Server |
| Estado | Running |
| Start at boot | Sim |
| RAM | 1024 MB (1 GB) |
| vCPU | 1 core |
| Disco | 50 GB |
| Storage | local-lvm (HDD) |
| Network | DMZ |
| IP | 10.0.0.30/24 |
| Gateway | 10.0.0.1 (pfSense) |
Criação via CLI:
qm create 104 \
--name Web-Server \
--memory 1024 \
--cores 1 \
--net0 virtio,bridge=DMZ \
--scsi0 local-lvm:50 \
--scsihw virtio-scsi-pci \
--onboot 1 \
--agent 1
VMID 105: Servidor-de-dominio
Função: Samba AD DC (Domain Controller)
SO: Ubuntu Server 24.04.3 LTS
| Parâmetro | Valor |
|---|---|
| VM ID | 105 |
| Nome | Servidor-de-dominio |
| Estado | Running |
| Start at boot | Sim |
| RAM | 2048 MB (2 GB) |
| vCPU | 2 cores |
| Disco | 50 GB |
| Storage | pve-nvme (NVMe) |
| Network | vmbr1 (LAN) |
| IP | 192.168.1.10/24 |
| Gateway | 192.168.1.1 (pfSense) |
Criação via CLI:
qm create 105 \
--name Servidor-de-dominio \
--memory 2048 \
--cores 2 \
--cpu host \
--net0 virtio,bridge=vmbr1 \
--scsi0 pve-nvme:50 \
--scsihw virtio-scsi-pci \
--onboot 1 \
--agent 1
VMID 106: Servidor-de-Ficheiros
Função: Nextcloud + Zammad
SO: Ubuntu Server 24.04 LTS
| Parâmetro | Valor |
|---|---|
| VM ID | 106 |
| Nome | Servidor-de-Ficheiros |
| Estado | Running |
| Start at boot | Sim |
| RAM | 2048 MB (2 GB) |
| vCPU | 4 cores |
| Disco | 50 GB |
| Storage | local-lvm (HDD) |
| Network | vmbr1 (LAN) |
| IP | 192.168.1.40/24 |
| Gateway | 192.168.1.1 (pfSense) |
Criação via CLI:
qm create 106 \
--name Servidor-de-Ficheiros \
--memory 2048 \
--cores 4 \
--net0 virtio,bridge=vmbr1 \
--scsi0 local-lvm:50 \
--scsihw virtio-scsi-pci \
--onboot 1 \
--agent 1
VMID 107: Ubuntu-Desktop
Função: VM de Testes
SO: Ubuntu Desktop
| Parâmetro | Valor |
|---|---|
| VM ID | 107 |
| Nome | Ubuntu-Desktop |
| Estado | Stopped |
| Start at boot | Não |
| RAM | 2048 MB (2 GB) |
| vCPU | 2 cores |
| Disco | 50 GB |
| Storage | - |
| Network | vmbr1 (LAN) |
VMID 108: mailcow
Função: Servidor de Email
SO: Debian (com Docker)
| Parâmetro | Valor |
|---|---|
| VM ID | 108 |
| Nome | mailcow |
| Estado | Running |
| Start at boot | Sim |
| RAM | 6144 MB (6 GB) |
| vCPU | 2 cores |
| Disco | (volumes Docker) |
| Storage | local-lvm (HDD) |
| Network | DMZ |
| IP | 10.0.0.20/24 |
| Gateway | 10.0.0.1 (pfSense) |
Criação via CLI:
qm create 108 \
--name mailcow \
--memory 6144 \
--cores 2 \
--cpu host \
--net0 virtio,bridge=DMZ \
--scsi0 local-lvm:100 \
--scsihw virtio-scsi-pci \
--onboot 1 \
--agent 1
📦 Templates e Cloud-Init
Criar Template de VM
Templates permitem criar VMs rapidamente a partir de uma base pré-configurada.
# 1. Criar VM base
qm create 9000 \
--name ubuntu-2404-template \
--memory 2048 \
--cores 2 \
--net0 virtio,bridge=vmbr1 \
--scsi0 local-lvm:20
# 2. Importar imagem cloud
cd /var/lib/vz/template/iso
wget https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img
# 3. Importar para VM
qm importdisk 9000 ubuntu-24.04-server-cloudimg-amd64.img local-lvm
# 4. Anexar disco à VM
qm set 9000 --scsi0 local-lvm:vm-9000-disk-0
# 5. Configurar Cloud-Init
qm set 9000 --ide2 local-lvm:cloudinit
qm set 9000 --boot order=scsi0
qm set 9000 --serial0 socket --vga serial0
# 6. Configurar Cloud-Init defaults
qm set 9000 --ciuser ubuntu
qm set 9000 --cipassword <password>
qm set 9000 --sshkey ~/.ssh/id_rsa.pub
qm set 9000 --ipconfig0 ip=dhcp
# 7. Converter para template
qm template 9000
Criar VM a partir de Template
# Clonar template
qm clone 9000 110 --name nova-vm --full
# Configurar Cloud-Init específico
qm set 110 --ipconfig0 ip=192.168.1.50/24,gw=192.168.1.1
# Iniciar VM
qm start 110
🎯 Boas Práticas
Alocação de Recursos
- CPU
- Não sobre-alocar: Total vCPUs ≤ 2x cores físicos
- Usar
hostCPU type para melhor performance - Reservar 1-2 cores para o host
- RAM
- Ativar ballooning para flexibilidade
- Reservar 2-4 GB para o host
- Monitorizar usage real vs alocado
- Storage
- VMs críticas → NVMe (pfSense, DC)
- VMs com muitos dados → HDD (Files, Mail)
- Ativar discard para SSDs
Segurança
- Rede
- Conectar VMs às bridges corretas
- Desativar firewall da bridge (usar pfSense)
- Não expor VMs diretamente à WAN
- Isolamento
- VMs públicas → DMZ
- VMs internas → LAN
- Sem comunicação direta DMZ ↔ LAN
- Atualizações
- Manter VMs atualizadas
- Testar updates em VM de teste primeiro
Performance
- Usar VirtIO
- Network: virtio
- Disk: SCSI com VirtIO SCSI controller
- Melhor performance que emulação
- Ativar QEMU Agent
- Permite shutdown graceful
- Sincronização de tempo
- Informação de sistema
- Cache Mode
- Write back (default): Bom equilíbrio
- Write through: Mais seguro, mais lento
- None: Para alguns casos específicos
🐛 Troubleshooting
Problema: VM não inicia
Diagnóstico:
# Ver logs
qm start <vmid>
# Ver configuração
qm config <vmid>
# Ver logs detalhados
tail -f /var/log/pve/tasks/active
Soluções comuns:
- Verificar se storage está acessível
- Verificar se bridge existe
- Verificar se há recursos suficientes
- Verificar configuração de boot
Problema: Performance baixa
Diagnóstico:
# Ver utilização de recursos
qm monitor <vmid>
# Dentro da VM:
top
iostat -x 2
Soluções:
- Aumentar RAM/CPU
- Mover disco para storage mais rápido
- Verificar if VirtIO está ativo
- Ativar IO threads
Problema: Rede não funciona
Verificações:
# Verificar bridge
brctl show
# Verificar configuração da VM
qm config <vmid> | grep net
# Dentro da VM:
ip addr
ip route
ping 8.8.8.8
📖 Próximos Passos
Após criar VMs, prosseguir com:
- ✅ VMs Criadas
- ➡️ Configuração de Backup - Backups automáticos
- ➡️ Manutenção - Gestão e manutenção
🎓 Informação Académica
| Campo | Informação |
|---|---|
| Instituição | ESTG - Instituto Politécnico do Porto |
| Unidade Curricular | Administração de Sistemas II |
| Ano Letivo | 2025/2026 |
| Autores | Ryan Barbosa, Hugo Correia, Igor Araújo |
Última atualização: Dezembro 2025