My Home Lab

A prerequisite read to this is here. Don Jones is a genius. Enough said. And a special shout out to @MeghNeupane for the initial hardware recommendation.

Recently I transitioned professionally from internal IT to external customer facing IT. This is a much more fast paced and cutting edge field to be in and as such I determined it was time to take my home lab setup much more seriously. I simply needed a place to work on things on a whim that were not constrained in any such way. I would have loved to have done this type of environment in Azure, but Azure is not really built for this type of environment. I live in the System Center stack for the most part… ever done OSD from Azure? Pass. Running non-server Operating Systems in Azure isn’t exactly pretty yet either. I needed something closer to home in addition to whatever I am doing in Azure.

I had a Windows 8.1 box with a TV tuner card that I was using to record over the air television using Windows Media Center. (RIP) The goal was to replace that aging box with something that had the horse power to handle TV recording, media playback and has the ability run several VMs (The majority of the System Center stack for example) at the same. The box also had to be as quiet as possible as its physical location is in the living room. And probably most importantly, the entire thing should cost less than $1000.

Here is the hardware I went with –

Lenovo ThinkServer TS140 with Intel Xeon E3-1225



2 x 8GB DDR3 Memory (PC3 12800)

2 x 2.5″ HD Adapter

Hauppauge WinTV-HVR 2255

Total cost for this was approximately $850. All of these devices have since dropped in price since I built this box less than a month ago. That’s a little enraging… but moving on. I was replacing an existing PC that I was using as a media center which had a Hauppauge HVR-1800 tuner card in it. I fully expected this legacy card to work in the TS140, but it didn’t! It was too old. I don’t have an exact technical reason other than that. Once I replaced it with the WinTV-HVR 2255 it started working great. Without the DVR requirements this project would have been $120 cheaper. There is onboard video in the TS140, but for HD recording using the tuner card, a graphics card with 64MB of memory is required. I was able to salvage the video card from the old media center.

UPDATE – The onboard video works fine for playback and recording HD. The resolution is set to 1360 x 768.

I opted to run Windows 10 Technical Preview on this beast. At the time of writing release 10159 is installed. If you go this route be sure to get drivers directly from Lenovo as a few are missing from the Windows 10 media. If it wasn’t for the media center requirements I would have just installed Hyper-V server or Nano server, but this thing is the media hub of the house and connects directly to the TV, so a full UI is necessary.

This gives me a crazy fast processor, 20GB of ram (4GB shipped with it and plus the 16GB I added) and SSDs running Windows 10 with the Hyper-V services installed. With this configuration I am able to stand up anywhere from 10-15 VMs depending on how much memory I give to each VM. This is more than enough for a nearly complete (as complete I need it to be anyway) System Center stack. This thing is fast as heck. I can do a full PowerShell Deployment Toolkit build in less than 90 minutes. It is very quiet too.

Also, since this is the media center PC and I didn’t want to join it to a domain or really do anything that could possibly add to the complexity of using it. This is the family media center, if it doesn’t “just work” for my wife and kids, I have just created a ton more work for myself. Remotely managing a workgroup machine from a domain joined machine required some technical finagling. This is all well documented over the internet.

Configure PowerShell remote –

  1. Configure WinRM on the server box. (winrm /quickconfig)

  2. Add the client as a trusted host on the server. (PowerShell)

Set-Item WSMan:\localhost\Client\TrustedHosts -Value 'YourClientName' Force


_ 3. Add the server as a trusted host on the client.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value 'YourServerName' Force

Code Sample to Connect:

$cred = get-credential #this will prompt you for credentials. A microsoft account or a local account will work here
$sess = New-PSSession -ComputerName mediacenter -Credential $cred
enter-pssession $sess

To manage Hyper-V remotely

  1. Store the credentials needed to connect to the server on the client box. (A Microsoft live account in my case)

  2. Configure Component Services on the client.

Good reference.

  1. Add the server to your Hyper-V Management Console and begin building your lab.

With these things configured I could enter a remote PowerShell session and remotely manage Hyper-V. While the family is watching Netflix or whatever and they are none the wiser. Slick.