HomeLab FreeNAS Setup
Really this is all the fault of the sysadmin in my work. He introduced me to the HomeLab subreddit. Up until now I’d been content to think that I was nuts to run a server at home for my own projects. “Just use the cloud”, people tell me; the same people who moan when GitLab gets taken out by a DDOS attack from China, or when various middle-eastern countries get blocked due to US sanctions.
Running your own system comes with a fair share of pros and cons, but that’s not what this article is about. After all I’ve been running my own server at home since around 2012, a Gen7 HP Proliant Microserver. A few years ago I upgraded to an HP Proliant ML10v2, which I was able to stuff with cheap parts from ebay to get a pretty decent server. The microserver had a brief adventure as an off-site backup until Crashplan pulled the home version of their product; since then, it’s been sitting in a cupboard gathering dust.
This changed when I was worrying about backups for the ML10v2. It runs VMWare ESXI free, so I don’t have the ability to do full VM-based backups. So I need to backup the data for each VM, along with my main computer and ideally from some other devices (e.g. mobile phones). Any solution I come up with has to be flexible and powerful. Ideally what I want is off-site, but setting everything up on every system looked to be very expensive. I want to keep costs low and make it as easy as possible to add things to the backup system.
Adding a NAS to my network seemed to solve the problem. Everything could back up their own data to the NAS, and the NAS could (in theory) back up everything to the cloud. Then I get local backups for speed, and if there’s a catastrophe that destroys everything locally (like a fire) then everything can be retrieved from the cloud. I could see this being automated and there’s lots of consumer-friendly apps that can support this.
It was a great idea until I started pricing it all up. A good NAS was looking like it would cost me around £150 without any hard drives in it, so maybe £210 or so fully kitted out. I’d also have to do some research to figure out what feature sets each NAS would support, and what cloud services I’d be locked into using. Many of the NAS‘ that I looked at backed up the cloud, but only to their own proprietary system, rather than something like Amazon S3.
I discovered FreeNAS, which seemed like it would resolve a lot of these problems, but I needed something to run it on. I wasn’t going to run it on the ML10v2, obviously. FreeNAS Mini is an ‘official’ product designed to run FreeNAS, but they’re pricier than most off-the-shelf NAS solutions, so that was out. Then I remembered my little HP Proliant Microserver sitting in a cupboard, and I wondered if it had one last adventure left it in.

Specs, Parts and Plans
Let’s start with the specs for FreeNAS. At the time of writing, those specs are:
- Multicore 64-bit processor;
- 8 GB or larger boot drive;
- 8 GB RAM;
- One Ethernet network port;
- At least one hard disk for storage.
On paper, not so bad at all. However, there were a couple of things to take into consideration.
8 GB of RAM is the absolute minimum requirement. 1 GB per terabyte of storage is a standard starting point for calculating additional RAM needs, although actual needs vary. ECC RAM is strongly recommended.
Server memory is normally registered (RDIMM), but lower-end systems like the ones I can afford often support unregistered memory (UDIMM). Glossing over the details, registered memory has a control chip with a buffer between the memory and the system. Unregistered memory doesn’t have this - making it theoretically faster. It’s not possible to mix and match, but with UDIMM I have the option to put in ECC or Non-ECC memory. ECC provides additional stability, but it comes at a cost. Specifically, ECC UDIMMS are pretty uncommon, and as a result can be expensive. I knew my microserver was fully loaded with 8GB of Non-ECC memory as it was all I could afford.
So the question is, do I need ECC memory? Well it turns out that FreeNAS uses a file system called ZFS, which brings a bunch of advantages in speed and error correction. One of the clever things about ZFS is that it builds up a cache in memory using an algorithm called Adaptive Replacement Cache (ARC). The problem is that ZFS assumes that the cache is protected against faults. If a fault develops in the cache then data can become corrupt. This is where ECC memory comes in, which uses an extra memory chip to store checksums for the data held in memory. This provides pretty good detection (and repair!) of data held in memory, which helps to prevent faults. If I want to use ZFS and FreeNAS, I should therefore be running it on ECC memory.
The CPU requirement is a bit unclear, as it only specifies a 64-bit CPU (although “Intel processors are strongly recommended”). I actually couldn’t remember anything about the CPU in the microserver. I knew it was a HP Proliant Microserver Gen7, which I bought for cheap using a mail-in rebate program that one of my students told me about. That dates the system to maybe 2011-2013. Oddly enough, there’s no indications on the system itself that I could find to tell me what it was: no asset tag, and HP’s website didn’t recognise the serial number. Googling revealed that there were only a few variants of this system, and the highest-end one rang a bell: the Proliant N54L.
Looking over the spec sheet revealed the N54L has an AMD Turion Neo N54L processor in it. It’s a 64-bit dual core system that runs at 2.2GHz with a 1MB L2 cache per core. This doesn’t seem too bad, and after some digging I found that base FreeNAS actually doesn’t require a lot in the way of CPU power, so it should be fine. That is, it would be fine if I had an N54L, but when I plugged a screen in and booted the system I discovered I actually had the N36L model. The AMD Athlon II Neo N36L is a 64-bit dual core CPU running at 1.3GHz with the same 1MB of L2 cache per core. This is a much less powerful processor.
I had serious concerns at this point that the whole thing wouldn’t work, as the maximum load-out for this system just met the minimum requirements. I didn’t want to purchase hardware if it wasn’t going to work. I decided to do a dry-run install using some hardware I currently had. This led me to another interesting quirk of FreeNAS: the boot drive.
Boot Device: 8 GiB is the absolute minimum. 16 GiB is recommended. SSDs, SATADOMs, or USB sticks can be used for boot devices. SSDs are recommended.
Like most people would, I immediately chuckled at the idea of putting a boot drive onto a USB stick. Imagine my surprise when scouring the forums do discover that everyone seemed to be doing it. Not only that, but they were talking about redundant USB sticks! After some digging it turned out that FreeNAS really doesn’t need much for a boot drive. In fact, it seems like the only things really stored on the boot drive are the OS and configuration files. At runtime, the entire OS is loaded into memory, and writes back to the boot drive only happen when the configuration changes. I had originally earmarked a 120GB SSD as a boot drive, but it seems like there would be little benefit in doing this. So I decided to proceed with a USB stick.
Installing FreeNAS to a USB stick is an interesting process. Essentially you download the ISO from the FreeNAS website, create a VM in something like Virtual Box, pass-through the USB to the VM, then mount the ISO as a boot drive. It sounds complicated but it turned out to be a pretty easy and fast process.
The N36L has an internal USB 2.0 port, so I stuck the USB stick in there, mounted a single HDD, and booted the system. Without any warnings or issues, it completed its boot-up sequence… and just worked. At this point I was pretty happy that this old system would be able to run FreeNAS for my relatively modest needs. Along with the parts I needed to get it working, I also placed an order for new cooling fans for the PSU and Case to reduce the background noise.
Part | Price |
---|---|
2*4GB DDR3 PC3-10600 ECC UDIMM | £27.12 |
SanDisk Ultra 16 GB USB Flash Drive USB 3.0 | £5.22 |
Noctua NF-A4x20 PWM, Premium Quiet Fan, 4-Pin (40x20mm) | £12.85 |
Noctua NF-P12 redux-1700 PWM, 4-Pin (120mm) | £12.50 |
Seagate ST2000VN004 2TB IronWolf (5900RPM, 64MB Cache) | £68.99 |
TOTAL | £126.68 |
From Nada to NAS
When all the parts had arrived, I was ready to rock and roll. I was pretty surprised by what felt like an excessive amount of packaging for the 40mm Noctua, but I was very impressed with the range of adaptors and parts it came with. Clearly they understood that a 40mm fan can have a broad range of applications and they’d made sure that it was ready for that. I ended up using pretty much all the adaptors, as you’ll see below. The larger Noctua came in a pretty standard folding box, but the fan itself looked fantastic - hopefully worth the premium.

The RAM was easy enough to check over and install. I had some concerns about it because it had arrived in a bubble-wrapped envelope rather than a box, but it didn’t look like there was any damage. During the install I cleaned the dust off the motherboard and its surroundings and made sure everything was clean and ready to rock.

Then I moved on to the PSU. I had some concerns here. According to a forum post I’d found when shopping for fans, the original fan itself is 12v rated but it is usually only provided around 4.7v. This is pretty unusual, because many 12v fans won’t be able to spin up at all with such a low voltage. In fact, another post by someone doing the same project ran into exactly that problem. Noctua actually make a 12v and a 5v variant of this fan, both around the same price, but the 5v version carried a big warning that said “running this fan at 12v will damage it”. As the original fan was 12v, I didn’t want to install a 5v fan in its place and trust that it would always run at around 5v. Balancing the risks, I opted for the 12v fan with a plan to run it from a 12v power line if it wouldn’t spin up normally.
Installing the fan directly wasn’t too hard, because Noctua had provided a little female 3 pin connector that could be attached to any set of power cables with some push and press connectors. These were pretty cool and easy to work with, and it didn’t take long at all to get the fan installed. Unfortunately my fears were realised when I powered up the system and it turned out the power to the fan was insufficient to get it to turn. After double-checking that the fan wasn’t being blocked by anything and that it was receiving power, I dismantled the PSU again and got to work on Plan B.


The backup plan was to run the fan off one of the molex power connectors in the case itself, and have the fan’s power cable hanging out of the PSU. It’s not going to be clean, but it would get the job done. This was done with a small range of adaptors. I found an old Molex fan splitter from my box of spares and plugged the fan in. In the back of my mind I was thinking that this would cause the fan to run at the full 12v, which is going to create a bunch of noise and would be overkill for this application. Then I remembered that Noctua sent an inline “silencing” adaptor for exactly this scenario, so I plugged that in and called it a day.
The 120mm cooling fan gave me similar concerns. I’m not going to lie here, I didn’t realise that I’d potentially made a mistake here until the part had arrived. I already knew I was going to have to rewire the fan’s pinout to connect it to the HP motherboard, but I’d forgotten one critical thing. The motherboard is going to be monitoring the fan’s RPM. On boot, it will check the fan speed and if it’s not high enough it will refuse to boot. I’d already ensured that the cooling performance in terms of static pressure etc. were comparable, but I had neglected to verify this. Unfortunately, it turned out that the Noctua’s speed is much lower than the stock fan: 3100 RPM for the stock fan and 1700 RPM for the Noctua. I wasn’t sure if the much lower speed would cause issues with the Motherboard. Using a diagram I’d found online I was able to pop out the Noctua’s 4-pin fan connector and swap it with the proprietary connector from the original case fan.

At this point all the hardware work done; PSU and case fans had been swapped out, RAM installed, system cleaned of dust, hard drive installed into the caddy and clipped into place. It was time to power it up. I pressed the button, lights came on… nothing. My heart sank. What had gone wrong? I turned the system around and discovered, to my surprise, the the fans were turning. It’s just so quiet when idle that I couldn’t hear it.


So I powered it down and installed FreeNAS on the new USB stick, put it into the internal USB slot, and cleaned up the cabling. Booted it to ensure everything was running and connected to FreeNAS over the network. It didn’t seem to be having any issues, but when I checked the hardware tab it reported that I only had 3GB of memory. I pulled the motherboard and inspected both sticks, verifying that both were 4GB, before restarting the system. This time on boot it showed the full 8GB, so I’m guessing one of the sticks wasn’t seated right in the slot. I’m not sure why it showed 3GB rather than 4GB, but it appears to be sorted.
So that’s how I build a FreeNAS box using an old microserver from around 2012.
