I also use it from my other computers via ssh to access git, irc, keepass, and whatever else tickles my fancy.
An always-on machine to handle recurring tasks (remote backups, say).
Maybe a VPN gateway (you can also just use an AppleTV for that, though, with Tailscale)
Home automation if HomeKit isn't your thing, for whatever reason.
Network-wide adblocking, custom DNS, et c.
You really, really don't need one. But they can be nice.
Also some people just like tinkering. Can't relate (any more) but I've got my thing down to requiring single-digit hours per year.
[EDIT] Of course, part of how I avoid making it more work is that I don't upgrade the core OS, since it has minimal exposure to public networks and everything I care about comes from Docker so IDGAF how old the package collection is. Especially with ZFS in play, upgrades are... fraught. At some point whatever old-ass Debian I have on there will be too old and I'll have to, IDK, image the whole base OS disk as a backup and spend probably a whole weekend screwing with it when it inevitably breaks itself on upgrade. I may just migrate to FreeBSD instead, when the time comes.
For all those things you really shouldn't trust "the cloud"
I push data from my home server for easy access on my cloud VM. For example, weather data from my weather station, images/time-lapses from my weather cam. I have no ports open to my home network. Basically just fun stuff without exposing my home network.
I use the cloud VM as an SSH "jump box" into my home network. My OpenBSD box sets up a remote SSH tunnel port. I can then use the SSH -J option to jump through the cloud VM into that home OpenBSD box (as well as chain "jumps" to other home servers).
* This way I don't need any home server to trust a cloud VM.
* This mostly is for checking on my Home Assistant instance.
* I've also fixed some things remotely with an SSH session.
Do I need all this? Well, would be less fun without.Syncthing is a great use case. Wherever I take my laptop, the files stay in sync between the two devices; I don't need a third device to act as a server, or iCloud, or any other cloud.
Miniflux. I read my RSS feeds from three devices, so I want to track read status and save bookmarks. It provides a Google Reader-compatible API (yes it lives on), so I can plug NetNewsWire into it.
It's an exit node for Tailscale. Did I mention Tailscale? It's like still being on the same LAN anywhere you go. It doesn't matter if your home server doesn't have a public IP.
Grafana is cool for anything you can plot, as long as you can mash it into something vaguely resembling a time series. Sensor readings, data pulled from some API, CSV export from your bank, your chess ELO, etc. It's often combined with Prometheus. So you can also scrape anything that speaks enough HTTP (which is... many things, these days).
I want to explore something like Navidrome or Jellyfin; for now I use Syncthing for my music library, but even if I could run it on iPhone, the whole collection wouldn't fit. Unfortunately it seems there are no decent apps.
You're also free to explore uncharted territory. Rubenerd is hosting a "house-wide" SQL database: <https://rubenerd.com/our-personal-database/>
* UrBackup for all of the host systems in the home to backup to
* Plex for home movies
* HomeAssistant
* OpenThread Border Router
* Zigbee2MQTT
* Matter Server
* PostgreSQL (for HA)
* InfluxDB (for long term statistics from HA)
* EMHASS (linear optimizer to maximise profit on my Solar PV + Battery system)
* Minecraft server for the kids
* Mosquitto MQTT broker
* TeslaMate for car data
In my case, the heaviest use is HomeAssistant - every light in the house has smarts, either directly, or through smart relays. Telling my energy provider how much charge to add to the EV's so they schedule it and I only pay 7p per kWh during the dispatching windows. Managing energy flow in the house (charge battery? discharge battery? only charge battery from solar that would otherwise be curtailed due to a 5kW export limit) etc. etc.
It's running in a short depth 2U rackmount chassis inside my network rack, with 6 4TB drives running in RaidZ2 and offsite backups which are aided by a 1Gbps symmetric FTTP connection.
- Kavita and Jellyfin to self-host my books, comics, movies and TV. Self hosting is particularly important for non-Hollywood/non-US-centric media which routinely disappears from the internet.
- A custom webapp to self-host my photos (if I did it again today I'd use Immich)
- Gitea to self-host a few Git repos
- A GPU so I can use it remotely to offload AI/ML workloads from my laptop
It is networked with my ither devices via Tailscale so me, my friends and family can access it from everywhere. It is like having a private Netflix, Kindle, Google Photos and Comixology/MangaReader that allows any media to be downloaded to read offline.
I also have second Windows server used for hosting dedicated servers for video games.
My NAS is an eight core server with 64GB ECC ram running a ZFS pool with 8 12TB WD Red Pro drives for storing my collection of curated Linux ISOs, running TrueNAS SCALE, running always-on services inside containers:
- PostgreSQL for a bunch of personal project databases
- TeslaMate collecting data from our EVs into the PostgreSQL database
- Plex for serving up media to the Apple TV
- Tailscale exit node so I can access my home network on the go
- Step CA for managing my personal certificate authority used to issue everything I want to have TLS for with a certificate easily (LetsEncrypt doesn’t work for private network servers)
- Tarsnap for periodically backing up all data, documents and configuration I really do not want to lose
- UniFi controller managing my UniFi APs (four of them)
I’m sure I will have more use cases in the future, but it’s really handy to have always running infrastructure and storage at home you can rely on!
And I don’t spend much time tinkering with it now that it’s set up, it’s just maintenance mode.
From time to time I adjust a few configs or upgrade a hardware component here and there but it’s been stable like this for years (apart from the TrueNAS CORE to SCALE migration which was a bit of a shitshow due to moving from FreeBSD to Linux, had to rebuild all jails into Docker containers).