Skip to main content

Home Server Part 3: Do it Right

After the frustrating experiences with hardware-related errors, I knew it was time to do it right. I went back to the drawing board and carefully reviewed the TrueNAS hardware guide, making sure to adhere to the recommended specifications this time. Although it meant spending more money, I was willing to pay the premium for a stable and reliable home server setup.

Final Hardware Configuration

  • Intel Core i5 9400F 6x 2.90GHz Socket 1151
  • Supermicro X11SCA-F Intel C246 So.1151 Dual Channel DDR ATX
  • 32GB G.Skill Fortis DDR4-2400 non-ECC memory (keeping my existing memory)
  • 450 Watts be quiet! Straight Power 11 Modular Power Supply

Storage

  • Boot Pool: 2x 120GB Crucial M4 SATA SSD
  • Bulk Storage Pool: 3x 8000GB WD Red Plus WD80EFAX
  • Fast Storage Pool: 2TB Samsung 970 Evo Plus M.2 2280 PCIe 3.0 x4 3D-NAND TLC

Building and Testing the Server

I assembled the new hardware, installed TrueNAS, and held my breath as I transferred my data once again. To my relief, this time everything worked flawlessly. There were no more errors during data transfers, and the system remained stable throughout.

Had I stuck to the recommended hardware from the beginning, I would have saved myself a lot of time and frustration. The experience taught me that using cutting-edge consumer-grade hardware with software designed for long-term stability is not a wise mix. It’s essential to choose hardware that is tried and tested, especially when setting up a critical data storage system like a home server. Trying the cool new hardware would have been more suitable to do for a workstation or when using an operating system that actually supports it.

With the new hardware in place, I set up my storage pools in TrueNAS:

The 3 hard drives were added to a single RAIDZ1 storage pool, providing a substantial 15TB of storage. RAIDZ1 offers data parity, allowing the pool to tolerate the failure of one drive without data loss.

I configured the 2TB NVME drive as a separate, super-fast storage pool using ZFS as well. This pool is reserved for virtual machines and jails, which often require local access to data, especially small files in virtual drives. The NVME drive’s low latency and high-speed performance handle this workload smoothly.

The large HDD storage pool serves as the repository for all my data. I implemented access control down to the filesystem level by adding datasets for every user. A ZFS dataset is a fundamental organizational unit used to manage and store data. It is a logical entity that represents a filesystem, providing a way to organize and store data in a hierarchical structure. Each dataset is independent, with its own set of properties, permissions, and space allocation.

Additionally, I set up Samba shares for each user’s directories. This allows for easy file access and sharing across my network. To ensure data protection and backup for my Macs, I enabled the timemachine feature specifically for a designated “backup” Samba share.

Performance and Versatility

I was extremely pleased with the overall performance this new system. With virtual machines and jails, I can now run a wide range of services, including Nextcloud, Pihole, Plex Media Server, Gitea, Jenkins, and PfSense as a router/firewall for all of these services. Even with multiple things running simultaneously, the server handles everything smoothly without any issues.

My journey to building the perfect home server was filled with challenges and valuable lessons. I’ve come to appreciate the significance of following hardware recommendations for stability and reliability. With my new, properly configured setup, I can now enjoy the convenience and peace of mind that comes with a robust home server. My data is much safer than before, and I have the power to run various services in my local network with the click of a button. So if you go for your own home server project, remember to do it right and choose hardware that aligns with your long-term goals. Even if that means choosing the boring solution sometimes.

DevOps