“I really wish I had a dedicated Linux computer to run computer vision algorithms on,” said my fiancée a couple of weeks ago. If you were there you would have been blinded by the metaphorical light bulb that lit over my head. You see, just the week before, my friend and co-worker had ordered an old, decommissioned (complete with “non-classified” stickers!) Apple Xserve off of eBay for merely $40. Like my fiancée, he wanted to have a machine for a special purpose: test compilations of open source software on a big-endian architecture. I was quite envious that he was able to hack on such cool hardware for such a cheap price. But, I wasn’t yet ready to bring out my wallet. I couldn’t justify indulging a new hobby without good reason—I was stuck waiting for just the right impetus. I didn’t wait long. My fiancée’s wish became my command!
Too long? Skip to the good stuff.
I immediately related the story of my co-worker to her: a server for just $40! Granted, we would want a little-endian, x86-64 architecture. Plus, for her algorithms and my virtual machine research we’d probably want a lot of cores and as much RAM as possible. Oh yeah, did I mention I also wanted a beefier machine at home so I could manipulate large virtual machine images? Virtual machines (VMs)! We’d need CPUs with VT-x or AMD-V so we could run VMs with accelerated hardware support. VMs run slow as a snail without acceleration. That would make the machine useless to me.
Focused on my quest, I started scanning eBay listings daily. My co-workers even began to notice and started asking me if I was looking for something specific. I responded that I was toying with the idea of trying to grab some cheap data-center-class hardware (for the astute, cheap data-center-class hardware should be an oxymoron). I was worried my project would end in failure, and wasn’t quite ready to announce to the whole world my larger plans. After several days of failed bid attempts—I always seemed to get sniped in the last few seconds—I finally found what appeared to be the perfect fit.
There is a lot of conjecture on where the Dell 1U rackmount model CS24-SC came from. Some people say Facebook data centers. Others just say that it was mass-produced for “clouds.” Whatever these servers were used for, they were all retired by the thousands and show up all over eBay. The general consensus is that Dell never sold these to general customers; the CS24-SC was a special custom-designed server sold by the tens of thousands to certain large customers. Thus, the CS24-SC has no support from Dell. I haven’t been able to find anything outside of what random other CS24-SC owners have found in the years since the great decommission event.
The CS24-SC has a few variations, but they don’t deviate too significantly. The one I had in my sights came with two quad-core Xeon E5410 @ 2.33 GHz CPUs. OK, fairly beefy compute from a few years ago giving us eight total real cores. It had 8 GB of RAM installed, which felt a little wimpy. Articles from second-hand owners online were conflicted on the maximum amount of RAM supported by the CS24-SC. Some said 48 GB, others said 24 GB was the max. Well, it didn’t matter, because the greatest amount of RAM I could find at a reasonable price was 24 GB of data-center-class ECC RAM (PC2-5300P for the interested). Cool, what are we still missing? Oh, most of these second-hand machines don’t come with hard drives or hard drive caddies.
A quick visit to Newegg and I identified a cheap Seagate 1 TB hard drive (ST1000DM003) to slot in. Meh, lets do this right and add in an extra hard drive for RAID1 to protect our work. I also threw in two CAT6 Ethernet cables so we could use both of CS24-SCs gigabit network ports, and a power cable. Well, that’s about it right? The server on eBay had its own case, 400 watt stock power supply, motherboard, and other needed components.
We had to wait 1.5 weeks, but finally the CS24-SC arrived. I anxiously picked it up at our local FedEx location just up the street. My fiancée and I unboxed it together and hooked up all the components together. She tried putting in some of the RAM herself, so this counts as a date right? We were both worried that it wouldn’t boot, and in a sense that became a self-fulfilled fear. After plugging in a VGA monitor, we just had a black, blank screen. Uh oh, maybe the hardware is bad? Or maybe the RAM is bad?
I really racked my brain thinking of ways to check on this system. I plugged in the Baseboard Management Console (BMC) port into my router. Based on its DHCP client table, I guessed a certain device on my network was coming from the BMC port. My hunch was confirmed when I port-scanned and discovered port 81 open and running an Apache server. After going to the server in my browser I was presented with a login prompt. I was getting desperate and worried. I thought that even if the VGA port was bad for some reason, we’d at least be able to get into the remote console. But how to get past this login screen?
I tried several username/password combinations, and luckily root/root worked. I found out later online that is the default username/password combination. Thank you to whomever left this at the default, or reset it! If you sell a server with such a management console, please reset it if you customized it at all. It turned out that the VGA port wasn’t bad, we just didn’t have the monitor plugged in before the BIOS flashed its screen. The system went to a blank screen after failing to boot an OS.
Okay, phew, things seem to be working. I downloaded Ubuntu 14.04 LTS Server and copied it onto a USB stick. Our CS24-SC had no trouble booting into the Ubuntu installer off of USB. We installed Ubuntu, named our server “phoenix,” after the ever-reincarnating mythical bird, and started customizing our CS24-SC. The two hard drives, 24 GB RAM, and whole system were recognized perfectly by the BIOS and Ubuntu. The only lingering issue I have is that Ubuntu doesn’t seem to properly display through the VGA interface after it boots. Grub displays fine, and so do the early-stage kernel messages. Perhaps this is just a driver issue I need to track down. Also, the fans on the PSU don’t spin, but it doesn’t appear to be going bad yet.
Hardware virtualization seems to work, and we are setting up our own work environments within Vagrant-managed VMs. I’m using this opportunity to experiment with some advanced Linux functionality I’ve never tried before. Our two hard drives are not a traditional RAID1. I’m using the new btrfs file system to mirror our root partitions. There would be some work involved in setting up the second hard drive to boot, but we won’t lose our data. I setup the dual gigabit ports into a single bonded virtual device using the Linux kernel’s balance-alb algorithm to try and balance inbound and outbound TCP flows across both ports.
What were the total costs? And how about some links to all the hardware:
|Dell CS24-SC Rackmount Server||1||$120.00||$120.00|
|24 GB PC2-5300P RAM||1||$64.98||$64.98|
|Seagate 1 TB HDD||2||$54.99||$109.98|
|BYTECC Power Cable||1||$4.99||$4.99|
|Shipping [NewEgg Order with Cables]||1||$2.99||$2.99|
|Taxes [RAM eBay Seller]||1||$3.90||$3.90|
There you have it, a[n] [old] data-center-worthy home cloud server for only $310.28. Just for fun I tried customizing a hypothetical order on Dell’s website for new hardware configured the same way our CS24-CS is: it came out to over $3,300—with discounts it only drops to $2,400. Simply adding a second CPU on the Dell website costs over $500, more than our entire setup! The more modern hardware is faster, but our little CS24-CS is almost 90% cheaper. Thanks for reading my story of how I built a $300 home cloud server. And now maybe you can too with a little elbow grease and eBay.
tl;dr Quick Server Specifications:
|CPU||Two Quad-Core Intel Xeon E5410 @ 2.33 GHz|
|Memory||24 GB ECC RAM|
|Disk||Two 1 TB HDDs (RAID1)|
|Network||Two Gigabit Ethernet Ports|