Caddy and self-hosting's cool and all, but I think I'd miss push to git to deploy and just not having to manage 'stuff'. Although, I did move a site from netlify to cloudflare (free) and still have this facility.
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --cvs-exclude --delete $(LOCAL_CONTENT) $(SSH_USER)@$(SSH_HOST):$(REMOTE_DIR)
Self-hosting then essentially just means doing apt install nginx once.In any case this is supposed to only sync the rendered content from $(LOCAL_CONTENT), not the templates used for rendering.
It is only one time setup pain point, after that you are all set.
CloudFlare Pages is great, and so is GitHub Pages for developer websites.
EXCEPT redirects of .html to / (slash) that you can't control.