Skip to main content

🖥️ Install Kitifi Controller

This guide walks through downloading, decompressing, and deploying KiTifi v2.0 as a virtual machine on Proxmox, with full network and storage configuration using UEFI boot and virtio-scsi disks.

info

What you're doing: Provisioning a complete KiTifi VM with 4 vCPU cores, 4GB RAM, UEFI firmware, and a 128GB disk on Proxmox VE using command-line tools.

  • Download KiTifi UEFI image (x86_64)
  • Decompress XZ-compressed image
  • Create Proxmox VM with ID 103
  • Configure virtio network and storage
  • Set UEFI boot with OVMF firmware
  • Resize disk to 128GB production size
warning

Important Caveats:

  • Ensure local-lvm storage is available on your Proxmox node before importing
  • The download is approximately 500MB (xz compressed); decompressed size is ~2GB
  • UEFI firmware requires OVMF package installed on Proxmox (apt install ovmf if missing)
  • VM ID 103 must not already exist; change if needed
  • This procedure requires command-line access to Proxmox node

Prerequisites

✅ Proxmox VE 7.x or 8.x installed and operational
local-lvm storage configured with sufficient space (150GB+ available)
✅ Internet connectivity to download from files.kitifi.com
✅ OVMF firmware installed (dpkg -l | grep ovmf to verify)
✅ SSH access to Proxmox node as root or sudoer
wget and xz-utils installed (apt install wget xz-utils if missing)


Configuration Steps

Step 1: Download KiTifi Image

Connect to your Proxmox node and download the KiTifi v2.0 UEFI image:

cd /tmp
wget "https://files.kitifi.com/MT-Based/v2.0/Main/KiTifi-v2.0-uefi-x86.img.xz"

Expected output:

--2026-02-28 10:15:30--  https://files.kitifi.com/MT-Based/v2.0/Main/KiTifi-v2.0-uefi-x86.img.xz
Resolving files.kitifi.com... [IP]
Connecting to files.kitifi.com... connected.
HTTP request sent, awaiting response... 200 OK
Length: 543456789 bytes
100%[=====>] 543456789 5.2MB/s in 104s

Step 2: Decompress Image

Extract the XZ-compressed image (keep original with -k flag):

xz -dk KiTifi-v2.0-uefi-x86.img.xz

What happens:

  • -d = decompress
  • -k = keep original .xz file
  • Creates KiTifi-v2.0-uefi-x86.img (~2GB uncompressed)

Verify decompression:

ls -lh KiTifi-v2.0-uefi-x86.img*

Step 3: Create Proxmox VM Container

Create the VM with ID 103 and hostname "kitifi":

qm create 103 --name "kitifi" --ostype l26

Parameters explained:

  • 103 = unique VM ID (change if conflicts; qm list to check)
  • --ostype l26 = Linux kernel 2.6+ (Proxmox autodetects for VM)

Step 4: Configure Network Interface

Attach to virtual bridge (standard Proxmox setup):

qm set 103 --net0 virtio,bridge=vmbr0

Network configuration:

  • virtio = high-performance paravirtualized NIC driver
  • bridge=vmbr0 = attach to management/LAN bridge (adjust if using custom bridge)

Step 5: Set CPU and Memory

Allocate processing resources:

qm set 103 --memory 4096 --cores 2 --cpu host

Resource allocation:

  • --memory 4096 = 4GB RAM
  • --cores 2 = 2 vCPU cores (can be increased to 4 or higher)
  • --cpu host = pass-through host CPU flags for performance

Step 6: Import Disk Image

Import the decompressed image as SCSI disk with optimization:

qm set 103 --scsi0 local-lvm:0,import-from="$(pwd)/KiTifi-v2.0-uefi-x86.img",discard=on

Disk parameters:

  • scsi0 = first SCSI disk controller (virtio-scsi)
  • local-lvm:0 = LVM storage with bus number 0
  • import-from="$(pwd)/KiTifi-v2.0-uefi-x86.img" = absolute path to image (must be decompressed)
  • discard=on = enable TRIM/discard for efficient storage
tip

If import fails with "file not found", verify the image path: ls -la KiTifi-v2.0-uefi-x86.img

Step 7: Configure UEFI Boot

Set OVMF UEFI firmware and boot device:

qm set 103 --bios ovmf
qm set 103 --efidisk0 local-lvm:0,format=raw
qm set 103 --boot order=scsi0 --scsihw virtio-scsi-single

UEFI configuration:

  • --bios ovmf = UEFI firmware (required for modern OSes)
  • --efidisk0 local-lvm:0,format=raw = EFI boot partition on LVM
  • --boot order=scsi0 = boot from SCSI disk
  • --scsihw virtio-scsi-single = single-queue SCSI hardware (optimized for VMs)

Step 8: Resize Disk to Production Size

Expand the disk from default 2GB to 128GB:

qm disk resize 103 scsi0 128G

Verify resize:

qm config 103 | grep scsi0

Expected output: scsi0: local-lvm:vm-103-disk-0,format=raw,size=128G


Understanding KiTifi VM Configuration

Architecture Diagram

┌─────────────────────────────────────┐
│ Proxmox Node (Barenode) │
│ │
│ ┌──────────────────────────────┐ │
│ │ KiTifi VM (ID: 103) │ │
│ │ ✓ UEFI/OVMF Boot │ │
│ │ ✓ 2 vCPU cores │ │
│ │ ✓ 4GB RAM │ │
│ │ ✓ 128GB virtio-scsi disk │ │
│ │ ✓ Virtio NIC (vmbr0) │ │
│ └──────────────────────────────┘ │
│ │ │
│ └──────→ vmbr0 (Bridge) │
│ │ │
│ (eth0 / primary NIC) │
│ │
└─────────────────────────────────────┘

Component Reference

ComponentSettingReason
BIOSOVMF (UEFI)Required for KiTifi UEFI image
BootSCSI diskFast boot, optimized for SSD/LVM
Storagevirtio-scsi-singleLow-latency, single-threaded SCSI
NetworkVirtio TAPHigh-performance paravirtualized NIC
CPUHost passthroughNative instruction set, no emulation
Memory4GB + 2 coresSufficient for KiTifi base load

Disk Import Process

When you run qm set 103 --scsi0 ... import-from=, Proxmox:

  1. Reads the raw .img file from /tmp or current working directory
  2. Creates a new LVM logical volume on local-lvm storage
  3. Copies image data directly to LVM disk
  4. Registers disk as VM device
  5. Deletes original .img file (if import succeeds)

Verification Steps

1. Check VM Configuration

Verify all settings were applied:

qm config 103

Expected output includes:

bios: ovmf
boot: order=scsi0
cores: 2
cpu: host
efidisk0: local-lvm:vm-103-disk-0,size=128G
memory: 4096
name: kitifi
net0: virtio=XX:XX:XX:xx:xx:xx,bridge=vmbr0
ostype: l26
scsihw: virtio-scsi-single
scsi0: local-lvm:vm-103-disk-0,format=raw,size=128G

2. Verify Storage

Check that disk was created successfully in LVM:

lvs | grep vm-103

Expected: vm-103-disk-0 pve -wi-ao---- 128.00g

3. Start VM

Boot the KiTifi VM:

qm start 103

4. Check Console

Monitor boot progress (especially UEFI initialization):

qm terminal 103

Or via Proxmox web UI: Datacenter → 103 (kitifi) → Console

5. Wait for Network

Once booted, verify KiTifi acquired IP address:

qm guest cmd 103 network-get-interfaces 2>/dev/null | grep -A2 '"name"'

Or in Proxmox UI: 103 → Summary → Network devices


Troubleshooting

IssueCauseSolution
"file not found" during importImage not decompressed or wrong pathRun xz -dk in correct directory; use absolute path /tmp/KiTifi-...
"ChunkLoadError" in Proxmox after creationProxmox web console not refreshedHard refresh browser: Ctrl+Shift+R or clear cache
VM won't boot (black screen)OVMF not installed on nodeapt install ovmf on Proxmox node; qm set 103 --bios seabios as temporary fallback
"local-lvm:0 not found" errorStorage pool misconfiguredCheck: pvesm status and ensure local-lvm shows "active"
Disk resize failsDisk already in use / lockedStop VM first: qm stop 103; then retry qm disk resize
No network on KiTifiBridge name mismatchVerify bridge name: ip a on Proxmox node; adjust --net0 virtio,bridge=vmbr1 if needed
Slow disk performanceSCSI hardware setting wrongEnsure --scsihw virtio-scsi-single (not virtio-scsi-pci)
"terminal: guest agent not running"QEMU Guest Agent not installed in KiTifiguest-agent not required but recommended; can add later
Import appears stuck (long duration)Large image being copiedNormal for 2GB+ images; monitor with lvs or watch free -h
VM ID 103 conflictsAnother VM using same IDList used IDs: qm list; create with different ID and update all commands
Out of storage space on local-lvmInsufficient capacity for 128GB diskCheck available: pvesm status; delete unused VMs or add storage
UEFI boot timeoutOVMF firmware issue / corrupt imageVerify image checksum (if provided by KiTifi); try --bios seabios temporarily

Advanced Options

Option A: Increase CPU Cores for Performance

If running CPU-intensive workloads:

qm set 103 --cores 4 --sockets 1

Cores allocation (up to physical CPU count):

  • --cores 4 = 4 vCPU cores per socket
  • --sockets 1 = 1 socket (vs. multi-socket for NUMA)
  • Max recommended: 8 cores per VM on dual-CPU systems

Option B: Increase Memory

For heavier workloads (default is 4GB):

qm set 103 --memory 8192

Increases to 8GB RAM. Restart VM to apply: qm reboot 103

Option C: Add Second NIC for Management

Separate management network from production:

qm set 103 --net1 virtio,bridge=vmbr1

Requires second bridge vmbr1 configured on Proxmox node.

Option D: Enable Balloon Memory (Dynamic Resizing)

Allow Proxmox to reclaim unused RAM:

qm set 103 --balloon 2048

Sets minimum guaranteed memory to 2GB; allows up to 4GB allocated. Requires qemu-guest-agent on guest.

Option E: Add USB Passthrough (optional)

If KiTifi uses USB hardware:

lsusb  # List connected USB devices
qm set 103 --usb0 host=1234:5678 # Replace with actual vendor:product IDs

Option F: Enable Nested Virtualization

If KiTifi will run VMs itself:

qm set 103 --cpu host,flags=+vmx

Adds Intel VMX (or AMD SVM) CPU flags. Requires compatible host CPU.

Option G: Custom Boot Delay

Add BIOS delay if boot is too fast:

qm set 103 --boot delay=3

Gives UEFI firmware 3 seconds to initialize.

Option H: Enable CPU Hotplug

Allow adding cores without reboot:

qm set 103 --cores 2 --vcpus 4

Allocates 4 total vCPUs but enables 2; can hotplug 2 more via Proxmox UI.

Option I: Attach ISO for Installation Media

If you need to boot installer:

qm set 103 --ide2 local:iso/ubuntu-20.04-live-server-amd64.iso,media=cdrom
qm set 103 --boot order=ide2,scsi0 # Boot from ISO first

Option J: Enable VNC Remote Console

Alternative to web console:

qm set 103 --vga std -smp 4

Access via VNC client on <proxmox-ip>:600X (X varies by VM ID).

Option K: Configure QoS (Bandwidth Limit)

Limit disk I/O to prevent host overload:

qm set 103 --scsi0 local-lvm:vm-103-disk-0,bps_max=100M

Limits to 100MB/s for safety on shared storage.

Option L: Snapshot Before First Boot

Create recovery point:

qm snapshot 103 pre-boot-snapshot

Restore with: qm snapshot 103 pre-boot-snapshot --restore



KiTifi VM deployment complete! Your VM is now running on Proxmox with full UEFI support, virtio-scsi storage optimization, and 128GB disk capacity.