azureblog.co.uk
← cd ~/posts

Road to 50: how this blog runs for about £1 a month

Fifty posts in, here's exactly how azureblog.co.uk is built, hosted and published, and why the whole thing costs less than a coffee each month.

3 min read✓ checked 8 Oct 2026Azure
On this page
  1. The bill
  2. The architecture
  3. What the build does
  4. How a post gets published
  5. What I'd tell anyone starting a technical blog
  6. Next fifty

This is post number fifty. It felt like the right moment to open up the bonnet and show how the site itself works, because it's a neat example of how far the free and near-free tiers in Azure can take you.

  1. 01Write the post
  2. 02git push to main
  3. 03GitHub Actions builds
  4. 04Static Web Apps edge
  5. 05Live on azureblog.co.uk
Every post follows this path. There's no server to patch.

The bill

ServiceWhat it doesMonthly cost
Static Web Apps (Free)Hosts the site on a global edge network, with free managed SSL certificates and custom domains£0
Azure DNSHosts the DNS zone for the domainabout 40p, plus a few pence per million queries
GitHubStores the source and runs the build and deployment workflow£0

The domain registration is the only other cost, and that's paid yearly to the registrar. Everything else rounds to well under £1 a month.

The architecture

There's no server, database or CMS. A small Node.js script turns a folder of posts into plain HTML files, and Static Web Apps serves them.

Azure DNSApex and www records for azureblog.co.uk
Static Web Apps (Free)Edge hosting, HTTPS certificates, headers, 404 page
dist/ folderPlain HTML, CSS, JSON data and images. Nothing runs on the server
Each layer only does one job.
  • Static Web Apps serves the files from the edge. A small staticwebapp.config.json sets security headers, cache rules and the 404 page.
  • Azure DNS handles both the bare domain and www. Bare domains can't use a CNAME, and many registrars don't offer ALIAS records, so moving the zone into Azure DNS was the clean fix. The domain stays registered where it was; only the nameservers changed.
  • GitHub Actions runs the build and deploys the output with the official Azure/static-web-apps-deploy action.

What the build does

Each post is a single HTML file with a small block of metadata at the top: title, date, tags and a one-line summary. The build script reads them all and produces:

  • a page for every post, tag and tool, with reading time worked out from the word count
  • a social sharing image for every post, drawn as SVG and rendered to PNG
  • the RSS feed, sitemap and a search index
  • a calendar feed of Microsoft deadlines from the timeline
  • the diagrams in posts, which are written as a few lines of JSON and turned into HTML and SVG at build time

The tools run entirely in your browser. The and decoders, the GUID lookup and the rest load a JSON file and do the work locally, so nothing you paste is sent anywhere.

How a post gets published

MeGitHubActions runnerStatic Web AppsPush a new post to main1Workflow starts2npm ci, then node build.jsUpload dist/ with thedeploy token4New version live at the edge
From commit to live in about a minute.

The workflow also runs once a day on a schedule, so anything date-based, like the countdowns on the timeline, stays current without a commit. No plugins to patch, no hosting control panel, no database backups. Git history is the backup, and rolling back a mistake is a revert.

What I'd tell anyone starting a technical blog

  • Start simpler than you think. A static site is fast, secure and nearly free. Add a build step only when you have a reason to.
  • Write the post you wish you'd found. Most of the posts here started as an error message or a change notice that needed a clear explanation.
  • Link to the source. Microsoft changes things often. Every news post here links to the official documentation so readers can check the latest detail.
  • Use your own platform. Hosting an Azure blog on Azure keeps the skills sharp and gives you real-world material to write about.

Next fifty

More of the same: what's changing in Entra ID, Intune and Azure, what it means in practice, and the scripts and steps to act on it. Thanks for reading.