Updated on December 10, 2021
Hello everyone. I’m pleased to report that after a decade on WordPress (and its Gutenberg-free fork ClassicPress), I’ve migrated my blog to Ghost as a content management system (CMS).
Reasons for switching
I’ve previously written about why I went with ClassicPress over WordPress—basically a dislike of Gutenberg as an editor. I also hoped it’d be a longer-lasting solution than WordPress’ Classic Editor plugin (which is only planned to be supported for a limited time). Unfortunately, instead of gaining traction, it feels like most people are just sticking with WordPress and running the Classic Editor plugin. Also, this extends to plugin and theme developers; last week, I found out my site’s theme, along with several plugins, no longer supported ClassicPress, via requiring a minimum of WordPress version 5.0. This included the SEO plugin I was using… and I was using that because the other SEO plugins (like Yoast) also dropped support for pre-WP 5.
As such, instead of moving back to WP-proper, I’ve decided to give a non-WP CMS a go. I decided on Ghost, a CMS created by ex-WordPress staffers that’s meant to be focused mainly on blogging and content creation. (WordPress is more about site layout/creation or being a jack-of-all-trades nowadays.)
Migrating from WordPress/ClassicPress to Ghost
I first backed up the old WordPress posts, using the Ghost export plugin. I downloaded the JSON file; the ZIP includes images, which given my blog’s age/size would’ve resulted in too many timeout problems. For the images, I used the Export Media Library plugin, which downloaded the images in a ZIP file. I then manually uploaded those to the new Ghost installation (using an FTP program).
For Ghost installation, I installed the one-click droplet available in my current webhost, DigitalOcean. Everything went smoothly, and after installation, I pointed the DNS for the site to the new droplet. (This YouTube video offers pretty decent instructions on setup.) I created a new Ghost account name, and imported the old WordPress posts (under the main Dashboard > Labs).
Post-installation activities included:
- Fixing or adjusting broken links.
- Finding a new theme (which, like on WordPress, wasn’t easy). I went with Liebling, one of the default Ghost themes.
- Installing search support, as it’s not native in most Ghost themes. I followed these instructions.
- Signing up for Clicky for site statistics support. I didn’t want to go back to Google Analytics, or reinstall Matomo (which doesn’t seem to easily support migrating data anyway).
- Adding a page for supporting my blog via Patreon or Ko-fi.
- Redirecting the old URLs. The default on Ghost doesn’t include the date in post URLs; while I could turn such on, I figure shorter links and less obviously dated looking ones might be worth trying.
- Updating some other site information.
- Installing Disqus for comments. Unfortunately, I wasn’t able to import the old WordPress comments (though I should still have those in backups).
Pros of Ghost
For starters, Ghost feels a bit faster than the old WordPress/ClassicPress installation.
There’s also fewer things to maintain in Ghost; on my old site, I was running 15-18 plugins alone.
I also like some of the focus on writing. While Ghost uses Markdown (and its own version of cards/blocks), everything’s clearly geared toward creating posts. WordPress’ Gutenberg feels like it’s geared more toward site layout.
A lot of things I installed plugins for on WordPress are included by default on Ghost: brute force protection, SEO, etc.
Cons of Ghost
As usual, there’s also downsides.
The main one is there’s no real media library built into Ghost, which makes reusing an already uploaded image difficult. On the plus side, the image insertion tool does tie into using Unsplash images, which are free.
There’s also less support online for Ghost as a whole versus WordPress. The latter is the dominant CMS, with a third of all websites running Automattic’s software.
It’s also a bit more technical in some aspects than WordPress. Ghost runs on Node.js as a platform, which relatively few webhosts offer. Self-installation of Ghost from scratch (versus a one-click installation) isn’t as easy as installing WordPress.
Finally, while Ghost offers managed hosting, they don’t have a free option. Instead, it’s at least $29/month for their basic plan, which is expensive. (Again, a $5/month droplet on DigitalOcean works fine.)
Conclusion
So far, things seem to be going OK. While fixing any lingering broken links/images will be an ongoing project, almost everything else about the blog should be fine. If there are any questions or requests, please list them below or reach out to me via email/social media.
Photo by WOCinTech Chat (Flickr / CC BY / cropped from original)