This is an old revision of the document!
The Simple Approach
This is how i started, and while it has it's limitations and possible issues, it's a perfectly valid self-hosted approach.
The basic idea is to stay cheap, save on hardware using something you already have available and adapting to it's limitations. My choice has been an older, but powerful, laptop which has quite a few advantages:
- Doesn't need an UPS, it has an integrated battery.
- It's fairly low-power, which is good for something on 24/7
- It doesn't need an additional monitor+keyboard for console access
- It uses little space (specially compared to a PC with monitor&keyboard)
- Can fit vertically behind furniture, if you don't have a place for your self-hosted rig
- Come with WiFi out of the box
But it also have some drawbacks:
- Limited storage space (usually one SDD or maybe one NVME and one SSD)
- Limited upgradeability CPU/RAM wise
- Louder fans under heavy load
- Usually one (or even none) internal network interface card
- An always plugged in battery will swallow over time and can be a fire hazard
Most of the drawbacks can be overcome with modern USB devices. Today's USB-C bandwidth, but even older USB 3.0 bandwidth, is more than enough to cater for your home needs. In fact, if you use WiFi, even the cheapest USB drive enclosure will be faster than that. If you have wired Ethernet at home, 1Gbps will still be faster than your mechanical drives, and USB will not be a bottleneck. If you have all SSD's over USB and a perfectly wired 10Gbps Ethernet cables and plugs, well, why cheap out on an older laptop then?
As a final word, this simpler approach works very well and might be all you need. The limitations come from the single point of failure that having only one piece of hardware implies: when it goes down, for hardware failure, software bugs or just maintenance, all of your home network will be offline. Your kids will be pestering you that their online-gaming is broken, their social media doesn't work, and your wife will be pissed off that the streamed movie doesn't work.
Storage
Let's focus. You need RAID storage, which means at very least two hard-drives (or SSDs) in RAID1. Better would be many devices on RAID6 or such, but let's stick with two RAID1 mirrors for the simple approach.
Assuming your laptop cannot host two drives internally, you need to buy an external device. Laptops nowadays only come with various USB connectors, so i will not talk about E-SATA or other connection types, but only USB. Those are also the less expensive, so it's a win-win for the simple approach.
A few key concepts to follow:
- Prefer USB-C over USB-3
- Don't go anything less than USB-3 (USB-2 and USB-1 are just too slow)
- Get a multi-disk enclosure (2 disks, or even better 4 disks)
- Get an externally powered enclosure, always
- Get a JBOD (Just a Bunch Of Disks), not a RAID enclosure
- Get a small UPS to keep those disks spinning on power loss
- Do not be cheap on this: get a reliable brand and model.
As i said above, USB-3 and USB-C are more than capable to sustain disk throughput and network loads, so USB will not be your bottleneck. but USB is quite unreliable, bot the protocol or bus itself, but the USB devices are usually low-quality. To ensure you have no issues over time, buy only reputable brands enclosures, do not save money on this item, and avoid RAID enclosures because i will be showing you how to leverage Linux built-in software raid, and JBOD enclosures have a better quality/price ratio.
Since laptops have limited USB ports, get only one big enclosure to fit all your drives, not many smaller ones. Prefer one which is externally powered, because they are more resilient, and buy a cheaper UPS power strip (anything in the lower end should fit) to keep the disks spinning then the occasional power outage will strike. In fact, having a laptop which will survive a blackout while the disks don't, it's not a good nor safe idea. (remember: UPS batteries will need to be replaced every year or two, do it)
Going with something more solid than an old laptop for hosting your services is also a good idea for scalability, to avoid USB nuisances, and in general to benefit from better performances overall. The main drawback is the loss of the conveninence of a battery, which can be mitigated with a better UPS than the one you where already using (right?) for your RAID disks on the simple approach.
Storage
Exactly as for the simple approach, you need RAID storage, which means at very least two hard-drives (or SSDs) in RAID1. Better would be many devices on RAID6 or such, but letìs stick with two RAID1 mirrors. If your server case has the capacity, plug in more disks and research on using ZFS or some advanced RAID techniques. I strongly suggest you use all SSDs, to save on energy consumption, heat generation and noise. The price per gigabyte will be higher, tough.