New Website, New Tech

The relaunch of my website was also an exploration into some different technology for deploying web applications.

The Old

My website had just been a static site generated with Jekyll and hosted with nginx. That setup worked great, but it had become a pain to keep Jekyll updated, mostly because of the custom plugins and configuration I’d made. Also, I really just want to be able to write and manage posts in a web browser.

The New

Back in 2013, I’d heard about the Ghost blogging platform Kickstarter and was really curious to check it out. I’ve also been wanting try something with that runs with Node.js.

Through work, I’ve recently spent a lot of time working with Docker and have really become interested in it. Along with that, I’ve been hearing more and more about CoreOS and systemd. I was really curious to try out a setup that would mix all these components together.

The Details

So, with that background, here is the basic structure of my website architecture:

  1. 3 running Docker containers
    • PostgreSQL for the ghost data, with a data only container for the data volume
    • Node.js with Ghost’s open source edition and my own theme which is based on Bentley
    • nginx with the static parts of danivovich.com, and configuration to proxy the blog requests to Ghost
  2. a Docker image that runs some Ruby to take database snapshots and upload them to Amazon S3 for safe keeping
  3. CoreOS host operating system at DigitalOcean
  4. systemd managing the processes, keeping them running, starting after reboot, and using a timer to trigger postgres backups

There is a lot more to come in this series examining the tech behind my website relaunch. Check back soon!