I decided to build a NAS/home media server for myself. The main purpose of this build is to act as a media server and home cloud server/backup for my Desktop and Laptop, with the ability to rip my current DVD/Blu-Ray collection to digital format. It is also serving as proxy for all other computers on my network.
The last picture shows my desk setup with my desktop PC on top and the server underneath. My Desktop is an upgraded version of my other pcpartpicker build (Cobra Mk III), which has been moved into a Phanteks Enthoo Evolv mITX case, the GPU upgraded to an EVGA GTX 1070 FTW 8GB, and decked out with some Corsair RGB LED fans.
Case: Fractal Design Define R5
Decent airflow ATX case with capacity for upto eight 3.5" drives and two 5.25" bays for the optical disc drive. The case also has 2 SSD trays mounted behind the motherboard. This means it is able to accommodate all the drives I have planned for the build and allows space for future storage array expansion. Includes 2 140mm fractal design fans which set to intake air from the front, passing over the hard disks prior to air hitting the motherboard.
Motherboard: MSI X370 Gaming Plus
Relatively cheap motherboard with adequate PCIe slots and lanes for potential future plans (ie moving into rackmount case with capability to add 10Gb card or 2nd HBA card for > 8 drive storage array). The motherboard has 6 SATA III ports which is enough for the SSD's and optical drive. a second optical drive could be added later if I wanted to rip two discs at once. The Hard disks are connected via an HBA card. 3 PCIe 3.0 1x slots and 3 PCIe 3.0 16x slots in 8x/8x/4x configuration (8x/8x/1x, if top PCIe 1x used)
CPU: AMD Ryzen 2600
6C/12T CPU with fairly low TDP and a bargain at ~£150 compared to comparable Intel CPU's. I may overclock this in the future but, at the moment, threads over clock speed is more important to me for my current use case. I would need to step up to an i7 8700K to get similar threads on the Intel platform (too much money)
Memory: Corsair Vengeance LPX DDR4 2666Mhz 32 GB kit (2x16GB)
Good RAM, no problems. One of the lowest price 32GB kits available that is available in ready supply in the UK. Plenty of RAM for current and future use. Plan to use RAM transcoding in Plex to reduce writes on SSD cache.
Cooler: Cooler Master MasterLiquid LIte 120
Plenty of cooling for the Ryzen CPU. Considered just going with the included cooler but wanted as quiet a server as possible. Fans run at ~550rpm at idle with idle temps of 31 degrees. Set to exhaust out via rear slot on the case.
Graphics Card: Zotac GT710 1GB PCIe 1x
Need a graphics card to boot the system and modify BIOS settings. No iGPU on Ryzen CPU's (APUS's have one, but much less powerful CPU). This is going to run headless most of the time with most interaction via a WebGUI or the occasional bit of command line work. Wanted to keep the top 16x slot free for 2nd HBA card or 10Gb NIC, to be considered in the future. The bottom 16x slot will only have 1x bandwidth.
Optical Drive: LG WH14NS40
Blu-Ray drive compatible with ripping 4K blu-ray disks in MakeMKV. Newer drives have firmware which slows down the ripping process and don't work with 4K discs as well.
SSD's: 2 x Crucial MX 500 500GB 2.5"SSD
Two SSD's working as a cache for the main storage array, set up in RAID 1 and formatted in btrfs. Provides 500GB of redundant cache for writes to the array at fast speeds before being written to solid platter hard drives using an automated process within the the OS
Hard Drives: 4 x Toshiba N300 7200rpm 4TB
Hard drives designed for NAS. 7200rpm speed which is significantly faster than other NAS drives, unless you go for enterprise level storage drives. Under unRAID, 1 drive is currently used as a parity drive, and the 3 remaining drives are used for storage, formatted using xfs . This provides a storage array with 12TB and a fault tolerance of 1 drive. A second parity drive can be added to the array to provide 2 drive failure tolerance, which I will consider as my array expands.
HBA Card: 10Gtek LSI 9211-8i
Provides an additional 8 internal SATA III or SAS ports at 6Gb/s, via 2 ports into which you plug a breakout cable (10GTek SFF8087 to 4xSATA). NOT a RAID card. Storage array configuration handled within unRAID OS.
OS: unRAID Plus by Limetech (Currently version 6.6.0)
A Slackware Linux based OS. Runs from a 16GB USB drive attached to one of the internal USB 3.0 headers. Whole OS is loaded into RAM at boot up and remains there so fast read/write performance of OS drive is not needed. Supported by regular updates and a friendly forum. 3 tiers available dependent on number of drives attached to storage array. Could have got away with Basic tier with this configuration but I will likely add other drives to array later, which would need an upgrade at that time. I chose unRAID over other NAS/Server OS's such as freeNAS or OMV, as I wanted easy Docker container implementation and the ability to expand my protected array a drive at a time, which is not possible using solutions such as zfs in freeNAS.
Under unRAID the storage array uses a dedicated parity drive (or 2) and the remaining drives are used for storage. Though this sounds similar to RAID 5 or 6, the parity and files are not distributed so files are written to individual drives rather than across multiple drives. This results in slower writes than a RAID 5 or 6 array but has the advantage of being able to recover some of your data should the array completely fail and you can expand the array a drive at a time.
OpenVPN Server- VPN server set up so that I can connect to home network computers from external connections using a secure connection
Lets-encrypt - Reverse proxy, SSL certificate management, nginx webserver - used to provide external access to my home Nextcloud server, and a website should I decide to host one.
Nextcloud - software similar to Dropbox or Google Drive, with the files hosted on my home server rather than some DataCentre. App on my phone, laptop, and desktop to enable access but can access via any web connected computer using HTTPS connection.
MakeMKV - enables ripping of DVD's and BluRay's. Creates MKV files from the disks Handbrake - Software that enable me to transcode my MKV's into compressed format files using H264 or H265
DelugeVPN - BitTorrent client with VPN tunnel and proxy server. Configured to run through my NordVPN account using OpenVPN config files, and all computers on my network connect to the internet via the proxy server to provide the protection of the VPN tunnel.
Sabnzbd - Usenet client
Sonarr - TV Show Database/Manager
Radarr - Movie Database/Manager
Plex Media Server - Media Server providing media services to Plex clients on network, ie Smart TV, computers, and FireTV's
Heimdall - Easily configurable WebGUI to provide easy access to all the docker interfaces with implementation of your preferred search engine
Possible future plans:
Transfer to a rackmount case and expansion of storage array to > 8 drives
Additional of an NVME drive and higher end graphics card, passed through to a VM, to run as main desktop computer as well as server duties
Adding additional functionality as part of a home automation server using Z-wave adapter
Adding CCTV cameras to house and using server as surveillance server using UnifiNVR docker container