A friend of mine and I are thinking about starting our own business involving code and some fairly advanced IP (at least, we like to think that the IP is advanced). I want to set up a code repository (probably subversion) and a bug tracking server (probably fogbugz) on a home server system that both of us would be able to VPN into from remote locations via laptops. I'd also like this server to be a remote build system running some kind of hudson scripts, maybe via ant, to do automatic testing and build verification.
My question is: what's the most secure way to go about setting this system up? I have a budget of $1k for hardware and software. I have an existing home wireless network using an Apple Wireless base station, a macbook pro running both 10.5 and windows 7, and a home machine running windows 7 that I really just use for games and messing around.
Specificially:
- Should I be using Linux? Which distro? How do I lock it down? I realize that this question can start myriad flame wars, but I just want some pointers on how to set up a secure server with those services running (and nothing else, under the assumption that more services = more security holes).
- Where can I get good information on setting up a VPN through that router? Should I be going through that apple router, or is there some 'gold standard secure' router I should be looking at?
- Static IP (which means changing my ISP) or a dynamic IP? Is it possible to do these sorts of things with a dynamic IP, and if it is, how do I go about setting up the server to be securely, remotely accessible via a dynamic IP?
- What kind of hardware should I be looking at? I was thinking about something along the lines of just a core2 duo processor (maybe i7?), regular hard drive, 4 gb RAM, and that's about it, connected to some other backup drive, like a USB-attached hard drive attached to the system with cron jobs to do nightly backups to the second drive. Is that reasonable?
I realize that this is a huge question, and not necessarily straightforward. When I do searches on answers to these questions, I get a lot of information, but none of it is entirely straightforward. So, if anyone knows of a guide or a couple of blog posts that I've missed, I'd really appreciate it.