Reading Time: 6 minutes

My website has been on a North American host for the past half dozen years. It has been fine but the cost has been inching up and I’ve had some support issues. I have a budget in mind for this blog and it was starting to exceed the costs I want to invest. I had considered going back to hosting my own site but that has its own issues, mostly a lot of extra attention to detail. In the end, I found another hosting company and migrated last weekend. It reaffirmed for me that moving hosts is a great way to simply keep your website costs in check.

I have volunteered for a couple of organizations that ran websites, as well as worked on the websites for organizations that employed me. In all cases, they centered around some sort of content management system, increasingly WordPress. Even the websites at our law school are powered by a WordPress multi-site managed by the campus IT team.

In some cases they also, like mine, supported additional apps or even more central technologies like email. This is to say that moving a website isn’t an off the cuff decision to make. It usually involves moving domain names, which implicates the domain name system, and so you need to think about it as a project with a number of moving parts.

However, there are ways to simplify the process. The first one I’d recommend is to get behind Cloudflare or some similar domain name system-managing firewall.

Moving the Domain

When you move your website to a new website host, you need to update the internet’s pointers to your domain name. The domain name system (DNS) manages those addresses. This means that your former host and your new host have their own DNS servers. Until you update your domain name record, held by your domain registrar, to the new DNS servers, the internet thinks your website is on the old servers.

Your new website host will give you the new DNS server names to plug into a form on your domain name registrar’s website. In my case, Cloudflare is both my registrar and my DNS server. This can cause some confusion when you are getting technical support from your website host, since they assume you are using their DNS servers. But it makes moving a website much easier, in my experience.

Normally, when you update your DNS servers, there is a period of propagation as the change is recorded across the internet. In the old days, it might take a day or two to occur. It meant that, for a few days after a website went live on new servers, people might be visiting the old servers and old website.

If you planned well, no one could tell. The servers should look the same because you wouldn’t delete or disable a server until the change was complete. An organization with a lot of content updates might do a content freeze so that new content wasn’t added until propagation completed and all visitors were going to the same, new server.

In my case, Cloudflare was already configured as my DNS so the internet knew to look to them for my domain name entry. When I moved to a new website, I just updated my own DNS entries (changing one IP address, for my old server, to the IP address of my new server) and visitors immediately went to the new site. Unlike propagation, there was no way to reach the old site once I’d made that change. It eliminated any need for me to wait to add content.

Of course, when you move your website, you want to test it before you make this change. The website hosts I’ve used provide a temporary URL so you can see if your systems are working. In my case, I moved over a WordPress site, a Matomo analytics app, a Fresh RSS app, and my Piwigo photo site. This process was the most tricky but, once they were configured properly, I could see them working with the temporary URL. At that point, I could make the changes on Cloudflare and the change would appear seamless to visitors.

Moving the Files and Data

This feels like it has gotten easier over the years. I think there was at least the perception that it was more complicated. This can create friction that stops you from moving from one website host to another. It is the sort of friction that can lead to paying hundreds of dollars a year for a website that is really just a brochure.

In my case, I actually tried two new hosts. I downloaded my files from the old host using an FTP program called Filezilla. Once I had them stored on my PC, I started the upload to the new website host. The file upload is only part of the process, since every app I use also relies on a database. But this is the most time-consuming part as each file needs to be uploaded and I have about 20 GB of files.

The first website host was going to cost me about $100 a year. My ideal cost is in the $100 to $120 / year range. If you are paying more than that for your website, you may want to consider alternative hosts. Obviously there are factors that might impact your site that I don’t have. Mine isn’t a commercial site, nor is it a high traffic site; visits are in the thousands a month, not thousands a day. But website hosting has become a commodity and there are almost certainly options that will allow for comparison shopping.

I loaded up my files, created my databases, and then was stuck. I was seeing server errors that I couldn’t figure out how to fix. I could have reached out to the website host for support but I was concerned that the account itself lacked the tools and transparency for me to fix them on my own. I decided to bail before I invested too much more time in the host.

My second attempt, with a new host, worked pretty much ideally. I once again uploaded the files via FTP. Once they were there, I created the database for each app. Then I repopulated the databases. This was as easy as using the Export feature in phpMySQLAdmin to download the old database and the Import feature in phpMySQLAdmin on the new host to add it back in. In the sequence of steps, I always download the databases as the last step on leaving the old servers. In that way, I know I have the latest data, especially given that some of my apps (like Matomo analytics) do not create any file system files.

The one issue I had was that my photo database and my WordPress database were too large to import, due to the website host’s security policies. This meant having to re-learn how to use secure shell, something I haven’t used in yonks. Once I was able to connect to my new website host with SSH, I could run the command line program to import my databases.

One thing I like about moving websites is reminiscent of something I like about moving houses. You get to clean up. I left behind old databases that I didn’t need any longer. I created new database users with stronger passwords on my new site than I had had on my old one. These little bits of maintenance felt good as I know that I sometimes neglect these sorts of small things. Yet another reason not to host my own server.

During the testing, I realized that some of my images hadn’t been uploaded. I had not done a content freeze and my initial one-and-done upload had ended up stretching out over a few weeks. This is something to keep in mind but isn’t a reason not to move forward. In the end, I grabbed the folders for WordPress and Piwigo with the most recent images from my old server and FTP’d them to my new server. The database pointers were intact and, as soon as the files were in placed, the blog posts looked like they had done when published.

Review Your Costs, Make a Move

I am now at the point where I’ve moved webhosts enough (3 or 4 times) that I’m getting the hang of the process. Also, having my website behind Cloudflare has removed a bunch of the friction related to reconfiguring the DNS for my website and email and so on. It means I’m no longer beholden to a website.

This can be a very real savings. In my case, I was able to move to a website host and pay for three years in advance. The price was about 2/3d the cost of a single year with my most recent host. These can mean hundreds of dollars of savings for an organization.

When I was working with a non-profit in California as a volunteer, I migrated their site due to cost. It was a bare brochure website, running WordPress but just for ease of updating, and the annual cost was far more than they needed based on their traffic and complexity. I had done the same thing in Ontario for an organization that had lost its staff and then been hacked. The cost was only part of the issue there, in addition to the loss of trust in the consultants supporting it.

There may be more than savings. My new website host offers better spam filtering on my email, with a free Mailchannels license. It offers me more storage space to grow my photo collection. All in all, I’m getting more for less money.

Another place to look at cost savings is on domain names. One thing I like about Cloudflare is that a domain registration or renewal is at cost. A dot-com domain name is about $10 a year, a dot-org about $12. At some organizations I’ve worked, there were old domain names that needed to be maintained, as well as variations: ofaolain.com, ofaolain.org, ofaolain.net, and so on. Multiple domains and variations can really add up over time. If you’re looking to make some very simple budget cuts, website hosting and domain names are sufficiently commoditized that there are good options.

There are some organizations that still carry a wide variety of TLDs for each domain they own. I recently had someone from China asked if I minded if they registered ofaolain.com.cn for their company. I had sort of forgotten that people still do that.

An email that starts "Dear CEO" and then goes on to describe an application they received to register ofaolain dot com dot cn and other variations of my domain name in the Chinese top level domain namespace.
A screenshot of an email from an internet consultant in China

So, first of all, it’s goofy that a Chinese company selling to Chinese people thinks that an archaic Irish surname is a great selling point. But what do I know. Maybe it renders differently in Chinese. But also, you need to have documentation from China to register a Chinese domain name. Even if I cared, I’m not in a position to do anything about it.

Some variants, like dot-law, cost as much as my entire annual website budget. The explosion in new top level domains (TLDs) means you can break the bank by chasing each variant down. So it’s a great way to trim back to just the ones you need and the variants you think might be used in a confusing way.

One other place to look is at your secure sockets layer certificate. When I arrived at the law school, I found we were paying nearly $1,600 for two certificates for a law library server. That’s an annual cost. If you find a provider that uses Let’s Encrypt, or can set it up yourself, you can eliminate your SSL certificate costs. Let’s Encrypt is free. If you’re not on a host with Let’s Encrypt, savings on certificates may justify a move all by itself. You may find that you’re paying for certificates on a web host that offer’s Let’s Encrypt. In that case, you can switch over and potentially find a savings.

Fortunately, I’m in a great place with a non-commercial website. I can afford to not care about things like competition (although I do block scrapers and harvesters). But one reason I can is that I am able to keep my costs for running this site as low as possible. A big part of that is the flexibility to move web hosts when the costs outweigh the benefits.