Moved from Blogger to self-hosted WordPress

The URL is the same but hosting for this blog has moved from Google’s Blogger to hosting WordPress on my own server. I learned a lot in this transition, and I’ll discuss why I moved in a follow-up post.

Because Blogger allowed hosting with my own domain name, I was able to switch hosting platforms without changing where my blog is found. Whatever your current blog host is, I recommend controlling your own domain name and using it to give you flexibility like this.

Migrating posts from Blogger to WordPress

I used Blogger’s export feature to create an .xml file that contains all my blog posts, user comments, and some other metadata from my blog. WordPress had a pretty good importer that could read this and bring posts and comments into my new WordPress app. Unfortunately, the permalinks that Blogger used, that were indeed included in the exported .xml file, were not imported. WordPress hasn’t updated their Blogger import plugin for 6+ years, so I don’t expect this gap to ever by filled.

Permalinks

The blog post permalinks that WordPress automatically generates were not exactly the same as Blogger. Even though the host name for my blog is the same, someone visiting a post via a link that was created back in the Blogger days may not be the same URL that WordPress is expecting.

There are a lot of blogger-to-WordPress redirector plugins. But from a review of several of them, they all seem to not apply because they expect your Blogger site to remain running in order to redirect to your WordPress site. In my case, my Blogger site would become inaccessible, and any redirection would have to happen within the WordPress site itself.

But the permalinks being different between the two systems, I had to help folks with old URLs to map to the new ones. The most prominent problem with the is that WordPress defaults to putting the day of the month into the URL, while Blogger just put in the year and month. This was an easy setting switch so that WordPress would use the same URL pattern as Blogger.

Blogger always adds .html at the end of every URL but otherwise they are very similar to WordPress. I added a simple 301 redirection plugin to WordPress to strip the .html from the URL if anyone is using a link to one of my posts so that WordPress will produce the expected blog post. Specifically, I match on ^/(.*?)\.html and redirect to /$1

That handles most cases.

But Blogger and WordPress drop different words from the post titles, so even after that general redirection, some posts’ URLs will change. Another cause for differences is that if I ever changed a blog post’s title after Blogger created the permalink, the permalink never changes, but upon importing into WordPress, a fresh permalink with the post’s current title is used.

In lieu of a great solution for each post URL, I’ll be leveraging the same WordPress plugin that manages my 301 redirects to watch for 404 errors, and if there are any popular posts whose permalinks are unique in Blogger such that they require a manual redirect rule, I’ll be able to do that on demand.

Themes

Blogger had some beautiful 3rd party themes to choose from. While WordPress has thousands of themes, it seems a lot of them are less focused on blogs and more focused on business front-ends, given WordPress’s broader application than Blogger. That made it difficult to find an aesthetic that I liked, which was surprising considering how popular WordPress is.

Hosting

I mentioned above that I’m hosting WordPress on my own server. I am fortunate enough to live in an area where gigabit Internet is available and affordable at my home. I bought a mini-PC for around $100 and installed Ubuntu 22.04 on it. I run nginx on it, which acts as a reverse proxy into docker containers where I host my two WordPress sites and MySQL database that backs them.

My ISP only gives me one IPv4 address, but I have several web sites to host. No problem for nginx, which looks at the host name on incoming requests and forwards them to the appropriate docker container, each of which hosts on a unique port internally. This lets me have several domains and HTTPS hosts, all on their standard 80/443 ports, but sharing a single IP address.

SMTP

WordPress comes with a broken configuration for sending emails, apparently. I still need to get that fixed up. Maybe not so much of a big deal, because the only use case I know for sending emails is for password recovery, and right now the configuration doesn’t even let other users create accounts on the site. Is there any benefit to allowing users to create accounts on a blog site, if the blog allows commenters without an account?

I could use a WordPress plugin, but the ones I’ve checked either rely on a 3rd party email service that charges (which just feels wrong when I have a capable server of my own), or requires that I grant OAuth permissions to my email account to their own servers, which I will not do for security reasons.

I could set up my own SMTP server I suppose, with authentication and all that perhaps. More work up front, but more independence down the road. It’s just a shame that self-hosted SMTP servers are almost universally DOA given spam filters today that are hard-wired to only let a few top global companies send emails to anyone. Given I have my own domain name, I would actually be delighted to host my own email server, if I thought my emails could reach anyone else.

Comment spam

Comment spam was a big problem on Blogger. I am delighted to see WordPress includes a feature to simply block new comments on posts older than 14 days, which I’ll use on my other blog. For this one, comments on old posts actually come in regularly, so I’ll need to find a better solution to the comment spam problem. It looks like there’s a popular WordPress plugin to filter them, but costs $12/year. That may be worth it, but I’m curious what free offerings are capable of first.

Stats

It’s been a long time since I ever bothered looking at visitor stats on my blog, but I want to pick that back up again as I intend to resume blogging regularly. I don’t see anything built into WordPress for this, but I expect plugins fill that void.

Final (or early?) thoughts on WordPress

I’m relatively new to WordPress. So let me know if you have suggestions.

Blogger only had ‘categories’ for its posts, but WordPress has categories and tags. I’ll have to figure out how to make best use of these two organizational tools.

I still need to refine my setup. Nginx static page caching, for example.