Older Home Setup
Originally, I had a couple of laptops at home, a WD NAS, and an Nvidia Shield TV box. I used the NAS mainly as a storage for photos, videos, music, and for the occasional backups from the laptops.
On the Nvidia Shield, I used Kodi as a media center. I couldn’t simply stream videos to Kodi from the NAS .. huge performance issues. I had to buy a high-speed USB drive to extend the storage space on my 500 GB Shield to give more space for Kodi when using P2P downloads.
What wasn’t I happy with?
- Frequent instabilities with Kodi on Shield.
- Couldn’t stream videos directly from the NAS to Kodi.
- To run a software overnight, I had to leave my laptop running.
- Laptop couldn’t leave home when I wanted to run a software uninterrupted over a period of time.
- Had no backup for the NAS.
What Did I Need?
It was clear to me that I needed to upgrade things at home, so I started identifying what I wanted to have. Here is what I came up with:
- Better, more automated media setup
- Proper backups of my data
- Ability to have software running for days collecting and churning data
- Private file hosting and sharing service
- Ability to run multiple VMs (not on my laptop)
- Ability to securely access all of this remotely
What Are My Options?
I didn’t really do an exhaustive analysis of what my options were. However, I considered a few options.
- Extending my NAS
- A more advanced NAS
- Home workstation with some server OS
- RAID server
- unRAID server
Extending my NAS basically meant buying a similar one to what I currently have and connecting them for backups. This only solved one of my problems.
A more advanced NAS sounded like a good option at first. However, extending it for storage was not as simple. And I wasn’t sure I had any control over what I can run on that NAS. Maybe I would be able to run some apps but there will probably be a lot of limitations. The cost was not low either.
A home workstation with a server OS was an appealing option. However, this meant no parity. I also was not sure about my options for monitoring the server. I am sure there are tools for that on the different server OSes, I, however, wanted to spend minimal effort for maintaining the server.
It ended up being a comparison between either a RAID server or an unRAID server. This is already a controversial topic. However, there were a few points that helped me make up mind:
- unRAID does not stripe data across multiple disks. To me, this is safer.
- unRAID compensates for performance degradation due to not striping data via a cache drive.
- unRAID allows adding an asymmetric disk (with a size smaller than or equal to that of the parity drive)
- unRAID does not spin all drives for reading and writing a file
- unRAID has a beautiful application store and has native docker support
- unRAID has a strong community support forum
- unRAID does not need special hardware (compared to RAID)
The unRAID OS has a one time cost which might be a deterrent for some. For me, however, the cost was completely justifiable specifically considering the cost involved in expanding my array in the future.
First Home Server
This was not the most exhaustive enumeration or analysis of my options, nevertheless, I decided to go with the unRAID OS. I made the following to-buy-hardware list for my server:
- A used Dell PowerEdge T410
- 64GB ECC RAM
- 2 x Xeon X5670 12 Core CPUs
- No RAID
- 2 x 4TB HGST 7200RPM 128M Cache NAS Drives
- Samsung 970 EVO PLUS 512 GB SSD
- SSD NVMe PCIe Adapter
- USB Drive with a small form factor
The T410 came with a SAS backplane for the drives. The SAS backplane was powered by two 4-pin ATX connectors. The SAS backplane, however, didn’t have a connection to the motherboard. The reason is that I ordered the T410 with no RAID. A SAS backplane is connected to the motherboard through a RAID controller and cannot connect directly to the onboard SATA ports. I had two options:
- Buy a H200 RAID controller and run the drives unconfigured (non RAID) to pass them through as individual drives.
- Get rid of the backplane and connect the drives directly to the motherboard.
I was not sure about the performance of the first option so I went with the second. I installed the cache drive into the SSD adapter and into a PCIe port in the motherboard. I setup the USB drive with the unRAID OS from an Ubunutu host as follows:
- Formatted the drive as FAT32
- Unzipped the contents to the drive
- Edited the configuration files as needed (e.g., host name)
- Unmounted the USB drive
- Ran the ‘make bootable’ shell script from the local copy
This is it. I put the USB drive into a port directly on the motherboard, closed the chassis, started the server, and it worked.
In future posts, I will explain the software setup of the server.