Techno Tim: No, I like it. Yeah, thatâs my stack, too. So first, I start with a machine, a hypervisor. So if youâre not familiar with hypervisor - most people are, but if youâre not, itâs just really a machine that you can run virtual machines inside of. There are different types of hypervisors, but for all intents purposes, run machines inside of machines.
My choice has been Proxmox. Itâs been for a long time. I used to run Hyper-V, which was a Microsoft product, Iâve run ESXi at home, which is a VMware product⌠None of those gave me the flexibility that I needed at home without buying expensive licenses. And so Proxmox was there, it was open source, and early in its development, and it hit all of those things that I wanted; a web-based hypervisor that was performant, thatâs Linux-based, thatâs open source, and has some enterprise features if I want them.
And so itâs Proxmox⌠From there, I usually virtualize everything. So everythingâs virtualized. I tried to virtualize everything, just because it makes management and backups a lot easier. Pi-hole is definitely one. Pi-holes - I have gone a little overboard; I have three Pi-hole servers. Two of them are load balanced behind a load balancer, with a software load balancer; not important.
But then I run containers. Iâll say I run containers⌠I used to do a ton of Docker. So I run Portainer, which is a Web UI for Docker, which makes Docker very approachable for someone who doesnât know Docker. It gives you a nice Web UI. And so Iâve run a lot of containers in there; Plex, Pi-hole, you name it. [unintelligible 00:27:47.13] A lot of dashboard stuffâŚ
[27:52] And then since I did a lot of Kubernetes at work, I decided to do Kubernetes at home. I will say that it takes a lot; it takes a lot to grok Kubernetes, to understand Kubernetes, and then to run it at home and maintain it. So I donât recommend it for the average home user. Itâs definitely not approachable. There are some things that make it a little more approachable, like Rancher, and even Portainer, but for the most part, not approachable⌠Because itâs made to be this huge state machine for running high-availability applications. And so you need lots of machines, lots of hardware, and lots of resources. You can minimize all of that, but at the end of the day itâs going to take mostly three machines, which is out of the question for most people.
So yeah, I containerize everything. I always try to containerize everything, mainly because I want to run multiple containers on one machine, so Docker containers on one machine. I donât want to have to worry about global dependencies, or all of that stuff that you worry about if you have a virtual machine. If you think about it - you know, back in the day I used to install WordPress on a machine. And then I would install - you name it, some other software on a machine, because I wanted one machine to do everything. Well, at the end of the day, when you start doing that, you might, say, for WordPress need PHP 8, and MySQL 7, and then you install something else on that machine, which requires MySQL 8, and now you have these broken dependencies⌠So thatâs where Docker comes in and kind of keeps all of those in little containers and silos, so that you can run multiple things without them affecting each other.
But yeah, everythingâs containerized. I run a ton of stuff⌠I run a ton of stuff at home. Uptime Kuma, I monitor and log all of my services⌠I have a lot of custom code that I wrote, a lot of websites that I write⌠I mean, I do a ton of Node.js, I do a ton of Docker, I do a ton of TypeScript; so I build and deploy â I have CI running in my homelab⌠I write code, I push it to my CI, it runs my tests, it builds containers, and then it puts them in Kubernetes. It used to put them in Docker, but yeah, now it puts them in Kubernetes. And thatâs all a home. I learned how to do all of that kind of in my homelab, so⌠But yeah, itâs a lot of services. Probably too many. Some of them are for testing, but some of them have stood the test of time, like Pi-hole. I absolutely love it.