Goodbye WordPress: How I migrated to Hugo and Azure Static Web Apps

October 18, 2026

I started blogging back in 2015. At first, I was fairly consistent, but as I’ve learned from other bloggers, posting has seasons where writing comes easy and others where life and other things just get in the way. For me, I did ok until 2022 and then nothing until late 2024. After that, nothing since, outside of August 2025 to Aug 2026, when I had been blogging about once per month in my role as Senior DBA Consultant for The SERO Group.

One influence on my waning practice of blogging was that I had started focusing more on posting on LinkedIn. Also, as you’ll see below, blogging on WordPress had become a lot more challenging for me.

Why did I decide to leave WordPress?

  • Cost was an issue. I was spending upwards of $500/year for all the services I was using. This included Deluxe Managed WordPress, MS365/Email Essentials, domain renewals and protection costs, SSL, and a few others.
  • Poor support for the cost. Almost anytime I called GoDaddy for help with something, I could get help only if I wanted to pay even more money for a support plan. This included a time when the site was being bombarded by emails to my contact form. Over the course of a few hours I had accumulated several hundred emails and GoDaddy wanted more money before they would assist.
  • The block formatting for new blog posts was a horrible pain for me. Many years ago WordPress switched to having people add “blocks” to pages and formatting those blocks. Prior to that I felt like blogging was much easier. The block formatting made little sense to me. It changed my blogging workflow in a very radical way, making it a lot harder to write posts. This killed what little motivation I had to keep blogging.
  • Managing everything on GoDaddy was a maze of links to see and administer everything.

What were the migration goals?

  • Reduce hosting costs to zero if possible.
  • Migrate before a bunch of GoDaddy renewals in November.
  • Preserve existing blog content, original URLs and minimize SEO disruption.
  • Maintain familiar navigation and essential pages.
  • Minimize hosting complexity.
  • Start learning some new technologies.

Why Hugo and Azure Static Web Apps?

  • There was a known, good experience with Hugo and Azure Static Web Apps. Kendra Little had blogged about her journey away from WordPress, and her post references a few other people who had done this. Based on this, I knew it could work and I knew there was likely good forum support for people trying to execute this transformation.
  • If the migration worked, it would all be free!

The old technology stack

  1. Website: leemarkum.com
  2. Domain registrar: GoDaddy
  3. Website hosting: GoDaddy Deluxe Managed WordPress
  4. Email: Microsoft 365 Email Essentials through GoDaddy
  5. Blog content: SQL Server technical articles, presentations, and professional resources

The new technology stack

ComponentTechnology
Development OSLinux Mint 22.3
Static site generatorHugo Extended 0.165.0
Hugo themehugo-universal-theme
source controlGit and GitHub
Git InterfaceGitHub Desktop
HostingAzure Static Web Apps
DeploymentGitHub Actions
DNSCloudflare Free
Domain registrationGoDaddy (Will likely move to Cloudflare)
EmailExisting MS365 Essentials at GoDaddy (Will eventually move this)

Some folks might be questioning that first choice. Linux Mint?! First, what even is that and why did you choose it?!

Firstly, in some ways, I’ve fallen out of love with the Windows desktop OS. There are plenty of well-discussed reasons for this on the internet over the last several years. I started dabbling with Linux about 3 years ago because of those well-discussed reasons.

Second, Mint is a popular Linux desktop project based on Ubuntu. Mint has a lot of support for several reasons.

  • The base is Ubuntu, which is based on Debian. Those two distributions are two of the most common ones around, and that means a lot of support is available.

  • Mint, on its own, is wildly popular and so it too has its own very strong community.

  • Mint just works right out of the box.

  • Mint feels very familiar and easy to navigate for folks coming from Windows.

Eventually, I will also likely move the domain registration to Cloudflare and port the existing email inbox to something else. That MS365 Essentials yearly subscription renewed only a couple of months ago, so moving it right now wasn’t time-sensitive.

Getting started with Hugo

A. Installed Git on my Linux mint machine. Git is a requirement for the project when using a GitHub based deployment workflow.

B. Installed Hugo.

  • Hugo is free and open source software on GitHub. It can be installed a few different ways depending on whether you are using MacOS, Linux, Windows or other, more exotic Operating Systems.

For people on the Linux base I am using, Ubuntu/Debian, the command to install Hugo from that distribution’s repositories is:

sudo apt install hugo

You can also do this from the Linux Mint Software Manager application. One important note is that when doing this on Linux, look in your Software/Package Manager for an option to use your distribution’s version of the software versus the FlatPak version. FlatPak is perfectly fine, but often a Linux distribution has custom versions of software and those can offer better integration with that distribution.

  • I initially encountered an older Hugo version and upgraded to Hugo Extended 0.165.0 from the Hugo GitHub. This happened because my distribution’s Hugo package version was a bit older than what was available from the official GitHub. I downloaded the most recent package for my family of operating systems and then ran the below, ensuring that the filename in the command matched what I had downloaded.
 cd ~/Downloads
sudo apt install ./hugo_extended_0.165.0_linux-amd64.deb
  • Verified installed Hugo version using the command “hugo version” from the command line to ensure I was on Hugo Extended version I had just downloaded.
  • Selected a Hugo theme for my site and installed the theme. The theme came with an example site that showed how a Hugo site can be organized.

Content migration from the old site

  • Converted WordPress-exported posts into Markdown using the “lonekorean” GitHub link listed in the Documentation and Resources section below.
  • Created Hugo leaf bundles under content/blog on my machine.
  • Retained all 82 published articles.
  • I excluded 41 draft folders. I wanted to review the content and possibly rework anything in those drafts.

Final migration count: 82 published posts migrated; 41 drafts excluded.

Content grooming

  • Corrected image references and captions that had WordPress specific formatting.
  • Converted a YouTube embed to Hugo-compatible markup.
  • Updated references to discontinued social platforms. I had calls to action that included references to social media I had abandoned. I wanted these removed. ChatGPT created python scripts that I ran iteratively to remove these references.

Creating the Azure Static Web App

Once I had the Hugo site working locally, the next step was getting it hosted in Azure Static Web Apps. I used GitHub to store the site files and GitHub Actions to handle deployment to Azure.

I leaned on the reference link below from MS Learn and ChatGPT to help with this part, including the issue I describe below.

There was an issue with the Linux runtime of Azure Oryx using an older Linux runtime to build the website in Azure. However, the Oryx build system failed because the underlying Debian Bullseye (Debian 11) environment had older system libraries than the Hugo executable I was using required. for teh curious, Debian 13 is the current version of Debian.

The error messages referenced missing versions of GLIBC and GLIBCXX. The problem wasn’t with my Hugo site itself; it was that the Hugo executable couldn’t run in the build environment.

The GitHub Actions workflow was changed. The new approach separated the build process from the Azure deployment:

  1. GitHub Actions installed Hugo Extended 0.165.0 using peaceiris/actions-hugo@v3.
  2. GitHub Actions ran hugo –minify to generate the static website.
  3. Hugo wrote the generated HTML, CSS, JavaScript, and other files to the public/ directory.
  4. Azure Static Web Apps deployed the already-generated website without running another application build.

This avoided the Oryx runtime compatibility problem entirely.

Reconfiguring DNS with Cloudflare

  • Reviewed GoDaddy DNS and downloaded a backup copy of that config.
  • Created Cloudflare free account and set up a DNS zone.
  • Cloudflare imported 19 DNS records.
  • Compared against 23 GoDaddy records.
  • Initially left proxy-eligible records DNS only.
  • Changed the authoritative nameservers to the records provided by Cloudflare.

Documentation and resources

SubjectReference
Kendra Little postKendra Little’s Migration to Hugo
Exporting GoDaddy Site to XMLExport GoDaddy Site to XML
Convert WordPress Export to MarkdownConvert GoDaddy Export to Markdown
Hugo installationLinux Installation Guide
Hugo content organizationPage Bundles
Hugo front matterFront Matter Documentation
Hugo URL managementURL Management
Hugo themeHugo Universal Theme - GitHub
WordPress exportsWordPress Export Guide
Azure + HugoPublish Hugo to Azure Static Web Apps
Azure custom domainsConfigure a Custom Domain
Azure apex domainsConfigure an Apex Domain
Azure default domainConfigure the Default Domain
GitHub ActionsGitHub Actions Documentation
Cloudflare DNSCloudflare DNS Documentation
Cloudflare CNAME flatteningCNAME Flattening
Cloudflare proxyProxy Status
Cloudflare TLSFull (Strict) SSL/TLS Mode
ChatGPT
Xed text EditorMint’s own text editor

Yes. I leaned on AI to help me through a lot of the very unfamiliar territory I was in. Early on I prompted the model to explain what the CLI commands were doing so I would be learning some command line along the way. I also asked a lot of questions as I read various product documentation pages. I wanted to understand as much as I could about the process, without a severe slowdown in getting it done.

Conclusion

With help from AI to understand and complete very unfamiliar work, I successfully moved my blog from GoDaddy to Hugo and Azure Static Web Apps. I then cancelled the hosting elements that I no longer needed at GoDaddy, saving me significant money.

There was a fair amount of customization that ChatGPT helped me do to the Hugo theme to make it render the website more or less the same as the GoDaddy site. This is an advantage to Hugo. It is very flexible. So, even if the theme you initially select doesn’t seem to have the elements you need, a little HTML and CSS, along with some directory restructuring in the Hugo project files can get you to the finish line.