Three machines. Three single points of failure.
"We have a Windows 7 computer in the corner that runs Microsoft Money. Nobody's allowed to touch it. If it dies, we lose decades of financial history."
It wasn't just one PC. It was three.
- The "do not touch" PC — Windows 7, running Microsoft Money. No one remembered the admin password. Hard drive was 9 years old.
- The file server — aging Windows 10 box with every shared file, scan folder, and the TimeSlip billing database. No RAID. No offsite backup.
- The paralegal's workstation — WordPerfect X9 and Sage on a Windows 10 machine from 2014.
The firm ran on all three, every day. Replacement wasn't an option: Money hasn't been sold since 2009, WordPerfect licenses are non-transferable, and TimeSlip migration is a multi-month project.
The real risk: the Win7 drive was already showing reallocated sectors in CrystalDiskInfo. Not if it fails — when.
Freeze the computers in amber. Move them to safety.
We migrated the whole computer — OS, apps, registry, drivers, local files — into a virtual machine using Proxmox VE. Three times.
End state before we left the building:
[ OK ] VM-Money (Windows 7) :: Microsoft Money runs unmodified
[ OK ] VM-Server (Windows 10) :: file shares / TimeSlip intact
[ OK ] VM-Workstation (Windows 10) :: WordPerfect X9 / Sage intact
[ OK ] UNC paths (\\Server\Data, \\Server\Scan) :: unchanged
[ OK ] Tailscale mesh :: remote access without firewall changes
[ OK ] Proxmox Backup Server :: nightly snapshots, 7-day retention
[ OK ] Hardware cost :: $0 (repurposed existing i5 Skylake unit)
[ -- ] Legacy apps :: no modification required or performed
Each PC runs as a locked-down kiosk VM. Users connect via RDP from their existing workstations. From their seat, nothing changed. We manage one host instead of three, with centralized backups and per-VM snapshots.
Infrastructure — before and after
How we ran the migration
Discovery without disruption
We installed Tailscale and Win32-OpenSSH on each machine and ran a PowerShell audit script remotely: CPU, RAM, disk health via Get-PhysicalDisk, installed apps via Get-Package, active shares.
The locked Win7 box — no admin password on record — required the Utilman technique: boot recovery, swap Utilman.exe for cmd.exe, get a SYSTEM shell from the login screen, reset the password. 15 minutes.
# Audit script excerpt -- hardware inventory
Get-PhysicalDisk | Select FriendlyName,MediaType,HealthStatus,Size,OperationalStatus |
ConvertTo-Json | Out-File "$env:TEMP\disk-health.json"
Get-WmiObject Win32_ComputerSystem |
Select Name,TotalPhysicalMemory,NumberOfLogicalProcessors |
ConvertTo-Json | Out-File "$env:TEMP\hw.json"
# Check VT-x / VT-d via msinfo32 export
msinfo32 /report "$env:TEMP\msinfo.txt" /categories +systemsummary
Snapshot every PC into a portable image
Disk2vhd (Sysinternals) captured each machine live via VSS — no shutdown, no disruption. Three .VHDX images totaling ~120 GB, staged to a portable drive over the network.
# VSS snapshot created -- live capture, no downtime
Snapshotting volume C: ...
Creating VHDX: \\pca-staging\images\money-pc.vhdx
Copying 38.4 GB ... done.
money-pc.vhdx :: 38.4 GB :: VSS consistent
# Repeat for PC-Server (52.1 GB) and PC-Work (29.7 GB)
Total staged: 120.2 GB across 3 images
These images alone are a complete DR solution. Before the Proxmox host existed, all three machines were portable files restorable to any hardware in under an hour.
Repurpose the healthiest PC as the Proxmox host
The healthiest of the three machines — i5-6500, 16 GB DDR4, Samsung 860 EVO — became the host. Pre-install prep:
- Verified VT-x and VT-d enabled in BIOS (required for full hardware virtualization and PCI passthrough)
- Cleaned chassis, replaced thermal paste, inspected PSU capacitors
- Confirmed SSD health via
smartctl -a /dev/sdaafter Proxmox boot
# Proxmox VE 8.1 install -- USB boot, guided installer
# Target disk: /dev/sda (Samsung 860 EVO 500 GB)
# Filesystem: ext4 (ZFS not used -- single-disk host, no RAID)
# Management IP: 192.168.1.50/24 (static, assigned in BIOS DHCP reservation)
# Post-install: verify Intel VT-d is active
dmesg | grep -i "DMAR\|IOMMU"
# Expected: [ 0.000000] DMAR: IOMMU enabled
New hardware purchased: $0.
Convert VHDX images to Proxmox VMs
Converted each .VHDX to .qcow2 using qemu-img on the host, then attached each disk to a new VM.
# Convert VHDX to qcow2 (run on Proxmox host after SCP of images)
qemu-img convert -f vhdx -O qcow2 /tmp/money-pc.vhdx \
/var/lib/vz/images/100/vm-100-disk-0.qcow2
qemu-img convert -f vhdx -O qcow2 /tmp/server-pc.vhdx \
/var/lib/vz/images/101/vm-101-disk-0.qcow2
qemu-img convert -f vhdx -O qcow2 /tmp/work-pc.vhdx \
/var/lib/vz/images/102/vm-102-disk-0.qcow2
# VM config example (VM 100 = Money PC)
# /etc/pve/qemu-server/100.conf
# ---
# bios: seabios
# cores: 2
# memory: 4096
# net0: virtio=XX:XX:XX:XX:XX:XX,bridge=vmbr0
# scsi0: local:100/vm-100-disk-0.qcow2,size=40G
# scsihw: virtio-scsi-pci
# vga: std
VirtIO drivers injected into the Win7 VM post-boot via virtio-win ISO — significant disk and network performance improvement. Each VM received:
- Tailscale installed — persistent mesh node, auto-connect on boot
- RDP enabled — port 3389, Windows Firewall rule added
- Kiosk lockdown — Task Manager disabled via Group Policy, Start Menu restricted, auto-login configured, crash auto-restart enabled via
sc failure - Proxmox Backup Server job — nightly at 02:00, 7-day retention, all VMs
Deliver — users RDP to "their" computer
Each user got a labeled shortcut on their workstation desktop. mstsc.exe with pre-filled Tailscale IP.
# Shortcut target -- "Open Money" desktop icon
# C:\Windows\System32\mstsc.exe /v:100.x.x.x /f /w:1920 /h:1080
# 100.x.x.x = VM-Money's Tailscale IP
# /f = full-screen, /w /h = resolution match
# File shares remain accessible at original UNC paths:
# \\Server\Data -> maps to VM-Server's C:\Data share
# \\Server\Scan -> maps to VM-Server's C:\Scan share
# \\Server\TimeSlip -> maps to VM-Server's C:\TimeSlip share
# (Tailscale resolves "Server" via MagicDNS to VM-Server's node IP)
Double-click. App opens full-screen. Files where they always were. From their seat, nothing changed.
Before and after
| before | after |
|---|---|
| 3 aging PCs, each a single point of failure | 1 host — all VMs backed up nightly |
| Windows 7 box nobody was allowed to touch | Win7 VM — snapshotted, cloneable, restorable in minutes |
| Decades of financial data tied to dying hardware | Same data — hardware-independent, portable as a file |
| 3 machines to monitor, patch (or ignore), support | 1 Proxmox dashboard — all VMs visible in one pane |
| If Money PC dies, financial history may be unrecoverable | VM-Money survives any hardware failure — restore in <1 hour |
| No backup strategy — "we just hope it doesn't die" | Nightly PBS snapshots retained 7 days — tested restore confirmed |
| Hardware replacement = forced app migration | Host hardware is replaceable — apps inside VMs are permanent |
Same software, same workflows, same files — on infrastructure we can replace without touching the apps inside. Host dies? Restore VMs to any $300 mini PC. Back online same day.
PCA migrated 3 machines in a saturday window. monday morning everyone signed in like nothing happened. we kept the proxmox host. the savings paid for the engagement in 5 months.
— managing partner, houston law firm (anonymized per engagement agreement)
Tools used
all tools listed ran on hardware the customer already owned. total software licensing cost for this engagement: $0.
Timeline
qemu-img check. Proxmox VE 8.1 ISO prepared and USB flashed.Why virtualization is the third option
A lot of small businesses run software that runs the company on hardware that's quietly dying. The usual options:
- "Just upgrade" — new version won't import old data, costs five figures, requires a year of retraining. For a 6-person firm, that's not a project. That's a crisis.
- "Just replace the PC" — install media gone, license non-transferable, vendor no longer exists.
- "Just live with it" — until the drive fails.
Virtualization is the third option. Move the entire machine — OS, apps, registry, drivers — into a container that runs on modern hardware and can be snapshotted like any other file. The app doesn't know anything changed. Hardware underneath gets swapped on a Saturday.
The PC becomes a file. The file is forever.
Have a "do not touch" PC of your own?
If your business is one hard drive failure away from losing software that can't be replaced, this fits the FORTRESS tier. 30-minute assessment, no obligation.
related: all case studies · service tiers · about pca technology
does your situation look like this?
if you check most of these, we should talk.