Personally I think the best solution is using a static site generator like Hugo or Zola to control how you generate your content, and then host that using Caddy + Docker. A database is overkill.
You can also use caddy's git plugin to kick off automatic builds build from any git repo, not just a github one. It just needs to support webhooks, I believe.[1]
[0]: https://utteranc.es/
But there is nearly zero walled garden downside. I own the domain, I don’t use github.io, so I don’t fear link rot if I move.
Because it’s git, I always have a copy of everything locally, I don’t depend on github for storage.
Because it’s jekyll, I can generate my blog on my own system and upload it somewhere else whenever I want.
I don’t support comments at all, but that’s a personal choice. I’m not in the community business, I outsource comments to Hacker News. Which is also how most of my readers want to discuss my writing.
With the setup I mentioned above, I just build, commit, then git push, which triggers a pull on both of my servers due to webhooks.
Getting linked to reddit or hn and being discussed is fine enough.