mnnpr

NAS / Home Server Setup

For the past few years I{{content}}#x2019;ve wanted a small home server to store data, run some self-hosted services and generally have more control over my own infrastructure. Cloud services are convenient, but I prefer owning the hardware and the data whenever possible.

So I finally built a small NAS / home server that sits quietly in the corner of my room and runs 24/7.

nas

The build itself is intentionally simple and power efficient. I didn{{content}}#x2019;t want anything complicated or noisy {{content}}#x2014; just something reliable that can store data and run a few containers.

The motherboard I{{content}}#x2019;m using is the Topton N100 NAS board, which I had to import from China. It comes with an Intel N100 CPU and, most importantly, six SATA ports directly on the board which is rare for low-power mini-ITX systems. It also has 2 M.2 ports, one of which can be extended to have an additional 6 SATA ports which is insane!

For the case I went with the Fractal Design Node 304. It{{content}}#x2019;s a compact mini-ITX case specifically designed for NAS builds and can hold up to six 3.5{{content}}#x201D; HDDs while still having room for a full-sized PSU, which makes the build much easier compared to cases that require SFX power supplies.

Full hardware summary:

The N100 is extremely power efficient while still being more than powerful enough for NAS workloads and a handful of containers.


Storage

For the OS I{{content}}#x2019;m running TrueNAS Core[2], mainly because it provides a clean interface for managing ZFS and requires very little maintenance.

My storage pool is a ZFS RAIDZ1 (similar to RAID5) built from the four 2TB WD Red drives. This gives me redundancy against a single disk failure while still keeping reasonable usable capacity.

nas

ZFS brings a lot of nice features out of the box:

It{{content}}#x2019;s probably overkill for a small home server, but it{{content}}#x2019;s extremely reliable and well tested.


Backups

Even with redundancy, RAID is not a backup.

All important data from the NAS is backed up to Backblaze B2[3]. This ensures that even in the worst case scenario (disk failure, filesystem corruption, house burning down, etc.), the data still exists somewhere else.

The backup jobs run periodically and only sync the datasets that actually matter.


Self-Hosted Applications

The NAS also runs a bunch of services that I prefer hosting myself.

Instead of using the TrueNAS app system, I simply run everything with Docker Compose. My full setup is available on my git repo[1].

All application data is stored in docker volumes, and those volumes are backed up to Backblaze B2 separately as well.

The services I currently host are:

nas

Most of these services are fairly lightweight, so the N100 handles them easily.


Remote Access

I don{{content}}#x2019;t expose any of these services directly to the internet.

Instead I run a self-hosted Headscale server[4], which provides a mesh VPN similar to Tailscale. All my devices join the network and can securely access the NAS from anywhere.

This keeps things simple:

Everything just works once the device joins the mesh network.


Sources:


comments and questions can be left here