I also self host some services: keycloak, forgejo, home assistant, immich, grafana/prometheus, jellyfin, pureftp (to store my surveillance cameras videos), and a vibecoded financial app, and soon hermes agent on a 2023 laptop.
I chose to run most of them on Kubernetes since I am used to work with it. I use:
- ha-proxy running on the host and istio running inside the cluster for the sni based ingress routing
- cert-manager with a self-signed CA I had to import the CA cert on my devices
- cloudnative pg for postgresql dbs (keycloak and immich)
For the backup it is mainly some cron jobs that save to the cloud.
It is overkill I admit but kubernetes makes some integrations easier. Even though it was also a way for me to maintain some Kubernetes skills for my work. The tricky part is the network connectivity, for instance home assistant runs inside the cluster on its own network and it makes things more complex like homekit bridge integration (different network than my devices). But with the help of AI the iptables configuration makes wonders.
The kubernetes cluster is k3s running on NixOS micro vms, fully managed declaratively thanks to NixOS.
The services that run outside the cluster (ha-proxy, jellyfin) are all managed declaratively.
At some point I had thought of using proxmox with lxc but I am very happy with NixOS.
I chose to run most of them on Kubernetes since I am used to work with it. I use:
- ha-proxy running on the host and istio running inside the cluster for the sni based ingress routing - cert-manager with a self-signed CA I had to import the CA cert on my devices - cloudnative pg for postgresql dbs (keycloak and immich)
For the backup it is mainly some cron jobs that save to the cloud.
It is overkill I admit but kubernetes makes some integrations easier. Even though it was also a way for me to maintain some Kubernetes skills for my work. The tricky part is the network connectivity, for instance home assistant runs inside the cluster on its own network and it makes things more complex like homekit bridge integration (different network than my devices). But with the help of AI the iptables configuration makes wonders.
The kubernetes cluster is k3s running on NixOS micro vms, fully managed declaratively thanks to NixOS.
The services that run outside the cluster (ha-proxy, jellyfin) are all managed declaratively.
At some point I had thought of using proxmox with lxc but I am very happy with NixOS.