First, let me start by saying this, self-hosting is not for everyone and not for critical information. I say this because you are your own tech support. There is no one to call should something go wrong to get it fixed in the middle of the night, and trust me it will.
So why do I self-host?
Well, the answer is easy really. I do not, I repeat do not, think big corporations or big brother should know what I am doing or collecting my data. I don't like Netflix, Amazon, Pandora, or even Spotify telling me what I might be interested in. I especially don't like Facebook telling me what I like and don't like.
With that being said I am nowhere near completely self-hosted yet. I still have Gmail, Alexa, and other stuff in my house that talks to the big corporations.
So what do I self-host and how?
Well as I stated in my previous post I self-host several different services. My approach because I do not want a massive power bill just yet is to use low-powered systems with the exception of the media server. So let's start at the top and work my way down. With the exception of Farnworth, each of these systems runs a flavor of Ubuntu (18.04 or 20.04), docker, docker-compose, and cockpit.
I have a Raspberry Pi 4 with a PoE hat on it that runs my DNS and a VPN. DNS is served by PiHole and there are several great articles and YouTube videos online on how to set it up. PiHole is an awesome DNS server as you can import lists that block most ads. The VPN is set up with PiVPN using the WireGuard option. What this allows is for me to remote back into my network and have network ad-blocking on my phone.
The next system is an Intel NUC 10 BXNUC10i3FNHN1 with a 500 GB Western Digital 500GB NVMe and 16 GB of RAM. This system I consider my internet-facing stuff. It runs the following services: SWAG, Authelia, Unifi Controller, Ghost (Blog), DDClient, and Bookstack. There are some services I am leaving off for now but we will get to those later.
- SWAG - It is a Reverse Proxy server with Let's Encrypt already built in that allows me to secure my domain.
- Authelia - Is a 2-factor authentication app that I use for all my services that have little to no security methods.
- Unifi Controller - Take care of all my networking gear
- DDCleint - Keeps Cloudflare aware of my IP address as I have a dynamic IP.
- Bookstack - This is a more recent component I started using but it is great at documenting. I use it for projects and information I want to reference later on. As we continue to dive deeper you will start seeing more of that documentation come forth.
Which is a twin to the above system that takes care of everything Home Automation. It runs Home Assistant, MQTT, ESPhome, Zwave JS, and Genie,
- Home Assistant - an awesome Open Source home automation project that aims to bring multiple systems into one central self-hosted privacy-focused system.
- MQTT - which I don't use anymore was used for devices that could be setup to talk to it and then it would talk to Home Assistant. I used this with Shelly's before they got a native integration.
- ESPHome - is an awesome self-hosted solution for creating your own smart devices using ESP8266/EXP32 microcontrollers
- Genie - A project by Standford that aims at being an Open-source virtual assistant.
Bender is a custom-built beast. I am not going to list all the specs today but I will say that it has 2 - 16TB drives for parity, 6 - 10TB drives and 2 - 8TB drives for media storage. It runs the following software and docker containers
- MergerFS - A UnionFile system that allows you to pool multiple drives of different sizes into one massive drive
- Snapraid - Used to create a software raid and makes a snapshot off all my media drives for a backup solution
- Emby - Media server that streams most of media to devices around the house and my phones
- AudioBookShelf - This is an open-source audiobook server and WebClient that also has native Andriod and iOS app's in development. I will go into a lot more detail later.
- *arr's - This list is massive and I plan to go into greater detail later but here are the names - Radarr, Sonarr, Lidarr, Readarr, and Prowlarr
- SabNZBd - Usenet Downloader
- Ombi - Request software that tell's the Arr's what to look for
- Xteve - M3U live tv software that allows Emby to stream live tv to all my devices
Flexo is a fun little project that I am still figuring out what to do with. It is a Raspberry Pi that has 8TB of storage in a small compact form factor. It currently runs two docker containers - MariaDB and NextCloud. I am not totally sold on those being on this system right now.
Similar to Leela and Nibbler but beefier. It is an Intel NUC 10 BXNUC10i7FNKN1 with the same 500GB NVMe drive but has 64 GB of ram. Why so much beefier than the other two, well it was designed with hosting games servers in mind. It currently runs two Minecraft servers. One is for college friends and the other is for my kids and me.
Every single machine, except for Farnsworth, run's 3 more containers.
- Portainer or Portainer-Agent - software that allows me to remotely manage all the above software
- Diun - Notifies me when there are updates to the above software
- Scrutiny - Keeps an eye on all the hard drives between the different systems.
So as you can see I have a nice small home lab and if you are a fan of Futurama I hope you like the names. That's it for now but stay tuned as more content is planned.