In this post I have tried to dig deep into the reality of different Ghost Blog hosting providers. I tried to find all the tiny details, and restrictions many people might miss. I also tried to test their real world performance. And honestly I was shocked by many of them and it is a little bit disappointing. This is a long article (will take around half an hour probably). But this should solve your question about “where to host your ghost blog”.
Also if you find any mistake please let me know.
Thank you, great work!
And also, great guide to do full CDN acceleration of Ghost on Bunny, have you tried the edge scripting on Bunny? I think it is in Beta, I did get an invite, I had Claude re-write the Cloudflare purge script to a Bunny edge script, not tested this yet
import * as BunnySDK from "https://esm.sh/@bunny.net/edgescript-sdk@0.11.2";
/**
* Handles cache purge requests for Bunny CDN Pull Zone
* @param {Request} request - The Fetch API Request object
* @return {Response} The HTTP response
*/
BunnySDK.net.http.serve(async (request) => {
const PULL_ZONE_ID = PULL_ZONE_ID; // Assigned pull zone ID
const ACCESS_KEY = 'YOUR_BUNNY_ACCESS_KEY'; // Replace with your actual Bunny CDN access key
const url = `https://api.bunny.net/pullzone/${PULL_ZONE_ID}/purgeCache`;
const options = {
method: 'POST',
headers: {
'content-type': 'application/json',
'AccessKey': ACCESS_KEY
}
};
try {
const purgeResponse = await fetch(url, options);
const responseData = await purgeResponse.json();
return new Response(JSON.stringify(responseData), {
status: purgeResponse.ok ? 200 : 500,
headers: {'content-type': 'application/json'}
});
} catch (err) {
return new Response(JSON.stringify({ error: err.message }), {
status: 500,
headers: {'content-type': 'application/json'}
});
}
});
Thank you
I saw the edge scripting, but haven’t tried that out yet. I am low key more excited about their upcoming WAF and Bot protection ( As per their support they are coming by the end of this year).
This should be very useful to newcomers to Ghost (and those dissatisfied with their current host ). Your comments re. the responsiveness of technical support mirrored my experience when I was choosing a host. It was the first thing I did and those that took days to respond or never responded (by email and DM in some cases) were rejected outright.
Firepress did respond, within 36 hours I think, and were upfront about not being able to handle the relatively modest email volume I needed (~12,000/month). This surprised me.
The rest of your testing was much more thorough than I did (!), but I came to the same overall decision and am happily hosted by MagicPages .
Thank you, for confirming my findings.
After exploring their website, and observing their uptime monitor, I didn’t even wanted to contact their costomer support. Thank you for this input also, (with your permission, I would like to add this information to my post, if you want).
I did the load testing because with Ghost unless it is really bad, you would generally get a fast site. And normal navigation feels almost same for most of them. But what someones blog goes viral? Then that would be a very bad day for for them. That is why I did the load testing, to see if they can handle atleast logged out user traffic surge.
Great write-up and I echo your findings as well.
After reading your article it struck me. Something that have been out in the open for so long, but it haven’t clicked with me until now. Ghost (Pro) is setup for publishers, editorial content and news publications. Why else would they flip the pricing from email sent to subscribers?
Magic Pages on the other hand have a base price and charge extra for emails. And that is fine for those that send out newsletter every now and then.
Go with Ghost (Pro) if you send daily emails to all your subscribers. In all other cases go with Magic Pages I’d say. @jannis is also very supportive in the support chat even to me that isn’t a paying customer of his .