This article touches on something interesting: community hosting.
I'd like to explore that. Specifically, the idea of small communities where a group of people maintains the underlying tech, and - kicker here - everyone in the community knows more or less everyone else in the community.
That offers a bit more security/safety/continuity than just self-hosting everything, while still not ceding control to a faceless corporation.
Granted, there will always be other reliances outside of the community - like internet and electricity providers - but a line has to be drawn somewhere.
Reminds me of my time on TF2 servers when I was a kid. Everyone knew everyone on our main server and it was a community. It's something that discord doesn't a decent job at capturing today, but unfortunately not selfhosted. Matrix is interesting, but I'm waiting for their new Go implementation (dendrite?). The deployment for matrix feels like it's heavier than it should be. I feel like I should be able to spin up a process and point to the port and call it a day. Maybe the overhead is from the need for authentication for federation, but I personally don't care about federation for my purposes.
I don't know anything about ansible, or much about docker, or self hosting. And I was able to set it up and it's working quite well for my family and friends. You don't have to enable federation. Set federation_domain_whitelist to an empty list, and poof, federation disabled.
DNS settings are pretty easy too - especially if you can allow your instance to take control over an entire domain (and don't have to host other web services other than what the playbook supports). Don't need the SRV stuff here: https://github.com/spantaleev/matrix-docker-ansible-deploy/b...
If you just have a private server for < 100 users, 1 vCPU and 2GB RAM is enough. I also use it for bridging to IRC using heisenbridge (which the playbook supports) and it's no problem on the tiny server.
Updates are very easy, pull the latest playbook, and run setup again. Done.