Ghost on Azure App Service: No Longer Maintained
My open-source project which let anyone quickly provision a free Ghost blog on Azure App Service, will no longer be maintained. As of this post, I've archived the repository.
I hoped to revive it someday for the latest Ghost versions, but that's off the table now. This post is my project post-mortem.
Project State At Archival
The last supported version of Ghost was 4.36.0, released back in 2022. It lags two major releases behind Ghost 6.0, flashing warnings such as "Update Ghost now: your Ghost site is vulnerable to an attack that lets unauthenticated attackers read arbitrary data from the database."
GitHub Dependabot flags numerous critical dependency vulnerabilities. This version should not be used for new deployments.
How It Started and Why People Loved It
I kicked off Ghost-Azure in 2017 to make blogging dead simple and free on Azure. I hosted it on Azure App Service's Free tier (Windows plan), with an optional Azure CDN for caching and custom domains. People loved it. By the time of archival, it had 509 forks and 134 GitHub stars. Most forks were created for applying custom tweaks to blogs, so I estimate thousands deployed it successfully.
Azure Changes More Than We Think
Azure in 2026 looks nothing like 2017. Services launch, retire, merge; some previews vanished without graduating to general availability. App Service Free tier still works on Windows, but Linux plans now make more sense for Node.js apps.
I hosted my own blog on the Free tier (Windows) behind a cheap Azure CDN provided by Verizon. There have been some interesting changes with the companies that provided the CDN technology. Actually, the CDN services originated from Edgecast Networks, Inc., which Verizon acquired in 2013 and rebranded as Verizon Digital Media. Apollo Global Management later bought Verizon Media (including the CDN) in 2021, reviving the Edgecast name before Limelight Networks merged with it in 2022 to form Edgio. Following Edgio's Chapter 11 bankruptcy filing in September 2024, the company officially ceased CDN operations on January 15, 2025. Akamai acquired select assets like customer contracts and security for $125M, while the remaining assets went to buyers including Parler Cloud Technologies.
Azure CDN from Edgio (formerly Verizon) and Akamai are retired; Microsoft CDN is phasing out (no new profiles can be created). Everything funnels to Azure Front Door Standard now, at about $35/month base, which is overkill for personal blogs.
Updates Became a Nightmare
I poured many hours into automating the integration of new Ghost releases into the repo. Hooks fired on Ghost's official releases, an automation picked up the most recent version, deployed it and ran some integration tests. Custom deployment script in Kudu took care of rebuilding Node packages, and handled DB migrations. But Node package bloat hit Kudu's deployment timeout limits, making deploys unreliable. I stopped all automations and decided that App Service on Windows was no longer right for modern Ghost.
The Burden Of Open-source
I love open-source. This project was also built in the open and at some point it got popular, with issues and questions rolling in. Helping others felt great at first, as you feel it matters to people. But it turned into a full-time job that I was doing for free. No real community formed, and there were no meaningful outside contributions. Most users fixed their own stuff without giving back. And I'm not claiming I did a great job growing the community.
The lesson I took: Without a healthy community, even the best open-source project dies when the priorities of the original author shift. I remind myself of that when I have to select an open-source piece to use in a client project.
What's Next
As I write this post, notifications scream that this version is insecure. I know that. I tinkered with Ghost 5.0 some months back, paused when 6.0 dropped, and picked it up again recently. I'll try to share a fresh solution soon.
Thanks to everyone who used or forked my project over the years.