As someone who uses lots of VMs and performs maintenance on a good many machines both for myself and others I required an hard disk image deployment system.
This story goes all the way back to 1999, in those days it was quite common for ones Windows 98 installation to become corrupted or otherwise infected with garbage picked up from IE4/5. Reinstalling Windows was a notorious pain in the dierre, especially if you had to download programs on a 56k connection!
The answer was Norton Ghost. A magical piece of software that enabled the user to make an HD image of your hard disk and back it up to CD-R or other form of media. It was possible to get a full Windows image plus software on two CD-Rs. It was also very quick to make and restore.
The issue with Ghost was a bootable USB was required in order to make the image or restore it. The other issue was possible write errors with the CD or having to stow a pile of disks. Flash forward to 2004 when I purchased my first NAS, a Buffalo Linkstation of 250Gb. This device was purchased primarily for storing all my media (250Gb was a lot of storage back then) and storing various bits of personal files/software. Ghost enabled restoring image over the network either with SMB or FTP as long as the bootable USB drive had the appropriate NIC drivers for the machine. This wasn't always the case and making a bootable USB with all the drivers needed (and known about) was annoying. It worked for my machines however not always for the machines I was given to repair.
In 2006 I discovered Acronis. Acronis was a great improvement on Ghost but was more resource intensive, it did have all the drivers of its day required built into the USB bootable stick. Acronis was built using the Win7/Vista pre execution environment enabling the mouse. This worked for me for many, many years using the latest editions of Acronis. The downfall in this was the requirement of the USB drive. I decided to look for another way....
Having dabbled a bit with Windows PXE booting in 2012 I decided that PXE was the way I wanted to go. Building a Windows PXE server wasn't smooth sailing on the hardware I had. There was no VM support on the network at that stage plus there were RAM limits with 32bit based laptops.
For those that don't know PXE is booting for LAN cards. With it enabled in the machines BIOS enables the card to look for a bootable image on a standard network.
This is where the FOG project comes in. FOG is a PXE image based deployment server. This means that from a LAN connected machine I can simply make an image of the machines hard disks by selecting the option either in the browser GUI or the FOG PXE GUI, no sodding USB sticks needed! I can also have multiple images of the same machine or deploy the same image to multiple machines concurrently! This is a god send when making up VMs as I can deploy a pre made fresh image of any OS I want via LAN....oh...also FOG is FREE.
FOG uses a small TFTP file on the LAN network stack which gives you the GUI. FOG itself runs in a Debian VM simply for ease. It's possible to run it as a docker however I found it much easier to use a VM. It's fairly simple to setup if you know a bit of Linux CLI. FOG is set to use a NAS as the storage medium via FTP but can be set to use pretty much any network storage device.
The only tricky thing I had issues with was Legacy and UEFI PXE boots. It seemed for a while only possible to do either or however the kind chaps on the FOG forums pointed me in the right direction. The issue was using the router as the TFTP server which wasn't doing everything it needed to even though it was a business class device. It would only boot a Legacy Boot file or a UEFI one. The key was install dnsmasq on the Debian VM to take over that function required. Instructions here. Very straight forward.
Instructions on how to setup FOG are here.