I share my experience moving away from GitHub Pages to Bunny.net for static blog hosting, prioritizing privacy and budget. Comparing load speeds and using Bunny's FTP options. Codeberg and SourceHut are considered as alternatives to GitHub.
This post was last updated 1 year ago. The core ideas should still be useful, but tech moves fast; always check the latest docs for current best practices before applying what is mentioned.
Update: Migration Success
Update
Migration Successful!
Happy to share that I killed two (and possibly three) birds with one stone; my Hugo is now on sr.ht (SourceHut).
- Subscribed to SourceHut’s Amateur Hacker tier to access builds.sr.ht, a CI/CD service similar to GitHub Action
- Moved my Hugo source code from GitHub to SourceHut’s Git hosting service (hurray #GiveUpGitHub)
- Wrote up a working
build.yml(equivalent to GitHubpages.yml) that deploys Hugo static files in/publicto Bunny.net’s Storage/hosting + CDNI’ve been really impressed with Bunny’s performance upgrades (as you can read in the blog below). Their customer support was responsive and helpful. In fact, this Hugo blog is now running on Bunny.net Edge severs, and I’m still within their trial period using their free $20 credit!
If you want to test Bunny out for their CDN or hosting (which are the only two services I’ve tested so far), or their other services; you can use my affiliate link: Try Bunny.net. If you sign up and become a paying user, I will earn a commission, which helps support this blog.
To read more about my experience with setting up Bunny Storage with SourceHut, rclone, and SFTP, see GitHub Pages Alternative: SourceHut Builds + Bunny.net.
Preface
“When a product is free, it’s because you are the product.”
This long-standing quote I’ve read many years ago has been at the forefront of my mind lately. There are so many online services that are free outright, or have free tiers, but what price are we really paying? We are paying with our digital footprint, personal data, and also our time and attention. There’s more—but that’s for another post. I am more aware and conscious of the services I’m using nowadays and trying to slowly migrate away from “Big Tech”, especially those from the US. I’ve already worked on this ongoing “migration project” with email, cloud storage, etc, so I’m excited to tackle this area (code repositories, hosting, CDN) next.
Moving Away From Big Data
Currently, burgeonlab.com is hosted on GitHub Pages for free. In this post, I will be sharing my experience of moving away from Microsoft’s GitHub Pages free hosting. After leaving GitHub for hosting, I’ll be migrating repos to another Git versioning platform next (I’m leaning towards SourceHut). Switching to static site hosting is the first step for me in preparing to ditch GitHub in my main blogging workflow, for a better, more privacy-friendly alternative like Codeberg, SourceHut or self-hosting Forgejo, Gitea, etc.
Tip
If you want a guide on transferring your Hugo blog deployment from GitHub to an alternative like Codeberg, I highly recommend this post by @theaitch on his blog!
Static Blog Hosting
I have a multi-year WordPress starter deal on Hostinger with unused resources, which is why my Hugo photography blog (under construction) is hosted there along with my WordPress general blog. But I have already decided I won’t be paying the renewal prices when this plan expires next year. This is why I am looking for an alternative solution that is reliable, budget-friendly now in advance.
Note
I don’t have any bad experience with Hostinger, they’re actually really good for their introductory price (I bought a 48-month plan during Black Friday) and their customer support has always been really fast and extensive. For someone starting out, like me back in the day, I would highly recommend them. Their hPanel (dashboard interface) is really comprehensive and I felt at ease even though I was a first-timer.
I am changing hosts because I want a more budget solution for static site hosting only (no need for a dynamic WP plan because I want to swap out WordPress CMS in the future too).
Here’s a referral code if you do decide to try out Hostinger (affiliate link, 20% discount). I may earn a commission if you become a paid user which helps support this blog.
My hosting requirements:
- Fast site performance and low latency/load times
- EU-based
- Has ability to change security headers like Content-Security-Policy and set cache durations with Cache-Control header
- Budget friendly
I did consider going all manual by getting my first VPS/root server, but I still haven’t found one that suits me and doesn’t ask for a whole load of personal information.
Static site web hosting is plentiful but I heard of good things from Bunny.net with its CDN service (I already had them in my list to swap out another service—Cloudflare). What I didn’t know was they offer a product called Bunny Storage which is pay-as-you-go with a $1 minimum monthly payment. It sounds good on paper, so I’m currently on their 14-day trial to do some comparisons.
Speed Comparison
I’m using Pingdom to test the page load speed.
Hostinger + Cloudflare CDN vs Bunny.net
Bunny.net seems to win out big time (76.7% quicker) on this comparison, but it could be the different CDNs used that is causing the load time discrepancy.
GitHub Pages vs Bunny.net
In terms of comparing between Bunny.net and the more limited GitHub Pages hosting, Bunny.net has also won this round by 31.5% reduction in load time.
Bunny.net Technicalities
Because I haven’t gotten round to moving my source repos from GitHub yet, I’m just testing Bunny.net Storage by dumping the contents of the Hugo /public folder with SSH File Transfer Protocol (SFTP) using Mountain Duck.1
The settings for SFTP on Mountain Duck (or other FTP clients) for Bunny.net Storage are:
| Field | Setting |
|---|---|
| URL | sftp://storage.bunnycdn.com |
| Server/hostname | storage.bunnycdn.com2 |
| Port | 22 (port 21 is for FTP only, not secure) |
| Username | Storage Zone Name |
| Password | Paste the generated password (not the read-only one) in Delivery > Storage > FTP & API access |
| SSH Private Key | Select None |
The client will probably ask if you want to trust the destination server’s fingerprint. Bunny.net customer support confirmed its correctness.
Remaining Tasks
I have to work out a few remaining jobs before the move is complete:
- Set DNS and custom domain name settings
- Update the CI/CD blog workflow with alternatives to GitHub Actions or Webhooks
- Since my blogs are not under open licence, I don’t think I can use Codeberg. Will investigate SourceHut as I’m leaning towards it more (nice SourceHut overview post by Marcin and captainepoch’s vouch for Sourcehut; although both posts are from 2022).
- Read about GZIP compression
Will update the post when this blog is officially hosted on Bunny.net and source code on SourceHut! Check the update at the top of the post.
Mountain Duck is based on Cyberduck which is FOSS. (There is a CLI version called Duck.) Mountain Duck adds proprietary features to mount servers and cloud storage as local drives on macOS. I got this licence many years ago from one of those “bundle” deals but never got round to using it much! ↩︎
Check your primary storage location and use the correct storage zone URL listed in the documentation. ↩︎




Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.