Well, I have a VPS, plus multiple physical servers in different locations (parents, etc).
The VPS is useful for:
- sending e-mails (hard to improve your reputation on residential IPs and get a reverse DNS record)
- Unifi controller, though I appreciate Unifi less and less.
- Uptime monitoring / status page
- I think I'll move my headscale node there, since it has the highest availability -- Internet was out for a week last month, which is exceptional, but rarer in a DC
- backup Internet connection (especially incoming packets, as it's hard to port forward on mobile Internet).
- netdata for monitoring
Now, I use my servers a lot more:
- HomeAssistant on all of them
- power monitoring to warn of power cuts when not at home (freezers!)
- netdata
- yggdrasil
And for the one beefier instance:
- esphome
- Wireguard links between it and all nodes/VPS, plus a few devices -- I like Wireguard, but Tailscale is much easier to manage for full mesh and just adding personal devices.
- jellfin, *arr and torrents
- calibre web (mostly humble bundle DRM-free books, actually)
- e-mails (receive, I should make it more redundant though)
- Matrix server (synapse). For years this was the most resource intensive service. It's much better now. I do not recommend due to spam waves.
- headscale
- Nextcloud, OnlyOffice, Kanboard: for productivity
- Prometheus, grafana & monitorix: monitoring, plus netdata aggregating data from other nodes
- Open Sondage, Framadate, I hate money: for friend groups
- Vaultwarden: password storage
- Wallabag (should use it more or may retire soon)
- Ntfy: for UnifiedPush
- LDAP server: for centralized auth
- Borg backup
- Some custom web apps and probably more I forgot
Services I plan to host soon: Garage (S3), split across nodes, Ente (currently using the hosted version)
Services I retired or only start on demand: Funkwhale, Peertube, ampache, overleaf, ethercalc & etherpad (both had too high CPU use on idle, not worth 5-10W). At some point I had game servers behind systemd socket activation to only turn them on on-demand.
Yunohost is pretty good for starting, but it's quite amateurish, I prefer declarative configs and containerization these days.
I also think pretty hard about ways to get my power usage down (around 30-40 W on my main, next upgrade should bring it to 25), so I'm monitoring the usage and correlating to power use (via a smart plug). I wish there were more turn-key solutions for putting nodes to sleep in kubernetes & others, I'll likely investigate this at some point. Tiered storage systems also tends to focus on perf, not power efficiency.
And yes, I'm considering moving more things behind tailscale to reduce the attack surface. Some containers listen to localhost and I use ssh -D to access them, but tailscale would be more convenient.