My experience has been quite the opposite: Windows is the one that’s constant problems for me, with no obvious way to fix and if I were to follow the common advice on the Internet I’d be reinstalling it more than I use it.
Linux has been very reliable for me. Sometimes I look at my uptime and I’m like, maybe I should reboot soon.
They’re always some initial problems just like Windows but usually once it’s all fixed up it stays that way. My install is 13 years old and still going strong.
IMO a lot of what makes nice self-hostable software is clean and sane software in general. A lot of stuff tend to end up trying to be too easy and you can’t scale up, or stuff so unbelievably complicated you can’t scale it down. Don’t make me install an email server and API keys to services needed by features I won’t even use.
I don’t particularly mind needing a database and Redis and the likes, but if you need MySQL and PostgreSQL and Redis and memcached and an ElasticSearch cluster and some of it is Go, some of it is Ruby and some of it is Java with a sprinkle of someone’s erlang phase, … no, just no, screw that.
What really sucks is when Docker is used as a bandaid to hide all that insanity under the guise of easy self-hosting. It works but it’s still a pain to maintain and debug, and it often uses way more resources than it really need. Well written software is flexible and sane.
My stuff at work runs equally fine locally in under a gig of RAM and barely any CPU at idle, and yet spans dozens of servers and microservices in production. That’s sane software.