I don't trust big corporations to protect my data, especially if I am getting their service for "free". There are entirely too many horror stories of individuals and businesses that rely on services like Google and Microsoft to hold all of their personal or company data where accounts and data have been locked out or even deleted with no warning. While these stories make up only a very tiny fraction of their user base, I don't feel I can trust them. After all, what incentive do they have to keep my data safe? These are companies that measure income in the billions. At most, I toss about $100 a year at them.
Nope, the only real choice here to ensure that I always have control of my data is to have my own server in a location I have control and access to whenever I want. This does not mean I won't use their services as secondary storage and service providers. Why wouldn't I? I can get those services for free or nearly free and only a fool has a single point of failure in any system being relied upon.
With that, I decided I had to run my own server. Okay, I also like tinkering with tech stuff and this is a great excuse to do so. We just need a good plan and a modest budget. The first part of that is determining the hardware to use. This is where serverbuilds.net comes in. JDM_WAAAT has put together a number of parts lists for servers that range in the amazingly cheap to the wallet-screaming expensive. I went with the NAS Killer v2.0 build for my system:
|CPU||Xeon E5645 x2||$22.58|
|Power Supply||EVGA 850 BQ (refurb)||$64.19|
|Cooler||Arctic Freezer 12 x2||$41.00|
|Case||AZZA CSAZ-GT 1||$89.12|
|SAS Expander||HP SAS Expander||$12.99|
|Cables||StarTech Power Splitter||$10.98|
|Cables||Mini SAS to SATA||$12.89|
|Fans||Arctic F12 x5||$24.99|
|Hard Drive||WDC_WD30EFRX x3||on hand|
|Hard Drive||WDC_WD80EFAX x2 (shucked)||on hand|
These prices reflect what I paid at the time of me ordering. They will vary slightly with market conditions. The most difficult piece to acquire is typically the motherboard as it keeps selling out in the various outlets that still have them around.
The Xeons are hexa-core CPUs with hyperthreading giving my server a full 24 threads of playground. One of the 8TB hard drives is set as my parity drive and all of the others are holding data. My OS is stored on a 16GB flash drive. I still want more memory but DDR3 ECC sticks are expensive at any size. On the bright side, I am only showing about 26% RAM in use on average right now. This will surely only go up as I add more services.
For software, I started with Unraid for the OS. This OS is Linux underneath but is managed via web interface. Lime Technology has built an impressive system for managing an array (pun intended) of different sized storage devices as a single unit while still providing data protection. It also doesn't hurt that the system also handles Docker images natively as well as virtual machines (VMs).
I also connected this server up to an APC BR1500MS Sine Wave UPS to protect my digital bits from power outages or voltage spikes. I did actually have an outage while waiting for this to arrive and it took about a full day for the parity check to finish. No bueno. And according to my APC, this server with all 9 fans running as well as six hard drives only pulls about 117 watts on average (see the power usage update below in UPDATE3). It sometimes drops as low as 107 or spikes up to ~135 when doing a couple of Plex transcodes. Overall, not bad for 8-9 year old technology.
As for services, I have quite a few. Many of these I found by using this Github repo. Unraid runs Docker images natively so I use that for several services:
I also run an Ubuntu 18.04 LTS virtual machine. This is used to host several more services:
With all of this I have a server with approximately 19TB of storage currently installed and another 3TB about to be added. Just under 6TB of this is currently in use but the growth is already showing. Everyone in my immediate family has access to their own Nextcloud storage, Bitwarden password vault, email via Roundcube or Rainloop, and access to my media on Plex.
Next on my list is to find a suitable replacement for classic YNAB. While my financial and budget data are not hosted on YNAB's servers as it would be with their new version (which is web-only), I do have to store those files in Dropbox currently to share the family budget with my wife. There are a number of options out there for self-hosting but most follow the new trend of "you can spend XX today" style of budgeting. I am against this because it positions your money as something to be spent rather than saved.
I prefer the zero based budget, sometimes referred to as envelope budgeting. This is where you assign every single penny to a budget category as you get paid. When you run out of money in that budget line, tough. You are done spending on that for the month. I find this to better restrict useless spending and encourage saving more. I will probably toy with Silverstrike for a bit. It is somewhat of a fork of Firefly III but written in Python/Django and seems to be the closest thing I can currently find to a browser based budgeting app that works like YNAB.
UPDATE1: I have Silverstrike running but it lacks a few key items that I use. Of concern is the "budgets" section does not actually let you know how much of your income is budgeted. So without just breaking out a calculator, there's no easy way to tell if you have actually budgeted to zero. Sigh. The search continues.
UPDATE2: I have added Poste to my list of Docker images. This is a full stack mail service with everything you need to host your own email server with very little setup. I like that it handles multiple domains and lets me add all the accounts I want with just a click or two. Spam filtering seems to be working fairly well so far and the built in dashboard is nice.
UPDATE3: I added McMyAdmin2 and created a new Minecraft world at my daughter's request. I'm also working on swapping the low voltage RAM for normal 1.5v RAM as I have run into issues with getting it to recognize more than 48GB even when I have more than 64GB worth of sticks installed. In addition, I have installed the last of my 3TB drives so now I have the full 22TB of data storage with the 8TB parity drive. This has upped my power consumption to about 150 watts idle with burst usage up to about 190 watts. Still no luck on a self-hosted zero based budget app, though. sigh....
UPDATE4: So I broke down and set up Firefly III. While I still don't like the "You can spend X dollars a day" approach, it is by far the best self hosted personal budgeting system that I have found. Also there is a decent early access Android client by a third party dev. There is certainly a gap between YNAB and Firefly III in terms of features but most of the ones that I have encountered are fairly minor if you can overcome that X dollars per day approach.
UPDATE5: I couldn't manage with Firefly III. The concepts on money handling were too drastically different from my approach. But thanks to a fork of Finiancier.io, I have my web based YNAB4 replacement.
I've also added streaming music to my home server with a "simple" stack of 4 docker apps. I use Headphones to manage the library and a combination of Beets and MusicBrainz to supply the album metadata. All of that is then handed over to Airsonic to stream to whatever device I want to listen on.