I am working with a team of 5 developers at a small company. There are 3 who work here and 2 work remotely. Currently, we are using Assembla with Trac for source control. We are working on a ASP.NET MVC web site. We are not hosting our production environment right now. I am setting up a BuildServer with Teamcity!! I have it working right now on my locally on my laptop. Should we host our own buildserver or pay some else?
TeamCity is pretty good for small shops such as yours. Hosting your own really shouldn't be bad in terms of setup and cost. As long as your remote colleagues can access it without issue and it fulfills your requirements, go for it.
I'd recommend hosting it closer to your version control server so that it can obtain the sources and perform builds faster. If you host your own version control server, either install TeamCity on the same machine (if the hardware allows it) or put it in the same network. You will also need to install build agent(s) somewhere and a database server (as the internal database may lack the performance and reliability). In a small shop a standalone server would handle all of it (TeamCity Server + Build Agent + MySQL database). In a long term buying a server and hosting it by yourself would be much cheaper than paying some hosing provider each month for a virtual or dedicated server with limited resources. It would also simplify upgrading if it becomes necessary.
TeamCity server by itself is a web application hosted on the Tomcat server. It's accessed via the web interface from the browser. If you have an external IP address on the server, just configure the Tomcat to listen on that address and TeamCity will become accessible from all over the world (don't forget to configure the security).