How to setup a Git server? [duplicate]
You can use the tutorial to install a Git server as aking1012 proposed you or you could just install SSH server on your EC2 instance (probably it would be wise to secure it and change the default port).
Git can be server-less you init your repository and then you access it from remote via SSH. So instructions like this on the Ubuntu Server should do it:
GIT_DIR=project.git git init
cd project.git
git --bare update-server-info
cp hooks/post-update.sample hooks/post-update
Finally install SSH on your server:
sudo apt-get install ssh-server
Now, you should configure SSH to secure it.
It's time to put your project online (the data you already have on your development machine):
git push ssh://<username>@<remote-git-hostname>/path/to/project.git master
And now you can start cloning around. You go on your development machine:
git clone ssh://<username>@<remote-git-hostname>/path/to/dir.git
Check this excellent resource on Git.
And for generating your ssh keys for safer authentication, you can read this article about SSH authentication.
For all my Git server setups I use Gitolite which allows for a security granularity of "per-branch" access. Setup is pretty straight forward if you're doing it on a remote server it's as easy as running an interactive script. In addition to this "easy-to-setup" nature it also has a package in Natty and Maverick
sudo apt-get install gitolite
This won't provide a web frontend like Github, or Gitweb - but you can easily configure and install those on top of something like Gitolite.
I like gitolite. The Pro Git book has a section on it but I recommend reading the whole book.
As for your multiple users requirement:
Gitolite allows you to specify permissions not just by repository (like Gitosis does), but also by branch or tag names within each repository. That is, you can specify that certain people (or groups of people) can only push certain “refs” (branches or tags) but not others.