So, I recently changed this site from a WordPress blog to a GitHub Pages-hosted Jekyll blog. Here’s how it went.
Switching from Wordpress to Jekyll
Converting the handful of posts I had to markdown was pretty simple. I used the WordPress Jekyll Exporter plugin and fixed all my image links by hand. I also set up a few redirects with jekyll-redirect-from for a few posts that had changed urls so they wouldn’t break any links.
Setting up a custom domain with GitHub Pages
After that, I had a working Jekyll blog in my GitHub user page repo,
walsh9.github.io. I wanted this site to be at my
walsh9.net domain. So I went to my domain name registrar and set up some DNS records according to GitHub’s instructions. I added a CNAME file to my repo with
walsh9.net in it. And since I didn’t want any subdomains like
blog, I set up an A record to pointing to GitHub’s servers.
This worked and my site was now showing up at
walsh9.net. But now all my project pages were showing up there as well. For example,
http://walsh9.github.io/super-micro-paint was now redirecting to and showing up at
http://walsh9.net/super-micro-paint. This was kind of cool and some people might like it, but I didn’t necessarily want all my projects to be at my personal domain like this, and with this setup I couldn’t pick and choose. It was all or nothing. Basically
walsh9.github.io, and all the project folders under it were entirely moved to
Switching from a user page to a project page
Luckily, this was easy enough to fix. I renamed the repo from
walsh9.net. Now it was just a regular project repo. (By the way, the repo name could have been anything else. It didn’t have to be
walsh9.net. What’s important is the CNAME file in the repo.) Oh, I also had to remember to create a
gh-pages branch. The
[username].github.io repo is special and will create pages from the
master branch, but normal project repos need a
gh-pages branch. Once I got that sorted, my page was showing up at
walsh9.net again, but now my projects were back at their familiar
Moving to CloudFlare
I thought I was done at this point. But then I tried to open
https://walsh9.net. It didn’t load. Okay. After some research, I found out that using HTTPS with GitHub Pages on a custom domain with no subomain does not work well. Next step was to shift hosting to CloudFlare. After creating a free CloudFlare account, and moving my DNS services over to CloudFlare I had working HTTPS, as well as a bunch of other neat features to play with.
What about email?
Oh, since I’m now using CloudFlare for DNS I can’t take advantage of my domain registrar’s email forwarding… I wasn’t really using it anyway, but now that I couldn’t have it I kind of wanted it. It’s not fully set up yet but I’ve been playing around with using a free Mailgun account and setting up some rules to redirect to my email. Seems like it might be a bit overkill but if it works it works. I’m not actually fully sold on moving my main email address to my own domain yet so this part is just an experiment anyway.
I’m pretty happy with my new setup so far. I know it’s a little more dependent on external services now but I can always host a Jekyll-generated site anywhere so I’m not too worried.
Well, I guess during all that moving around something weird happened to all my gh-pages project pages because they were gone. I had to force GitHub to regenerate each site with this dirty trick:
git co gh-pages git pull gh-pages git commit -m 'rebuild pages' --allow-empty` git push gh-pages