Building a Budget Storage Server from Argentina

Building a Budget Storage Server from Argentina
Photo by Jandira Sonnendeck / Unsplash

In a previous post, I shared how I tried to replace my 2013 Synology DS213 that had stopped receiving software updates. I experimented with OpenMediaVault on a  Raspberry Pi and even on an Intel NUC. After playing around with these options and facing some difficulties, I decided to take the plunge and build a server with TrueNAS.

In this post, I want to share my goal, how I decided which parts to use, and how my first TrueNAS server has been performing after a few months of use.

Considerations and Limitations

My absolute priority is data redundancy—minimizing the possibility of unintentional and permanent data loss.

What's Not a Priority?

  • Data access or write speed.
  • Uptime of any service using the storage.

While these aren't priorities, that doesn't mean they aren't important at some point—especially if they impact the completion of backups. For instance, if the speed is so slow that backups never finish, it affects the redundancy of data that hasn't been backed up yet. The same applies if the server can't be accessed to restore a backup or if the speed is too slow to do it in a reasonable time.

To achieve redundancy, the plan is to comply with the 3-2-1 Backup Rule as quickly and cheaply as possible.

The 3, 2, 1 Backup Rule explains that you must have at all times at least 3 copies of your data, in at least 2 devices and 1 of those copies must be in a separate physical location than the rest. I'll dig deeper into the nuances of this rule in a later post.

Why the rush? Because every moment not following the 3-2-1 Backup Rule puts us at risk of losing irreplaceable data.

Why as cheaply as possible? Beyond avoiding unnecessary expenses, this restriction also aims to prevent investing in an overly powerful system, as it's not needed for the defined priorities. Having a server that can occasionally receive backup updates and restore them with relative speed is enough. For this, there's no need for next-gen processors, high-end graphics cards, or 2.5Gbps network connections.

Component Selection

After all these considerations, I set out to prepare the first iteration of my first backup server. Let's see how I chose the initial components. Prices shown below were converted to the approximate price in 💵 USD at the time of purchase in Argentina.

Motherboard and CPU

After exploring the available options on Mercado Libre and analyzing price and energy consumption differences, I decided on the Intel Socket LGA1200 platform with an Intel Celeron processor. This decision allowed me to save money but without going back to generations that consumed twice the energy.

I found an "outlet" motherboard on Mercado Libre. I had never heard that term, but it seems to be used for refurbished products. The Mercado Libre account seemed to sell several units of this type with a good reputation, so I went for it.

The motherboard in question is a Gigabyte H410M H DDR4 Intel Socket 1200 10th Gen. It offers 4 SATA ports, an M.2 NVMe slot, and up to 64GB of RAM.

💰 Cost: USD 55

Having 4 SATA ports will allow me to install TrueNAS on the NVMe and use up to 4 storage drives in the future, supporting RAIDZ1 or even RAIDZ2.

As for the processor: an Intel Celeron G5905 BX80701G5905 with 2 cores and a 3.5GHz frequency with integrated graphics. It provides 2 threads and low power consumption. Again, since the goal is only backups and not speed for running any intensive processes, it's more than enough.

💰 Cost: USD 65

RAM

16GB RAM: 2 x Basics Gamer Color Green 8GB Crucial CB8GU4800. This seemed to me the minimum acceptable amount for a TrueNAS system with the amount of storage I plan to have for now.

💰 Cost: USD 48

Storage

I reused the two drives I was using in the Synology: 2 x 3TB WD RED. These took up 2 of the 4 available SATA ports.

To save SATA ports for future upgrades, I looked for a small NVMe drive to install TrueNAS, allowing me to use 4 drives in total for storage later.

I found a listing selling NVMe drives extracted from new laptops that had been upgraded with other drives, so they were selling the factory-installed ones. I bought one: SSD M.2 PCIe NVMe Kingston 128GB 2280.

💰 Cost: USD 14

Power Supply and Case

I reused both from an old computer I built in 2008: a Vitsuba Master case and a CoolerMaster V1000 PSU. The power supply is completely overkill for this project, but since I had it lying around, it seemed more efficient to use it rather than buying a new one.

The total cost, excluding the components I already had, was USD 182 💰.

Configuration

I won't go into details on how to install TrueNAS here; I'll just mention that I decided to install TrueNAS bare metal without virtualizing it. The decision was mainly because the hardware was chosen to run only TrueNAS, so there was no point in the overhead of maintaining a virtual environment and the extra resource consumption.

I only had 2 drives for storage, so I had no options other than configuring them in a stripe or mirror. Since I still don't have a backup system for the server itself, I once again prioritized redundancy and chose the mirror configuration. This way, the system can tolerate one drive failure without losing data. This is important since the drives are 10 years old.

The situation isn't ideal, it's risky, and "RAID is not a backup." But it's the first step, and it's what I have for now. I used to back up the Synology to an external USB drive (a Seagate 2TB Backup Plus Slim), but I've already had two of those break. The next step is building a second server to back up this one.

Experience

I'm writing this post 8 months after building the server, so let's analyze the results.

The original plan was to create a dataset to back up from my laptop via TimeMachine. Over time, I started exploring Immich to back up and manage photos and videos. I didn't install Immich on this machine but on my Proxmox server, connecting it via SMB to a dataset in TrueNAS that serves as storage for Immich over the network.

Without performing any stress tests, since that's not the goal of this server, I can say it fulfills both tasks adequately. The CPU doesn't seem to be stressed in the slightest, and none of the tasks it has to handle appear to be degraded.

Successfully meeting the goal of enabling backups while also serving as storage for Immich, I'm satisfied with this server, and it's time to focus on building the second one before disaster strikes.