As may be clear I have rebuilt my website from wordpress to Jekyll. I will documenting the reasons for this change and how I designed this new site in this post.

Goals for move

  • Reduce Costs
    • Wordpress is a very Powerful CMS and so intern takes a good chunk of resources that need to be added to the cost of a VPS
  • Increased security
    • Wordpress has and continues to have continues security vulnerabilities. Moving to a website to reduce the security risks means less effort that I need to regularly put into this site to maintain this site
    • This is more a reflection of me not utilizing the very powerful features of Wordpress that cuase this increased attack surface.
  • Learn a new system.
    • One of the main goals of this site is to further my personal learning and this will drive to this goal.
  • Move to a Markdown based editor
    • I have fallen in love with markdown so a website that I can write in Markdown sounds right up my creek

The Solution

I have chosen Jekyll to build a static website. Jekyll allows me to write posts in markdown (as this one is), and generates a static set of pages.

Static websites are very secure as they do not accept any user input and can even be hosted on a server less infrastructure. This can be done with AWS’s S3 and I am hoping to try this out on Digital oceans new Object store.

The architecture

For this site I have built a Ubuntu server running nginx. Cron will pull down the current site from github and Jekyll will rebuild and deploy the site to the webroot directory. This allows me to retain backups and versioning with git.

I am looking at moving this site to Digital Oceans object store once I am given access to the beta or it becomes generally available.

Code for this site can be found on github https=//github.com/invoke-Coffee/www

  • The Server is running Ubuntu 17.04 on Digital Ocean.
    • I may move this to FreeBSD at some point if the Object Storage does not work out.
  • Webserver is nginx with Let’s Encrypt to provide the SSL certificate
  • Cron will be periodically pulling the Master branch and rebuilding the site
    • This will need refinement to meet my goals as I am unsure if I will want this automated or done by push.
  • On my system I will use Atom and git to update this site.

Known issues

  • Existing links will go to site root and not old pages.
    • Nginx does not seem to have a clean rewrite for query strings to pages, Though I will be investigating more.
  • This site is very plan and needs some design work.

Conclusion

While this site is currently not very pretty, it has meet may of my goals and I plan to keep it around for a while.