I have been running for years a small Linux box for various activities, such as recovering hard drives with bad sectors, hosting local source repositories, running a local DNS server, and so on. My original Linux installation went through many hardware upgrades over the years and eventually ran into end-of-life for the 32-bit Linux kernel. The time my Linux installation needed a bigger box.
Most of my Linux tasks are not CPU-intensive, so in the past I would recycle old hardware, but this time I decided that switching to 64-bit hardware deserves a quality upgrade and started looking for small PCs with good connectivity options. After researching this for a bit, I thought CompuLab's Fitlet3 will serve as the new home for my Linux setup, but it did not work out quite as well as I hoped.
Fitlet3
Fitlet3 seemed like a great solution because Compulab's website offered many configuration options to satisfy most of my requirements, one of which was to be able to use two SSD drives in the unit and was more difficult to find.
I ordered a Fitlet3 unit online and the first surprise was that I had to wait for a few months before Compulab ramped up production to build my order. Finally, my unit did arrive and its fan-less design looked weirdly attractive in my eyes.
The second unpleasant surprise came when I started installing Fedora - the network would work intermittently and soon it became clear that there is something wrong with the hardware. The unit wouldn't connect to the network after it was powered up, but then after rebooting it would connect most of the times. After communicating for a bit with Compulab, they didn't offer any solutions, so I decided to look for an alternative.
Compulab refunded the unit itself, but it was still quite an expensive experiment because the unit was shipped from the overseas and I lost the pricey customs fees and had to ship it back at my expense.
NUC12
I spent quite a bit of time researching other small PCs and they all came short in a variety of ways. Intel's NUC turned out to be the only one that had all the features I was looking for, but finding a retailer that would sell a configuration I wanted proved to be more of a challenge that one would expect. Most of the retailers sold single-drive configurations or offered limited configurations otherwise, online or in-store.
I almost gave up the idea of buying a small-factor PC, when I noticed that Intel Canada just listed NUC models, but Intel US actually had links to their Amazon store, where, much to my delight, I found a configuration that exceeded my expectations, and with a reasonable price tag under $400 USD.
Disappointingly, a couple of months later after I purchased my unit, in the summer of 2023, Intel stopped selling NUC kits via their Amazon store and instead now they direct people to a flashy but broken ASUS website that is supposed to sell NUC kits. Here's the page listing all NUC configurations, with the ASUS link. Note that the Price column is clickable and can be used to select good features for a reasonable price.
https://www.intel.com/content/www/us/en/products/details/nuc/kits/products.html
The unit described in this blog post has a code NUC12WSHi3 and was originally available for a purchase via a link at the top of this page.
https://www.intel.com/content/www/us/en/products/sku/121617/intel-nuc-12-pro-kit-nuc12wshi3/specifications.html
NOTE: Intel removed all NUC pages, so the URLs above no longer work and have no meaningful redirects set up for them.
Inside NUC12
My original Linux configuration had a single system drive, backed up daily via dump onto an external hard drive. This backup came to the rescue a couple of times over the years, but this time I was looking for a way to avoid having to restore the entire installation from a backup, when possible, and wanted to set up the system drive as an LVM mirror, in addition to daily backups.
It was quite exciting to learn that not only NUC12WSHi3 was capable of running such configuration, but it also allowed to add a 2.5" drive that could be used for backups. This model is absolutely awesome for anyone who wants to keep data safe and to minimize the amount of time needed to recover from a single drive failure.
This is how NUC12WSHi3 looks on the inside. Careful when lifting the lid - that flat cable in the middle connecting the 2.5" drive does not appear to be detachable and will not allow the lid to be removed completely (I didn't try to yank it, though, to see if it's a flat connector).
For my purposes 16 GB of RAM was enough, so I filled in only one of the available two slots, and only with half of what it supports, but for memory-intensive configurations this little marvel can be configured with 64 GB of RAM.
The NVMe drive was easy to buy - even local stores carried them, but the small SATA drive in the middle proved to be quite a bit of a challenge to find. Amazon and Newegg carried brands that used variations of King in their names, which seemed like they were trying too hard to sound like Kingston, so I ended up buying a Transcend drive, which was the only alternative.
Storage Configuration
I used Red Hat distributions for many years, so I continued this trend and set up a Fedora Server 38. Much to my relief, after the Fitlet3 fiasco, Fedora Setup found the network without any problems and the rest of the installation went just as smoothly.
One thing that I had to spend some time on, was figuring out how to set up the system drive as a mirrored LVM volume. Fedora Setup offered confusing options of RAID and LVM and it took me a bit to realize that Fedora Setup offers RAID as an mdadm solution and LVM would be set up on top of an mdadm RAID. I didn't want to have to manage two mirroring solutions, but Fedora Setup didn't offer a configuration with a system volume set up as an LVM mirror.
After some experimentation, I decided to set the system drive as a single LVM volume via standard Fedora Setup configuration and then to add a mirror after the installation. This was a fairly simple operation that looked like this (omitting partitioning and physical volume initialization):
vgextend nuc /dev/nvme0n1p1
lvconvert --type raid1 --mirrors 1 /dev/nuc/root
In this example nuc is the volume group and root is the logical volume. The original LVM volume was set up on /dev/sda3, which was extended onto the NVMe drive and converted to a raid1 volume.
However, after configuring the system volume this way, the box stopped booting, with a cryptic error reported in the boot sequence. Booting in rescue mode worked as expected. It took me a bit to realize that I need to generate a new initramfs image, so LVM mirroring is loaded at boot time. I ran the command below and the box booted normally after this.
dracut --verbose --force
After this I set up xfsdump to capture full backups monthly and incremental backups to run daily, which worked well for me in the past.
Display challenges
There was one challenge that I ran into I still have not been able to resolve. I learned to live with it for the time being, but it is still on my list of things to figure out.
I use one 4K display to connect my Windows laptop via a DP cable and to NUC12 via an HDMI cable. After booting NUC12, everything works as normal and I can switch between Windows and NUC12 by switching display input from DP to HDMI and back. After a while, however, some sleep mode in NUC12 kicks in and switching display input to HDMI no longer shows NUC12 console. At this point I'm not sure if it is NUC12, Linux or my display.
Make sure to active SSH access or enable the web interface to manage the unit.
Final thoughts
Intel NUC12 is beautifully designed and solidly built. It will be an absolute delight to set up and use for anyone who wants to operate a physical Linux box. That is, if you can manage to find where to buy one, as Intel is not making it easy to purchase this little gem, which they worked so hard to design and manufacture.