Like most web developers, I managed a bunch of domains, applications, and services. Some of these are projects for myself, some are for family and friends, some are for clients. And it's a mess, stuff on one shared hosting, stuff on some other shared hosting, stuff on the VPS I use to muck around. This makes it all difficult and time consuming to manage, not to mention fraught with risk.

I've decided it's time to get my house in order, bring everything I can together onto a quality VPS and manage things properly.

Whenever I've managed servers, I've quickly forgotten how I've installed stuff and how the thing is configured, and everything gets messy and out of control, so the idea of managed and versioned configurations is very attractive. There are two main options around, puppet and chef. A very much surface assessment suggests that puppet seems to be more popular and have more documentation, and I had more luck getting it up and running than I did with chef, so that's what I'm going to explore.

In the end, I want a VPS with:

  • SSH with SSH keys set up
  • a web server, probably Apache at this stage
  • several virtual hosts
  • PHP and Ruby
  • MySQL and Sqlite
  • git and subversion
  • vim
  • zsh
  • utilities such as ack, find, and curl
  • projects cloned from github
  • monitoring and alerting (I don't know anything about this stuff yet, but I'm guessing that's Nagios)
  • appropriate backup
  • and of course, versioned configuration

I'd also like to be able to:

  • easily spin up local VMs with the same base configuration as the VPS

Unfortunately, I haven't been able to find much to support such a small endeavour, most information seems to be about large teams and large projects. If you know of good resources, please let me know. I'll update this post as I work out more of what I want to achieve and how to do it (I may even split this into multiple posts).