The following is a cloud agnostic approach, for installing TeamCity on Ubuntu Server.
Why TeamCity ?
Having worked with a diverse range of CI and CD platforms in the past, including Cruise Control, Jenkins, Hudson, I can say that TeamCity has established a reputation as one of the easiest and most robust platforms in the market for developers to deploy, use, maintain and extend a CI and CD infrastructure.
Why Ubuntu Server ?
I don't think you can find a leaner OS for servicing your CI and CD infrastructure than Linux.
According to WIRED magazine, even Microsoft is now using Linux for its cloud provider Azure (http://www.wired.com/2015/09/microsoft-using-linux-run-cloud/), and for a reason.
And if you have worked with Linux Debian or Ubuntu in the past, are familiar with the package manager (apt-get), and have a basic understanding of user administration in Linux, you probably would agree with me in regards to the simplicity in maintaining a headless server like Ubuntu Server.
Before deploying the TeamCity server on an EC2 instance on AWS, I was able to test a similar VM image at my workplace PC using just 600 MB of RAM and one processor core allocated to the VM, emulating similar conditions as in the cloud.
The response time was good of course, for a small team of perhaps up to 10 developers. Take into consideration that the build agents execute on different VM instances, so the actual CPU load is kept to a minimum for the TeamCity Server.
Steps for installation
This is based on the instructions I already published on my github page. You can find them here: