(2018) Building a media and storage server with TrueNAS Core

I have built this TrueNAS Core (aka FreeNAS) server in 2018 and this post details some of my thoughts on the matter.

What, Why TrueNAS Core?

TrueNAS Core is a free and open source storage software that offers the ability to use ZFS and start virtual machines and jails (containers). TrueNAS Core is built on top of FreeBSD and the virtual machines are handled via Bhyve.

Network Shares

TrueNAS Core offers an “easy” and “cheap” way to build a network-attached storage (NAS). A NAS allows you to store files on the device and access them with ANY device that are connected to your home network. The picture above shows the network shares which I can access via Windows – note the large storage space!

Benefits include:

  • Good read/write performance (as compared to a Synology model or Unraid)
  • ZFS filesystem – data integrity, parity data to guard against drive failures, data compression
  • In-built sharing services – e.g. Samba, NFS, WebDAV, iSCSI, AFP
  • In-built access controls – e.g. you are able to whitelist or blacklist ips that can access your network shares
  • In-built cloud sync – e.g. I’ve set my server to backup important data to Backblaze, a cheap data storage provider
  • Easy one-click (or one command line) Jails & VMs
  • Plugins for popular applications

Disadvantages include:

  • ZFS volume cannot be easily expanded (in my case, I have bought 8 6TB drives. If I want to increase the capacity to 8TB drives, I need to replace ALL 8 drives.)
  • Nerve-wrecking updates (people has reported issues with certain updates in the past year, i.e. buggy updates. To be on the safe side, I will wait 1 to 2 weeks before updating to ensure that no critical bugs are present)
  • Immature virtualisation (Bhyve is not as fleshed out as the other Type-1 hypervisors. I will be building a Proxmox server to keep my VMs)

Equipment List

  • CPU: Intel Xeon Processor E3 1245 v5 (USD$293.99)
  • Motherboard: ASRock Rack Motherboard E3C236D4U (USD$269.99)
  • RAM: 4 x Kingston Technology ValueRAM 16GB 2133  MHz  DDR4 ECC KVR21E15D8/16 (USD$194.00 x 4)
  • Hard drives: 1 x WD Red 6 TB (USD$212.48), 7 x Seagate Ironwolf 6 TB (USD$189.79 x 7)
  • SSD: Samsung 960 EVO 250GB NVMe M.2 (USD$141.95)
  • SSD: Samsung 970 EVO 1 TB NVMe M.2 ($206.68, 30/11/2019)
  • PCIe SSD Expander: SilverStone Technology M.2 M Key PCIe NVMe Adapter to PCIe X4 with Integrated Heatsink SST-ECM24 (SGD$56.94, 30/10/2019)
  • Flash drives: 2 x Samsung 32 USB 3.0 (USD$13.99 x 2)
  • Power supply: Corsair 750W 80 Plus Platinum (USD129.99)
  • CPU Cooler: Cooler Master Hyper 212 Evo (USD$29.99)
  • Case Fans: Artic F12 value pack (USD$24.59)

I have opted to use ECC ram for greater system stability, but they are so expensive!

Jails on the system

Currently, I am running the following applications as jails:

  1. Jackett
  2. Plex
  3. Radarr
  4. Sonarr
  5. Tautulli
  6. Transmission
  7. Syncthing
  8. WordPress (for home wiki)

Jails #1 to #6 served as the media automation system – it automatically finds and download relevant items.

Jail #7 allows syncing between devices (e.g. mobile phones, windows PCs) with specific folders on the NAS.

VMs on the system

There are certain applications which are not suitable to run in jails or cannot run in FreeBSD. In this case, there will be installed in VMs:

  1. Calibre
  2. MotionEye
  3. Unifi Video
  4. H265ize

VM #1 serve as the “news-downloader”. It is able to download articles from RSS feeds and send the resulting .mobi file to my Kindle automatically. I have set Calibre to download Channel NewsAsia every morning so that I can read the day’s news on my Kindle.

VM #2 monitors the camera feed from my raspberry pi-camera and send motion notifications to my email.

VM #3 monitors the camera feed from my “baby monitor” – G3 Flex and records/logs all motion events.

VM #4 compresses all video files to the H265 (HEVC) standard to conserve space on my NAS.

Future Plans / Wishlist

  • Set up a Proxmox server and shifts VMs to this server (in particular, set up VMs for Ethereum 2 staking)
  • Set up more TrueNAS core servers (at my parents’ homes) for redundancy and backup purposes

Spread the word:

A novice baker =)

Leave a Comment