I am used to simple things running on Docker (Jellyfin, Nextcloud, etc.) I am looking at running my own personal Mastodon instance (maybe share it with a few friends and family), but I like using Docker. Looking at install guides, the steps required seem to be much harder than just editing docker-compose.yml and running the container. Is it actually that difficult to set up Mastodon, or is there a better guide? I can't just use Yunohost/CasaOS because I am using a VPS to host this.
Instead of the full-blown Mastodon, you should also look at #GoToSocial which is compatible and pretty light-weight. (Doesn’t come with a web UI, so you need to use client apps.)
I'm running the mastodon stack in docker via a compose file. It was straight forward. Follow the instructions to the letter and it will work.
I will say that it is in your best interest to have an automated update process happen, either manually (via cron) multiple times a day or have some kind of orchestration layer that manages updating the component images once they are released. Mastodon has had some nasty 0 day bugs that involved account and server takeover that had to be fixed immediately, and you don't want to lag very far behind in those cases.
I found dealing with a mastodon server to be a pain in the ass. For a time I outsourced that to Masto.host and it was smooth. The owner of that site was really helpful and knew mastodon well
I run a mastodon instance in docker and a Sharkey instance in docker on another server. I, personally, didn't find it especially temperamental but, to be fair, I have pretty extensive experience troubleshooting Docker issues re: networking/permissions/volumes because I am cataclysmically unclever.
Some advice: I would definitely recommend against running it on a naked domain you care about (i.e. instance.com). Always deploy it on a subdomain (i.e. mastodon.instance.com) because, if you ever change servers, have to re-make your intance, have domain issues, etc, you will be fucked pretty much forever on that domain. On a subdomain, you can just use a different subdomain.