Setting up a git server

I’ve recently set up ubuntu-server on Amazon EC2. I would like to use it as my git server, so I could store my repos there.

So, where can I find some detailed instructions of how to setup git on ubuntu server? All these SSH keys and stuff like that, multiple users, etc.

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

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.

Solution 2

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.

Solution 3

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.

Solution 4

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way can be slightly modified to suit your purposes…a similar tutorial http://blog.agdunn.net/?p=277.

Solution 5

Definitely follow the official documentation: https://help.ubuntu.com/community/Git (section Setting up Git and Project Management)

Solution 6

The solution that worked the best for me, was setting up WebDAV.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • add new file to /etc/apache2/sites-available and name it, for example, git.yourserver.com. Edit it and add following lines:

<VirtualHost *:80>

DocumentRoot /var/www/git.yourserver.com/repos
ServerName git.yourserver.net
Options Indexes FollowSymLinks MultiViews

<Location />
    DAV On
    AuthType Basic
    AuthName "git repos"
    AuthUserFile /var/www/git.yourserver.net/password.dav
    Require valid-user
</Location>

</VirtualHost>

  • create directory /var/www/git.yourserver.com and directory repos inside id
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login and enter password for user named user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

Now, sudo a2ensite git.yourserver.com and sudo service apache2 restart.

  • Enter /var/www/git.yourserver.com/repos and create directory, for example, myrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

Now, logout from your remote server and go to local directory you want to edit your files in.

git clone http://user_login:[email protected]/myrepo.git

and you’ve finished. If you want to send your commited changes to the server:

git push origin master

You can create as many users as you want using sudo htpasswd. Just remember not to use -c switch, when adding more users, because old file will be deleted.

Solution 7

I also like the gitolite approach for managing users and security. I have a Git + gitolite server AMI for EC2 currently being tested. Feel free to give it a try; documentation is available here:

Alestic Git Server

Using this approach, you can have a central Git server with private repositories running in a matter of minutes. There is a learning curve for gitolite and EC2 if you aren’t familiar with them.

Solution 8

It is very easy to achieve with gitolite. In less than an hour you will have easy configurable and secure multiuser git server.

I have an howto article on my site

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply