I have been running my own server for some time now but my requirements have changed and the current underlying VM architecture does not conveniently support what I want to do.
The current linux server is running under OpenVZ which is not that conducive to running Java Applications. So after spending quite a few hours struggling with that thorny problem I have decided to stay with my current hosting provider (VPSlink) but switch to Xen.
The changes in what I need to use the server for are around open source. The current server is fine for serving up my homepage and a few wordpress blogs but I would like to run a Continuous Integration server that independently builds open-source projects that I am involved with.
After a 10 minute web search I concluded that hardware requirements for CI servers don’t appear to be one of the first things you need to know - so will have to do some trial and error.
- Decide on a reasonable starting plan. Memory seems to be the key price influencer here. The current server is running 256MB and big hungry java applications like GB. The cost of upgrading is more money and a quick reboot so decided to start with 512MB and take it from there.
- Install Ruby, and run a hello world application
- Install Java, and run a hello world application
- Validate configuration by installing Ruby and Java. My open-source projects tend to be either Ruby or Java so need to make sure that I can deploy them for testing.
- Install Git - some of my projects are hosted on github these days and I have had problems getting validation working from servers without a tty port.
- Validate resource assumptions by installing a CI server.
Second decision point: what to call the server. Not that it matters much since I am probably the only one who will see this information but I still like to choose a nice name.
In 20 minutes I had ruby, java, git, and hudson installed. Completely painless.
I ran a quick bit of ruby from the command line, used hudson to test that the Java runtime was installed properly and checked out a project from github to make sure that git was behaving itself.
Now for the more difficult bit. Transferring all the other data.