To build our DIY multi-tenant, multi-client “cloud” backup solution we’re going to need a “server” and storage. I use the term server loosely because this is anything but serve grade hardware. But since it serves the purpose of holding home backups and nothing else, it also needs to be cost effective. I believe I have found the right middle-ground in that, creating a “fast enough” setup which is also cheap enough to run.
This post is part of a multi-part article. You can find the main index here
True server hardware, it is not
We need to have a remote server that is available 24Hr a day. But what is available and what are the things to take into account?
True server grade hardware?
I work with real server hardware in my professional work daily and while those machines are great, they are most certainly not cost, power or even noise efficient for home usage.
Desktop grade hardware?
So, next up would be desktop hardware. But even the cost of a decent CPU can run you upward of 200$, not to mention everything else you need such as a motherboard, memory, a CPU, case, etc.. So even that hardware, would be quite a big investment, even while keeping it cheap!
Getting closer but we won’t be able to match cloud costs easily with this still, can we get something decent cheaper?
Old hardware you might still have?
Old hardware? Sure, that can be used but it needs to have at least one USB3 port for how I intend to use it. But since this machine will be on 24Hr a day, power usage plays an important role. Here in the Netherlands we pay about 20 cents for 1 kWh.
A setup that uses 25 watt on average costs 43,80 euro to run here in the Netherlands. Running a machine that consumes 100 watt will cost you 175 euro per year.
Running an older server for one year is almost more expensive then a whole new mini-PC! So don’t overlook the fact of power usage.
Raspberry Pi or ARM?
I guess it could work, all the software can be compiled so should be available. But performance and functionality will definitely be limited. If you are looking at storing anything more then a few GB, I would look at buying something more powerful.
Buying a new Mini-PC
So I started looking at a relatively new mini-PC’s based on the Intel Apollo Lake architecture. This architecture is now available in mini PC’s in the form of quite affordable low-power 64Bit Quad-Core CPU’s which have at least a reasonable amount of computational power.
These are basically the same PC with a few little differences. The PCG03 Apo comes with the following:
- An Apollo Lake 64Bit Quad-Core CPU
- 4GB DDR3 memory
- 32GB eMMC “SSD”
- Empty M.2 SSD slot
- SDcard slot
- 3xUSB3.0 + 1xUSB3.0 Type C
- Built-in Intel HD Graphics 500
- 1x HDMI + 1x D-Sub/VGA
- Realtek Gigabit LAN
- Intel 802.11ac WiFi, Bluetooth4.0
- Fanless cooling design
- I will be testing how well this performs and if adding a simple fan might be a good idea or isn’t needed
- Comes with Windows 10 Home edition
The PCG35 Apo has the following extra features:
- Upgraded CPU running at 1.5Ghz to 2.3Ghz instead of 1.1Ghz to 2.2Ghz
- Slightly faster GPU clock
- 2.5″ Slot inside of the chassis for HDD/SSD
I currently have not yet received this hardware but from testing in my virtual environment with a single core, performance should be more then sufficient! I have ordered the more powerfull PCG35 because I want to test the hardware for some alternate purposes also.
Windows or Linux?
Actually, the amount of memory (4GB) and 32GB eMMC are perfectly suited for running a little Linux box. With windows that it comes installed with (it can be used in this setup) you only have 9GB of free space which is a bit tiny. During my testing my root partition in Linux used around 5GB of space with everything installed leaving you with 27GB of free space.
Partially why this low-end hardware is sufficient is because of how the setup works. A lot of work such as deduplication and compression is done on the client so this little server only needs to ingest and hold the data, no processing needed!
But we need storage, and lots of it!
So the above hardware facilitates in everything our “server” needs, except for storage. But these little boxes don’t offer any way of adding (much) internal storage.
So the next part of the plan is adding USB storage. A while back I picked up an ORICO 9558U3, this is an external USB3 5-bay disk enclosure. It has no other features (such as RAID or cloning or whatever) besides presenting 5 disks to the OS through a SATA/AHCI-to-USB3 bridge, perfect for our needs and it works well in Windows or Linux.
But it’s USB!
Yes, but decently built. The chassis uses a built-in Jmicron controller and has a built-in cooling fan, tool-less disk trays with lock and an included beefy external power adapter.
I have been using one of these for a few months already and so far it’s been perfectly stable and with 5 disks it gives me about 200MB/sec to 300MB/sec of sustained transfer speeds, perfect for our application. Especially since our “backup server” will be behind a residential internet connection which won’t have that much bandwith anyway.
Combined, these two components form a “just add disks” setup. Looking at the costs so far we have ~160$ for the “server” and ~150$ for the external storage cabinet making a total of just a bit over 300$!
I challenge you to find anything remotely close to that price provinding the same functionality and performance!
Just add disks?
Yes, just add disks! But this is also where things get a bit more complicated or rather, custom per setup. As I mentioned previously, this hardware should have no problem addressing multiple tens of terabytes of data since it’s only running the storage back-end, scaling is no issue.
For myself, I’m looking at getting several 10TB disks. I favor the Seagate IronWolf (Helium version) series, but for more information about which disks to use, check the next article. There I will also discuss the different configurations you can build. There is several different paths you can take which will require different amounts of disks depending on need and features desired.