A personal website for $50 a year

Since I’ve recently redone this website, I thought I’d write quickly about what I used to put it together.

While sites like WordPress.com and SquareSpace can make it extremely easy to put together nice and easily maintained websites, they cost a little more than I am willing to pay.

My aim for my own website has always been to have one for the lowest cost and the greatest flexibility. This is the setup I currently work with.

The Pieces

The platform: WordPress. For this website (and the site for NatureCulture), I now run and install the free, but fully functional, version of WordPress. This gives you access to the most important and useful parts of WordPress without having to subscribe to WordPress.com’s services. The trade-off is that you have to do a lot of hands-on configuration and maintenance yourself.

I’ve been using WordPress for NatureCulture for a while, and have started to appreciate how easy it makes it to manage files and alter the appearance of a website. Because it’s widely used, if something does break, it’s not difficult to find a tutorial or guide online for fixing it.

The hosting service: NearlyFreeSpeech. This is a pay-what-you-use hosting service based in the US that I’ve been using for nearly ten years. Depending on your usage, you might pay only a few dollars a month for hosting. If you’re a technical person, NearlyFreeSpeech gives you a lot of freedom, but there are also a lot of things that you can inadvertently break. Fortunately for me, they seem to know that a lot of people will want to use WordPress with them, so they make it very easy, and provide clear instructions for installing it.

Other bits

WordPress and NearlyFreeSpeech are the main parts, but in addition, there are a few bits of software that are essential.

An SSH client: To use and maintain WordPress takes logging into NFS’s server and manually typing things into a command-line interface. This interface is used to update the WordPress software, as well as its themes and plugins. (WordPress has some web-based tools, but I’ve never been able to get these to work.) To log in, you need software that will connect you to the server using a protocol called SSH. This is just something that let’s you control another computer remotely using text commands. SSH is easily found on MacOS and Windows, and on iOS I use something called Termius.

An FTP Client: On occasion, I need to transfer manually transfer some files to the server, such as if I want to embed something in a page that WordPress doesn’t quite support. For these purposes, you need an FTP client that will easily let you select and transfer files from your computer to the server. I use a free piece of software called CyberDuck.

These pieces let me run fairly complex websites without too much trouble. Also, it’s really cheap.

Cost: The main costs of running a website are for storage space, bandwidth, and domain name registration. In addition, to run something like WordPress, you need a computer somewhere running a database system (to store your blog posts and so on).

The domain name registration (to claim “gjotsuki.net”) runs about $15 US a year. This price is basically the same no matter where you host your website.

The other costs are the ones that vary. If you sign up for a service like WordPress.com (WordPress’s commercial, all-in-one package), then you pay around $3 a month for basic hosting, so $36 US a year. (A domain name is included for the first year.) The downside is you don’t get to customize the appearance of your website very much, and don’t have FTP (or SSH) access to your server, limiting how creative you can be with content. To get those things can cost two or three times as much.

With my own setup on NFS, I pay the same $15 per year for the domain name, but only around $48 for everything else per year. This actually includes the cost of both my personal website, and another website I host for my parents. (For comparison, the website for NatureCulture cost less than $40 to run for all of 2019, including the domain name.)

WordPress is actually quite a heavy piece of software, so if you use something less resource-intensive to run your site, it’s possible to reduce the cost even further. Back in 2012, when my site was much simpler (a few text pages, PDFs, and a couple of images), I paid less than $6 for the entire year, plus $15 for the domain name.

With these basic parts, I get something that matches the service that WordPress charges $34 a month for.

Why WordPress?

This current website is the third version I’ve put online since 2010-ish, when I first decided I should have a personal page. In the beginning, I learned basic CSS, typed all of the pages into a text editor, and uploaded the individual files myself to the server.

The website was only a few megabytes in size, which was mostly PDFs and a few images, so it loaded extremely quickly. But the main reason for me doing things this way was that it was cheap.

The trade-off was that the site was difficult to maintain. Every time I wanted to make a correction or add something new, I had to hand-code everything and re-upload the files. The same had to be done to change the site’s appearance. In addition, I had to manually keep track of the relationships between all of the pages, and make sure all the links worked.

For a set of static pages, this was not too much of a burden, but it wasn’t a system that would work if I wanted to regularly add content. Writing and formatting text in TextEdit with HTML tags was also difficult to read and correct.

Nevertheless, the first version of my page lasted for nearly eight years.

When I finally decided to make a change, I wanted something that would look a little more interesting and let me add content more easily.

I came upon a piece of software called Jekyll. Jekyll is similar to WordPress. It’s geared towards creating sites with frequently updated blogs and supports themes so that a site’s appearance can be customized and changed easily.

But there is an important difference between WordPress and Jekyll. WordPress runs on the remote host, and is accessed through a web browser. Beyond rendering webpages, your local computer does not do anything special. All of the actual work is done on the server. Blog posts are generated remotely as they are requested, and then sent to the web browser.

In contrast, Jekyll is software you run locally, on your own computer. For instance, to post a new blog entry, you type the content into a file on your computer and save it as a text file (following a few formatting conventions.) Then you run the Jekyll program, and it generates an HTML file and adjusts other pages to accommodate the new entry. These files are then uploaded to a server, which just dispenses them as is to visitors’ web browsers. Basically, Jekyll does once on your own computer what WordPress does (in principal) on the remote server every time somebody visits.

I liked Jekyll because it does not use many remote resources, making it quite cheap to run a site, but it is more manageable than directly editing HTML and CSS files. There was also a pretty good selection of themes, so I was able to find something that I liked.

The downside was that Jekyll never quite worked for me as promised. I would type in a page, run the software, and get errors or find the page rendering in ways I didn’t expect. I would try to customize the pages and when I got things looking ok, something else would stop working. I eventually got a site that I was fairly happy with, but I barely touched the site again for more than a year.

In the end, I settled on WordPress. Working on NatureCulture, I had figured out many of its quirks, and I felt comfortable installing and customizing it. The most important part was, even though using WordPress increases the cost of running my site, its design is intuitive enough that I will never forget how to do ordinary things on it. I wouldn’t have to fight WordPress in the way that I fought with Jekyll. A bonus is that WordPress has a very large ecosystem of themes, tutorials, and plugins to choose from, including a capable iOS app, and good traffic stat tools.

So here we are. It’s much easier to do than it sounds. Try it out.