
My TrueNAS custom NAS build (2025)
Table of contents
Since years I have an off-the-shelf NAS and always wanted to build my own. I wanted somthing I control myself, I am independent from any vendor support, something I can modify to my needs. So I build a rather old-skool NAS 6 months ago.
So, why is this old-skool? Well, considering the hardware it is old-skool, as it only uses old hardware, that was new 5-8 years ago. Taking into account my requirements together with the hardware it is a perfect match (for me). After I built this NAS I value older (and thus cheaper) hardware a lot more, than I did before. I understood, that a lot of newer hardware produced, is often totally overkill for me and my use-cases.
Design goals
I use my NAS for mainly the following tasks:
- Backups
- Storing photos and important documents in combination with paperless-ngx
- Storing backups from my K8s Longhorn volumes
- Media streaming: I stream music and music with jellyfin to all my devices
Regarding the backups, there is no need for a hardware RAID aka RAID controller as I will use software for this. With that I am free to choose which RAID level I need whenever time for an upgrade has come.
For the streaming part, I need to make sure the hardware is capable of doing transcoding properly.
Further requirements:
- Energy efficiency: My NAS runs quite some hours per day, so it needs to be somehow energy efficient to not spent tons of money. I had the goal of 25W tops.
- Off-the-shelf hardware: I want some basic hardware, can be 3-5 years old, something that is always available in hardware shops around the corner, or on Ebay.
- Minimal costs: I had the limit of 300 EUR tops without hard disks and I almost did all the searching for parts on Ebay or the German Kleinanzeigen.
- Silence: The NAS is placed in my office at home and not in some closet or basement. So I work all day next to it, that is why it needs to be as silent as it can be.
These requirements narrow down the decisions regarding the hardware a lot, but still leave plenty of parts to select from.
Best hardware?
To check which parts fit together I used pcpartpicker.com. You get a rough idea about the costs and I cannot match incompatible parts. That is already a huge help of getting a first idea of the system.
Components
Case
Fractal Node 304: 79 EUR, new
Why?
It jsut looks super slick. I need to admit it is not as big as it probably should be. It can carry up to 6 disk, or
as much as you mainboard can control. I am with 2 SSDs and 2 HDDs right now and the case inside is pretty packed.
Still enough, that the air can properly flow, but…
This is just a small complaint. In general I am very happy with the choice.
CPU
Intel i3-9100: 30 EUR, used
Why?
This is a good mix of a cheap part and still enough power for my requirements - transcoding. The CPU has an integrated
graphics card, the Intel UHD Graphics 630b. This helps with two things:
- no extra graphics card needed, which resolves in a lower energy consumption
- enough power to do transcoding for one stream (maybe two as well)
The i3 is mostly idle and when doing transcoding it runs at around 30% including the OS. I think, never tested, I could transcode 2 streams in parallel, but will give some more insights on this when tested.
With the CPU I use the Noctua NH-U12S. Very very silent and keeps the temperature low.
RAM
Corsair Vengeance, DDR4: 45 EUR, new
Why?
When building the NAS, I wasn’t able to fully grasp how much RAM the system would need. So I went with the better safe
than sorry approach and put 32GB (2x16GB modules) inside. The speed of the RAM is neclectable, it just needs to be enough.
I late found out, that probably 16GB would also be way enough, as the current built only consumes roughly 4GB.
Mainboard
ASUS Prime H310I-Plus R2.0, LGA 1151, 65 EUR, used
Why?
I wanted a cheap mainboard, hopefully without Wifi and all the cr*p, but got this. No special preference for this,
it just works. One important thing was, that it support WOL (Wake-on-LAN)
so I can put the NAS asleep over night and put it back on without touching it.
PSU
Corsair RM650x: 60 EUR, used
Why?
The PSU has active cooling (fan) but it start at around 200W+. So the fan of never starts, as my NAS only consumes 60W
maximum when under load. An even lower wattage, f. ex. 450W, would have also be sufficient, but it was hard to get
preffered PSU without spending a ton of money on it.
Disks
I run separate disks for system and storage.
- Storage: 2x WD Red Plus 3.5", 8TB
- OS (system): 1x KINGSTON SSD SNVP325S2, 64GB
- Apps (system): 1x Samsung SSD 850 EVO, 250GB
The storage is in RAID 1 (Mirror) mode, as data safety is most crucial for my needs.
Power Usage
With the above mentioned configuration I get these wattages:
- idle: 25W
- load: 65W
I consider these pretty good and I am happy I can run my NAS for several hours per day without needing to spend a liver to pay electricity.
Operating System: TrueNAS
As Operating System I went for TrueNAS. I also had a quick look at Unraid but went with TrueNAS in the end. I cannot tell why exactly TrueNAS convinced me more.
I needed a system, that manages the RAID and storage in general, plus gives me a freedom to set up shares (SMB/NFS) and let me run some custom software via Docker, when needed. TrueNAS handles all of this very well, without much effort. Updates went smooth all the time.
Additional to the backup/storage functionality I run:
- Jellyfin media server
- Garage S3 API server (similar to Minio, but still maintained1)
- Netbird VPN to access my files from everywhere
Setting up users and shares is easily done via the UI, and also starting additional apps and containers runs stable and without any effort.
I run some data scrubbing tasks to keep my storage error-free for hopefully a long time. There is a lot more tasks you can set up in TrueNAS to keep Data Protection high. Cloud Syncs, periodic snapshots or replications tasks - a nice UI provides with an easy setup.
Netbird VPN
Netbird VPN is no default app, that can be pulled via TrueNAS own marketplace or community. Instead you need to create a little Docker Compose script.
Via Discover > Install via YAML (hidden by the three dots symbol), you can enter this compose.yml:
| |
With this snippet, an Netbird client launches and your TrueNAS instance is available inside your Netbird VPN.
ZFS Storage & Datasets
I run unencrypted ZFS storage with multiple datasets. Datasets are like a structure of the data stored, f. ex. music, movies, documents and so on. For each dataset you can set up share, NFS or SMB, to be mounted across your network.
All datasets have these properties:
- Compression: LZ4
- Disabled
atime: do not set access time per file - Case sensitivity on
- ZFS deduplication: this is something I need to think about. It is only RAM-intensive, but I have plenty of free RAM
All datasets share the same amount of storage. I just monitor manually which dataset takes how much space and get a notification from TrueNAS when the storage hits critical levels.
Network
My NAS gets a static DHCP lease assigned by my router. I found networking a lot easier, when devices with central functionality have static IPs.
As I power off my NAS overnight and want to automatically power it on during the day, I need WOL properly working.
Although the mainboard supports WOL functionality, the onboard NIC does not seem to have working WOL functionality.
I ran ethtool enp3s0 and was presented with a Wake-On: d, which means Wake-on-LAN is disabled2.
I configured WOL via ethtool but needed to make sure it survives a reboot. A small service, /etc/systemd/system/wol.service,
now takes care of that.
| |
With that my NAS supports WOL and I can use one of my other servers to power on the nas. For that I use etherwake and run it was cronjob somewhere to power on my NAS at a specific time.
Minio dropped the building and support of Docker images. Besides that, there is an ongoing severe security issue https://github.com/minio/minio/issues/21647 ↩︎
More information about Wake-on-LAN https://wiki.archlinux.org/title/Wake-on-LAN ↩︎

