Everybody knows that out of all their friends, chances are that I’m the most tech savvy. One of the coolest things I get the most use out of (tech-wise) is my home server, so I figured I go a little in-depth on what this badass setup can do.
What got me started on this project was back in 2011, I picked up a Western Digital ‘My Book Live’ to store files and back up to. It wasn’t anything too fancy – a pretty simple System-on-a-Chip (SoC), gigabit ethernet, running some proprietary software with 3 terabytes of storage. It worked great. Time Machine integration was killer, the interface was kind of sluggish but do-able, and it was reachable from the internet. Eventually I discovered you could set up a Bittorrent client on it to remotely download files, which was great because the NAS was on 24/7 anyway. Pretty slick stuff for around $300.
After I picked up an Xbox 360 for my apartment, I discovered another absolutely killer feature of my NAS. It could stream media using DLNA to the Xbox. So essentially, I could torrent movies and music (that I had bought on disc, obviously, because otherwise that would be illegal and nobody illegally downloads stuff nowadays amirite?) and then stream it to the Xbox over the network. I was blown away. This was some next-gen shit going on in my living room and I wanted more. MOAR.
One thing that concerned me with the My Book Live was it’s single disk layout. 3 terabytes on a single disk made me nervous – if that blew up, all my data goes poof. All my mission critical files were stored on more redundant mediums like Dropbox and optical media, but the fact still stood that I’d be upset if I lost all the files on the NAS. I began to research alternatives, open source stuff. I stumbled across FreeNAS at some point, and was immediately sold. Open source, modular, options for plugins and additional functionality, low impact web GUI / CLI at terminal. Okay, I like this, but it needed a physical machine to run on. Do I have a shitty workstation kicking around that I could use? Sure did.
It was a pretty shit basic machine. Celeron D, 2.something GHz, 4 GB memory, integrated everything. FreeNAS essentially runs on its own dedicated disk (spinning or flash) and then utilizes a second disk for storage. So I procured one of my shit 20 GB IDE drives and put FreeNAS on it. All the stuff I had on the WD NAS got moved to my laptop and two external drives, and then I moved the 3 TB disk into the FreeNAS box. After some fiddling and fucking around, it was live. I felt like Frankenstein but it ran, and it performed pretty great for what it was. System load was in the 0.33 range, which to me was acceptable since it was a single-core and 32-bit. My first issue was a networking stack crash because I was overflowing the Realtek NIC’s buffer. Onboard sucks, remember that! It wasn’t an every day issue, more like whenever I’d transfer large files. I ordered an Intel PRO/1000 GT gigabit NIC and all my issues disappeared.
I had Transmission running for my Bittorrent client. MiniDLNA for my media serving. CIFS and AFP for fileserving. Download a movie, move it to the appropriate dataset, force a MiniDLNA update, and then stream that bitch to the Xbox. It worked beautifully.Then I ordered a second 3 TB drive – a Western Digital Red NAS drive. Designed for NAS usage. Fuck yeah. I added that and created a simple RAID mirror for some data redundancy. If one drive kicked the bucket, the second drive would still be good. Excellent.
The NAS ran like a champ for a good while, but again – everyone that knows me knows that good enough is never good enough. I had dreams of more horsepower, more storage, more memory. I wanted more plugins, I wanted virtualization. So I priced it out and invested further into this awesomesauce project. I ordered the parts and anxiously awaited their arrival. What’d I get?
That’s right. Server-class Intel Xeon E3-1230 at 3.3 GHz, an entirely new ASUS logic board, and 16 GB of PC3 10600 ECC (error correcting) memory. Now we’re talking! After procuring a larger case to fit my goodies, I managed to get everything installed and configured. One of the cooler things about that ASUS board is it has a USB port built directly on the board. So in order to dump that 20 GB IDE drive, I just flashed FreeNAS onto a thumb drive and plugged it into that port. Beautifully simple and effective.
Soon thereafter I installed a second pair of 8 GB DIMMs to bring the whole server up to 32 GB of memory. I also threw a third 3 TB WD Red drive in there and modified my mirror to become a true zRAID array. 6 TB usable storage with the ability to lose one drive and still maintain data integrity. The ECC-enabled memory allows for on-the-fly error correction in data, which is pretty critical with how much I download and use the server.
I also picked up an Uninterruptible Power Supply (UPS) that actually interfaces with the server through USB. If my apartment loses power (which is a notorious thing here), the UPS will keep the server up until it reaches 20% battery then signals the server to gracefully shut down all the jails and VMs, sync its disks, unmount the stores, shoot me an email, and power off. Fucking epic.
Instead of using MiniDLNA, I’ve moved onto bigger and better things. Plex is my go-to now. It managed all my movies and TV shows – titles, actors, directors, basically every piece of metadata you could want. Currently I’m around the 300 mark for movies, and I’ve got about 7 or 8 TV shows with every episode from every season. All in 1080p or 720p unless they weren’t available in that resolution (I’m looking at you, Scrubs). Plex interfaces with a cloud service as well, which allows me to stream all of media content to my phone, another PC, basically anything. It’s quite possibly the coolest thing I’ve had the chance to work with.
Plex coupled with RARflix on the Roku 3 is basically living the good life. RARflix is a Plex client that runs on the Roku. Native MKV decoding, Dolby 5.1 DTS support, the whole nine fucking yards. It’s amazing, I can’t even downplay it.
Equally epic in FreeNAS is the ability to run a VirtualBox server. That’s fucking right – I have three Windows 7 VMs running on my server… AT HOME. Headless with 2 GB of RAM apiece. I can use them for testing, or to do regular maintenance at home if my main PC isn’t on. On the fly snapshots, mounting of ISOs and images – everything you’d expect from a solid VM infrastructure. All at my effing house.
Now you might ask is all of this really necessary. No, of course not. But I’m a geek, and I love this kind of shit. I love movies and TV shows, so it makes perfect sense. I even have BTSync running on the server which makes it act in a Dropbox-like manner but with NO filesize restrictions. I love it. So next time there’s a debate about who’s got the best home theater setup, you know who has it won. This guy.