I'm a homelabber. That's the short version.
The longer version is that I run my own infrastructure. Services my family actually depends on, services I rely on every day, services that need to keep working when I'm not paying attention. Not only that but my wifes business entirely (except email, google does that better) runs in my homelab. Landing pages, surveys, various integrations, web apps etc. Doing this well, at home, on a budget, on consumer hardware, with one operator and no on call team that's the project. Each thing below is a piece of it.
For about ten years I ran my personal stuff on AWS. At any given time I had a constellation of side projects up there. Some I actively used, some I'd half abandoned, some I kept paying for because one day I'd get back to them. If you haven't paid a cloud bill for two years on a project you swore you'd revive, are you even real?
One day I did the back of napkin math and realized buying hardware and paying for electricity would cost less than what I was burning on services I d forgotten I had. This is not a dig at AWS. I could probably write 3 pages from memory on what AWS does well.
The bigger reason though is privacy. I can hand my local LLMs real tax documents, real estimates, real account statements, and have a real conversation about them without wondering who's training on it tomorrow. And yes, I did test that the LLMs don't phone home. You thought you had me there, right?
The recurring theme is redundancy through iteration. And also sometimes you CAN tolerate failure (for few minutes/hours/days depending what it is that fails). It's easy to write a Hello World post about deploying Postgres in Kubernetes. It's a different thing to make Postgres survive a node going down at 2am while you're asleep. The gap between those two is paved with try, fail, learn, improve, repeat. The blog is where the war stories live.
1. The Homelab
The biggest, slowest, most rewarding project I have. There's no end state but there's only the next thing that broke or the next thing I want to make redundant.
Right now it spans:
- Compute - A mix of Proxmox VMs and bare-metal mini PCs running a high-availability Kubernetes cluster across mixed hardware.
- Data - PostgreSQL made highly available on Kubernetes via CloudNativePG.
- Ingress - Cloudflare Tunnel, finally made actually highly available instead of a single tunnel pretending to be one.
- Remote access - WireGuard, automated end-to-end with Terraform and Ansible.
- Services the family uses - Frigate (cameras), Paperless (every document we own), SiYuan (notes), Vaultwarden (passwords), and a stack of Rails apps that runs my wife's property management business.
The pattern across all of it is the same. Build it. Watch it break. Find the single point of failure I missed. Make it redundant. Watch it break in a new way. Repeat.
2. Market Mind (name for now)
A Ruby on Rails app I built for myself, for stock trading. It's a personal tool not a product, not a service for anyone else. Basically helped me get 90% return on investment in the last year. Is it luck? Maybe. Everyone knows about Cathie Wood and the performance of her funds during pandemic. But then go outside of that time frame and all of a sudden it doesn't look so good. I will decided if its good when I have data for at least 5 years.
(More to come like a proper writeup is on the to-do list.)
3. Dresserly (stupid chatGPT generated name)
Basically a web app that tells me what to wear every day. So that's one less mental thing for me to do. I've improved it quite a lot since first started it as a hobby project to get into AI and have been working on it for close to 2 years now. I haven't productized it yet because I would have to go out and get GPU compute and I'm not willing to get into that right now. For my needs this is fine, I have a 64 GB of VRAM available within my homelab.