Skip to main content
Version: 2.9.0

Step-2-Deployment-Steps

To deploy Glasswall Halo in a Proxmox VM, you can choose from the following two options:

  • Deploy using an OVA/VMDK file.
  • Deploy from a Glasswall Backup (.vma.zst).

Please refer to Troubleshooting & FAQs or the Proxmox Documentation for further information.

Deploying from an OVA/VMDK​

Step 1 - Update Proxmox VE Host​

Ensure your Proxmox host is up to date by running the following command to prevent compatibility issues.

Proxmox Node Console

  • Online connectivity Update:
apt-get update
apt-get dist-upgrade

Step 2 - Create a New VM Shell​

  1. Access the Proxmox Web UI and click Create VM.

Proxmox VM Shell

  1. General: Provide a VM name (e.g., Glasswall-Halo).

Proxmox VM Name

  1. OS: Select a generic Linux type (e.g., Linux 5.x/6.x). You do not need an ISO.

Proxmox VM OS

  1. System:
    • BIOS: Set to SeaBIOS.
    • SCSI Controller: VirtIO SCSI.

Proxmox VM System

  1. Hard Disk: Remove the default disk (we’ll attach a converted disk later).

Proxmox VM Disk

  1. CPU: Set type to host for maximum performance; allocate at least 16 cores.

Proxmox VM CPU

  1. Memory: Allocate 32–64 GB.

Proxmox VM Memory

  1. Network: Attach a NIC to the desired bridge (e.g., vmbr0), typically VirtIO model.

Proxmox VM Network

  1. Confirm the summary and finish. Note: do not start the VM yet.

Proxmox VM Finish

Step 3 - Extract and Transfer the OVA​

  1. Extract the OVA on your local system by running the following command:

    tar -xvf Halo-FULL-<version>.ova

    Proxmox Tar

  2. Identify the .vmdk file (e.g., Halo-FULL-<version>-disk1.vmdk).

  3. Upload the .vmdk to Proxmox, e.g.:

    scp Halo-FULL-...disk1.vmdk root@<Proxmox-IP>:/root/

    Proxmox SCP

4. Prepare Storage (Optional LVM-Thin)​

Why LVM-Thin? It provides thin provisioning and snapshot support, making it ideal for larger or frequently updated VM disks. However, you can also attach disks to directory-based or other storage types in Proxmox.

Example Steps to Create LVM-Thin:

# Identify a free disk, e.g. /dev/sdb
pvcreate /dev/sdb
vgcreate vg-halo /dev/sdb
# Create a thin pool consuming all space
lvcreate -l 100%FREE -T -n thin-halo vg-halo

Proxmox VM LVCreate

After creating your thin pool, add it via Datacenter -> Storage -> Add -> LVM-Thin. Choose vg-halo as the volume group and thin-halo as the thin pool.

Proxmox VM Storage

Step 5 - Convert and Attach the Halo Disk​

Option A: qm importdisk​

SSH into your Proxmox Host

If using storage that supports import (e.g., directory or LVM-Thin), run:

qm importdisk <VM_ID> /root/Halo-FULL-...disk1.vmdk <StorageName> --format qcow2
  • <VM_ID> is the ID assigned to your VM (e.g., 100).
  • <StorageName> is the Proxmox storage target (e.g., local-lvm, halo-lvmthin).
  • After completion, go to VM -> Hardware, find the “Unused Disk,” then Edit and select IDE0.

SSH into your Proxmox Host

If qm importdisk encounters errors (e.g., “zeroinit”), or if you prefer more direct management:

  1. Create a thin-provisioned volume for the Halo disk:
    lvcreate -n vm-<VM_ID>-disk-0 -V 200G --thinpool thin-halo vg-halo
  2. Convert the .vmdk to a raw disk:
    qemu-img convert -f vmdk -O raw /root/Halo-FULL...disk1.vmdk /dev/vg-halo/vm-<VM_ID>-disk-0
  3. Attach disk to the VM:
    qm set <VM_ID> --ide0 halo-lvmthin:vm-<VM_ID>-disk-0
    Proxmox VM QM SET

Step 6 - Final VM Configuration​

  1. In VM -> Hardware:
    • IDE0 should be your main Halo disk.
    • Confirm “VirtIO SCSI” is listed as the SCSI controller.

Proxmox VM Storage

  1. In VM -> Options:
    • Ensure Boot Order sets IDE0 as first.
    • Verify BIOS is SeaBIOS.
    • KVM hardware virtualization and ACPI should be enabled.
  2. Optional: QEMU Guest Agent can be installed inside the Halo VM for advanced functionality.

Proxmox VM Options

Step 7 - Initial Boot​

  1. Start the VM in the Proxmox UI.
  2. Watch the console; it may take up to a minute to pass “Probing EDD…” on first boot.
  3. Configure network inside the Halo VM:
    • For static IP: Edit RHEL’s /etc/sysconfig/network-scripts/ifcfg-... or use nmcli.
    • For DHCP: Ensure your DHCP server is operational.
  4. Finalize application-level configurations (i.e. start_halo.sh, syslog server, TLS).

Proxmox VM Console

Deploying from a Glasswall Backup (.vma.zst)​

If our Glasswall team has provided you with a pre-configured Proxmox backup, you can skip the OVA/VMDK steps.

Step 1 - Uploading and Restoring the Backup​

  1. Copy the .vma.zst backup file to your Proxmox host’s backup directory:
    scp glasswall-halo-backup.vma.zst root@<Proxmox-IP>:/var/lib/vz/dump/
  2. In the Proxmox UI, go to Node -> Local -> Backup.
  3. Locate the .vma.zst file and select Restore.
  4. Assign a new VM ID (e.g., 101) and target storage.

Proxmox VM Backup

Step 2 - Verifying Disk Attachment​

  1. After restore, open VM -> Hardware.
  2. Confirm that the main disk is attached to IDE0.
  3. Ensure BIOS is set to SeaBIOS under VM -> Options.

Step 3 - Starting the VM​

  1. Power on the VM.
  2. Watch the console for any errors.
  3. Configure the network settings, if not already set.
  4. Proceed with any final configuration steps within Halo.

Proxmox VM Boot

Troubleshooting and FAQs​

zeroinit Error​

This may occur when using qm importdisk with certain storage types or older QEMU versions. Solution: Use manual conversion with qemu-img.

Network Configuration Issues​

  • If the VM interface is named differently (e.g., ens18 vs. eth0), adjust your ifcfg- files accordingly.
  • Use nmcli device show or ip a to confirm the interface name.

Why IDE + SeaBIOS?​

  • STIG-hardened RHEL images require Legacy BIOS for certain boot configurations.
  • IDE ensures broad compatibility and avoids known issues with some virt drivers.

Additional Best Practices​

  • Snapshots: Leverage Proxmox snapshots or LVM-Thin snapshots for quick rollbacks.
  • Backups: Regularly use vzdump to create compressed backups (.vma.zst).
  • Resource Monitoring: Keep an eye on CPU and memory usage for production loads.

Official Proxmox Reference Documentation​

Initiate Glasswall Halo Services​

  • Execute the following command to launch Glasswall Halo: bash start_halo.sh
  • Once the script has completed, confirm all the Glasswall Halo services and Pods are running using the following command:
kubectl get pods

Access Glasswall Portal​

  • Depending on your network configuration and/or domain configuration, you can now clean files by accessing the Glasswall Portal through the domain name and/or IP address assigned to your virtual machine.

Run the following command to confirm network status:

sudo netstat -tlnp