Setup

Making this website work has been a trial in patience. I first got the idea browsing YouTube a few days back where I saw a video by Chris Titus explaining how to get going with a web server for practically free. GCP has a plan where you have access to 1 vCPU and ~ 600 MB of ram, with a 30 GB storage drive for free underneath a certain bandwidth per month. Even if you exceed this level, my current set up is $ 0.007 per hour of usage.

I initially followed the steps outlined in the video above to start an Ubuntu based server running a Lamp stack and Wordpress. This guide was a good jumping off point to learn enterprise Linux, but I did not like the idea of being tied down to a service like Wordpress. Browsing the web, I found Jekyll, a static site generator, allowing me to create everything in markdown and compile into HTML.

This was much more agreeable to me, as I enjoy tinkering with things, and this gave me the option to get deeper in the weeds. So I ran with it.

I deleted my first cloud instance, as I screwed up some configuration and found it much easier to start from scratch with a new OS. I went with CentOS, only for the reason that I did not want to run Ubuntu as a server, and that I wanted to learn something new.

I began by setting up Cloudflare as a DNS. I liked this option more than using Googles DNS because it provided me both a DNS, and a signed CA certificate. Its also providing me a myriad of other security features such as DDoS protection. I am also using the free tier of Cloudflare, which doesn’t allow me some firewall or monitoring features, but for this site, I really don’t need them.

I also hat to get TLS enabled on my web-server, which with not knowing what I’m doing, made it difficult. To set these keys up, I needed to ensure that only root has access, which meant learning how to edit permissions. That also meant a lot of searching “How do TLS???” I did figure it out eventually, and discovered that the root (get it?) of my issue was having to enable TLS in my SSL config. Who Knew?

After all of this, I now have proper HTTPS from my server to Cloudflare’s DNS servers with a CA certificate, and from Cloudflare to you. I probably didn’t even need to do all of this, and could have just used OpenSSL, stuck with those default keys, and used Google, who I purchased this domain from, to run everything. Or even yet, stuck with HTTP and call it a day. But where would the fun be in that?


Design

However, the saga has just begun. This current web-page is not the original one. I had begun by searching for themes for Jekyll, and settled on this one, Lanyon. I like the design of it, having a hidden navigation bar, and the greatest feature of all, was that I didn’t have to write any of the CSS for it. I will still probably learn how to code in CSS, but I wanted something that looks good out of the box.

The issue with this came when I updated my laptop. When I set up this server, I was using Linux Mint on my laptop, and creating and compiling site data locally. I had learned from previous mistakes to create backups, but apparently, the machine had another idea. I was install standard updates, and rebooted to apply. For some reason, the install of Mint broke and I could not even get to the GRUB menu.

I attempted a recovery, knowing full well that I had made a backup locally. Booting off of a live CD (or in this case, a thumb drive), I was able to revert to this backup. But when restarting, I was greeted with even less, and couldn’t even get past the boot device selection. My data was still on my drive, but I had no way of accessing it.

After much searching and attempted recovery, I submitted and decided to just make a new install. I chose to go with Pop!_OS, because I have heard that it is pretty good. When installing it, I just decide to wipe the whole drive, windows partition and all.

In doing so, I lost all of my configuration for this site, so I had to reinstall utilities, and go into the current site deployment to rip the CSS out, as I had made some changes to it that I really did not want to have to recreate.


Wraping it up

I learned some important lessons. Mainly, make an offsite backup regularly, even if on an external drive. Also, it should be stated that web development is a little complicated to get into. It is not, however, an incredibly difficult thing to learn, as there are so many helpful guides out there to hold your hand when you inevitably break things.