Blog Image Hosting Update
If you have been around here for a while, you probably remember when I moved all my image hosting away from the platform I was hosting the website on. This post goes into more detail about the why when I was moving everything over to Blot from a self-hosted WordPress instance. I still feel this is not only the right way to go (separating text files from image content), this post is somewhat of a reinforcement and refinement of the idea.
I originally put all the images in an S3-compliant bucket over at Wasabi. I went with Wasabi because I was already set up there after moving everything away from AWS years before. Wasabi is reliable, affordable, and easy to set up, so that is where everything would live. It served me well for the last few years except for one specific area, speed. The Wasabi bucket is excellent for object storage and making things publicly accessible, but a standard bucket isn't really made for speed when it comes to loading a bunch of images on a page. I was using Wasabi as a "CDN," but it really wasn't meant for that. I also don't have any real need for any of this to be S3-compliant.
This is why I moved things over to Bunny. Bunny is also reliable and affordable; it's also speedy due to being run on SSDs (this is an added extra) and cached in many places worldwide.
If you have set up your stuff in a similar way to me on Wasabi, or are looking to separate your content and run images somewhere away from your text, here is a quick rundown of how I did it.
First, grab an account on Bunny.net.
Then you will need to set up two things.
- Pull Zone
- Storage Zone
The Pull Zone is the geographical area where you want things to be stored and served.
This part is trivial to set up and can be very vanilla. The only requirement from you is a name for the Pull Zone (which must be unique on the platform). You may, however, want to set up a custom domain, which is not a heavy lift either. By default, the hostname is
pullzonename.b-cdn.net. If you are good with that, then you can move on. If you want something a little more custom, like
cdn.yourdomain.com, you need to set up a simple CNAME, and you are good to go.
The Storage Zone is the actual place the files get uploaded to. Since you already have a Pull Zone, you can set up your Storage Zone to link to the Pull Zone. Typing that out probably took longer than the actual setup.
You again need a unique name for the storage zone and will need to decide what pricing makes the most sense for you. There is a "standard" and "SSD" tier. Honestly, they are both pretty damn fast, so you might need to do some testing to see which you prefer.
The second to last step was copying all files from the Wasabi bucket to the new Bunny Storage Zone. Super easy using Transmit. (You can, of course, use the web interface as well.)
The last step for me in this migration was updating all my pages, posts, etc., from the old location to the new one. This turns out to be trivial as well since everything is just a file in a directory. I did a "find all" in Nova for all instances of
burk-io-blog.s3.wasabisys.com and then replaced it with
cdn.grepjason.sh. Done. ✅
Everything is seamlessly migrated without missing a beat! And it's super speedy now! I imagine people want to know what this costs for a tiny weblog like mine. I will update this post with real-world pricing after 30, 60, and 90 days.
Apparently I have a referral link too if you want to sign up! Please don't feel like you have to use it!
Follow up #1! February 18, 2023
When I was using Wasabi, my monthly cost was generally between
$6 per month. So let's say ~$65/year.1
After the initial 30 days free on Bunny, my cost there has been
~$0.01/day. Or, ~$3.65/year. Wow.
I had no idea what to expect when I started so I preloaded my Bunny account with $100 hoping that would be more than a year given my Wasabi cost previously. Well, if I continue at the same rate2 I will be good on storage and content delivery for the next 27 years. 🤣
Remember: This is only based on my weblog here and what content I have stored. Every single instance will be different based on how much data you are storing and and how much your stuff is getting served up to the people of the internet.
More to come as the months roll on.. A true full month of data from March will be interesting to see.