Building a Skylake-based Ubuntu Server

As part of my work on MAAS, I wanted to build a fast, reliable server to use for development and testing. In this post, I'll document that process for the benefit of those who want to do something similar.

Parts List

Item Price
Intel Xeon E-1275v5 CPU ("Skylake") $375
Crucial DDR4 ECC RAM kit (64 GB) $368
Supermicro X11SSZ-F-O Motherboard $242
SanDisk Ultra II 960GB SSD $225
EVGA 430W Power Supply $30
Rosewill 2U Micro-ATX Case $70
2.5" to 3.5" drive mounting kit $7

Total cost (excluding tax, which may vary): $949. Not a bad deal for a fast, SSD-based server with plenty of RAM for any virtualization needs. (And I actually got a better deal on the SSD, since it was a "prime day deal".)

Build Notes

I have posted a Google Plus album with the photos from this build.

When researching the build for this server, I made heavy use of the Wikipedia page for Skylake, which contains some good comparisons of the different options.

Since I wanted this to be a fast, high-reliability machine, I went with a Xeon processor, so that I could use ECC memory. Note the huge price difference between the top-of-the-line Xeon CPU and the 2nd best. I went with the second-best, since it looked like the best value. In addition, that chip has integrated graphics, which is nice in case I want to repurpose it as a workstation in the future. The CPU came in a retail box with a fan.

I chose the Supermicro board for to its remote management capabilities, including both IPMI and Intel AMT. (And, of course, its support for the CPU I selected.)

I usually use Crucial to buy memory, since I've had good customer service interactions with them, and they have a nice, well-researched database of which variety of RAM is supported by a huge variety of boards.

One regret with this build is that I didn't put much thought into the selection of the power supply. I went with the EVGA 430W because it looked like a good deal, and it was recommended as "frequently purchased with" on Amazon. When building the system, I found myself wishing I had chosen a modular power supply for better cable management. It is also most likely overprovisioned for this build, since I do not expect the load to reach anywhere near 430W. But it gives me the flexibility to add power-hungry PCI-E cards and more disks in the future, if I choose to.

The 2U Rosewill case was a good deal. It is relatively quiet, and I appreciate that a server doesn't sound like an airplane taking off when it's a few meters away from me in my office. But it does have a couple of flaws: they recommend removing the hard drive cages before installing the motherboard, and one of the cages is very difficult to remove and reinstall, since it is so close to the edge of the case. In addition, the case lacks USB 3.0 front-panel ports.

Normally when building servers, one would buy redundant disks and use RAID or similar technologies to provide failure resistance. This was not a requirement for me, since the primary purpose for this server is development work. (I plan to create my test environments using a "DevOps" approach, for the most part, with scripts so that I can easily rebuild the server in case of failure.)

Operating System Installation

I installed Ubuntu "Xenial" 16.04 LTS using the mini.iso on my local Ubuntu mirror. (Older versions of Ubuntu may not work unless they are "hardware enablement" point releases containing newer kernels, as support for Skylake was only recently added.)

Installation was quick and relatively easy using the IPMI-enabled BMC on the Supermicro board. Once I figured out the IP address of the BMC, I used the web interface (default username and password are ADMIN - all uppercase) to enable a virutal CD-ROM device. (Virutal Media > CD-ROM Image) I made sure the .iso file was available on a Samba share, and entered the information. (The path must be in the format \<share>\path\to\mini.iso.)

To use the remote management features on my Ubuntu desktop, I had to install icedtea-netx in order to use javaws to run the jnlp file that is downloaded when you try to launch the remote console. (The web management interface is a little rough around the edges.)

Conclusion

I'm very happy with this server build; I think it will serve me well for many years to come.

My only regret now is not having a nicer server rack to place it in; I'm using an IKEA LACK side table as my "equipment rack" at the moment, and I am not able to mount the server securely. It's currently on the floor, and I worry that dust and dog hair will easily get sucked into the air intakes.

If you liked this post and want to buy any of this equipment, I would appreciate it if you use the links on this page to make your purchase. They are Amazon referral links, and will help me offset the cost of hosting, bandwidth, taxes, and buying servers out of my own pocket for the cause of open-source software development. ;-)

Thanks for reading!