- a git repo containing a Hugo (or similar) SSG site.
– push this git repo to a couple of free private repo hosting services (GitHub, GitLab, GCP CloudCode, AWS CodeCommit etc)
– and optionally use their free CI integration to generate the static site (or do it locally on your laptop).
- and push to a free cloud storage (AWS, GCP, Azure, Oracle etc all give storage in their free tier).
- Use Cloudflare CDN or AWS CloudFront (or both) to serve this static website from the storage origin.
– Use Cloudflare DNS for hosting your custom personal domain name and point it to the CDNs.
All this is free, with a bit of effort of initial setup in an afternoon. And it is super resilient with multiple independent CDN, Storage and Git hosting.
I don’t enjoy the process of having to build the site and push the built site to a service like github. It adds a certain kind of friction to the process of “saving” my work that just isn’t life-giving for me.
With Jekyll, you just have your site in a `<username>.github.io` repository, and it automatically publishes your site for you. So, the process is: write in markdown, commit, push, and then GitHub does the rest.
You could keep the source files in GitHub and use their web editor to add or update content, then build and push to the publishing server via a GitHub action.
You can find descriptions of such a setup by googling.
> then build and push to the publishing server via a GitHub action
I have looked into this before, but it honestly just seemed very esoteric and complex. I'm surprised that Github doesn't provide pre-made "recipes" for this stuff.
I feel like Hugo / Jekyll (or equivalent) + GitHub Pages (or equivalent) is much much easier to set up. Is the resiliency really needed for your personal blog? Github Pages (which I use for my blog [0]) is pretty good at uptime afaik.
I also feel like Jekyll plus GitHub Pages is the easiest solution. I feel it is more minimal than the posted product. Jekyll plus GitHub is free, and aside from an initial setup and small learning curve, it is basically automatic. I am getting ready to publish my blog, and it's been nice to be able to customize things (like adding in MathJax support).
I think we have different definitions of naked! I think you're taking it to mean: use a lot of infra, but maintain none of it. I thought it would mean: strip everything down to bare essentials. Services like CI are niceties, not essentials.
But I'm not the target audience. I think the idea of naked blogging is kind of silly. Blog if you want to blog, your clothing choices are your own.
I use mostly this same setup for my personal site and blog [1] [2].
Git (versioning) -> Github (Git hosting) -> Github Pages (static site generation, and hosting) -> Cloudflare Free Plan (DNS and CDN). I have a Gitlab account that has mirrors of my Git repos, just in case.
One question, though. How do you use more than one CDN to front your website?
Just add DNS records pointing to both those CDNs. Your DNS hosting provider can serve them in rotating order to different users, there by spreading the load across your CDN providers. In case one CDN goes down, the browsers will try the next addresses in the DNS response.
You could get redundancy for the authoritative DNS hosting provider as well.
Add both provider NS server records at your domain registrar.
Then, your only single point of compromise would be your domain registrar.
You could get two different domains (on different tld) via different registrars and have both domains point to the same site. Of course, unless people know the alternate domain, this isn't of much help. But for a mobile app's api endpoint, I would recommend a setup like this to make it truly bullet proof.
If you want even more raw, why use git? Do you need version control for a blog? Just use S3 as a file system and serve directly from there. Can still use cloudflare if you want.
If you want a templating system, it wouldn’t be hard to run a script that deterministically takes all templates in folder X and compiles them into folder Y.
- a git repo containing a Hugo (or similar) SSG site.
– push this git repo to a couple of free private repo hosting services (GitHub, GitLab, GCP CloudCode, AWS CodeCommit etc)
– and optionally use their free CI integration to generate the static site (or do it locally on your laptop).
- and push to a free cloud storage (AWS, GCP, Azure, Oracle etc all give storage in their free tier).
- Use Cloudflare CDN or AWS CloudFront (or both) to serve this static website from the storage origin.
– Use Cloudflare DNS for hosting your custom personal domain name and point it to the CDNs.
All this is free, with a bit of effort of initial setup in an afternoon. And it is super resilient with multiple independent CDN, Storage and Git hosting.