You can learn a ton just trying to do a production grade home assistant deployment - move on to SSL termination at the load balancer with letsencrypt, try different deployment strategies for upgrading the server with zero down time, write custom extensions... etc etc.
I've now got a small Pi cluster running k8s to deliver a bunch of services at home, and its all really easy to maintain. I've absolutely used the skills and knowledge gained in my day job too, which is nice. Home Assistant is great to learn a lot of production web app stuff, all you need to get started is as little as the PC you already own, or something like a Pi to host it. As it can solve problems in your actual life, it's rewarding enough to be interesting I've found.
https://en.wikipedia.org/wiki/Reverse_proxy
If you use LetsEncrypt's DNS-01 challenge to setup the SSL automatically, you can even deploy valid working SSL for IPs in the private range (192.168.x.x, 10.x.x.x etc etc), allowing auto-deployment of SSL for private services on your LAN, not just publicly accessible/exposed IPs. You can get around port forwarding during initial letsencrypt setup with this too, as all happens via DNS providers public APIs.
> https://letsencrypt.org/docs/challenge-types/#dns-01-challen...
Caddy is really easy to deploy as a Docker instance as well. There are many, many ways to accomplish LetsEncyrypt with HA though! It's really just an example of a common generic reverse proxy problem - searching for "reverse proxy letsencrypt" will show you many other ways to do it too. If you are using Docker to host your services at small scale, there are some really clever options now that auto-configure Caddy and SSL via letsencrypt all just using docker compose:
Do you find that there are functions that are unique to k8s for a selfhoster that demand a system with that kind of overhead?
Of course you don't need that k8s cluster and of course you shouldn't really use pis. But it'll be fun. You could also just use 10 vms running on your computer and each vm is one node in the k8s cluster if you don't want to buy hardware. Then you see what happens when "hardware failure" occurs. I.e. you kill a vm without shutting it down properly. Or yank the power on one of the pis.
The point is, once you need it for a real project now you know how it works and when to actually use it and when not to. Heck all the stuff I set up on my single old 200MHz system, no vms nothing taught me basically everything I needed to become an actual sys/network admin later.
I'm reasonably sure that being able to talk about my home k3s-on-pi's cluster was a positive factor in getting my latest job :)