Git server using gitblit on debian squeeze

Yesterday, one of my friend told me about GitBlit for managing Git repositories, and users, I’ve tried it today, and I really like this product, so I write this post … It will allow me to install a git server using gitblit on debian squeeze.

This post will describe how to set up a git server based on http using GitBlit.

As they said on their web site :

GitBlit is an open-source, pure Java stack for managing, viewing, and serving Git repositories. It’s designed primarily as a tool for small workgroups who want to host centralized repositories.

It’s written as a java web app … We will deploy the war file on a Tomcat Server

Setting up the environment

Install Sun Java 6

first of all we need to install a java platform, i’ve choosed sun’s. Sun java is included in the non-free DEBIAN’s repositories, so we need to activate those repositories …

Edit /etc/apt/sources.list to add non-free to repositories :

deb http://ftp2.fr.debian.org/debian/ squeeze main non-free
deb-src http://ftp2.fr.debian.org/debian/ squeeze main non-free

After adding non-free repositories update apt list …

apt-get update

Then, add java support :

apt-get install sun-java6-bin sun-java6-jre sun-java6-jdk

Install Tomcat 6

Then we need to install tomcat server :

apt-get install tomcat6 tomcat6-admin

Now, we need to configure access to tomcat manager, Tomcat is installed in /var/lib/tomcat6, webapps will be deployed in /var/lib/tomcat6/webapps, user configuation is located in /var/lib/tomcat6/conf/tomcat-users.xml. Edit this file to add a manager role and an admin user :

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager"/>
  <user username="admin" password="YOURPASSWORD" roles="manager"/>
</tomcat-users>

Restart tomcat server :

/etc/init.d/tomcat6 restart

Then you can access to : tomcat manager : http://IP:8080/manager/html and login

Tomcat is installed we will able to deploy some webapps …

gitblit on debian squeeze

Download WAR file

Go to GitBlit and download WAR file

Deploy GitBlit

Go on tomcat’s manager page, and then use WAR file to deploy form to upload GitBlit war file.

NOTE : You may not want to have the GitBlit version number in the context name, for that, simply rename war file : gitblit.war before uploading it to the server

We will create some directories for hosting GIT repositories, and some configuration files :

mkdir /var/git
cd /var/git
mkdir repositories groovy conf

Then you need to configure GitBlit !

On the server edit the file : /var/lib/tomcat6/webapps/gitblit/WEB-INF/web.xml , and change some configuration values :

<context-param>
    <param-name>git.repositoriesFolder</param-name>
    <param-value>/var/git/repositories</param-value>
</context-param>
<!-- ... -->
<context-param>
    <param-name>groovy.scriptsFolder</param-name>
    <param-value>/var/git/groovy</param-value>
</context-param>
<!-- ... -->
<context-param>
    <param-name>realm.userService</param-name>
    <param-value>/var/git/conf/users.conf</param-value>
</context-param>

Then you will need to restart Tomcat :

/etc/init.d/tomcat6 restart

You can now add some Git repositories, go to http://IP:8080/gitblit … login with admin/admin

Problem with "/” in urls

You may have some troubles with "/” URL encoded : %2F. To solve this issue you should add a parameter to Tomcat startup …

Edit the file /etc/default/tomcat6 :

JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"

Setting Up a Proxy

I really don’t like having to set 8080 in url for accessing my installation … So I always add a proxy in front of tomcat, using Apache and mod_proxy

apt-get install apache2
a2enmod proxy_http
/etc/init.d/apache restart

Edit the default vhost file : /etc/apache2/sites-available/default and add those lines in the vhost :

 ProxyPass /gitblit http://127.0.0.1:8080/gitblit
 ProxyPassReverse /gitblit http://127.0.0.1:8080/gitblit

And then edit /var/lib/tomcat6/webapps/gitblit/WEB-INF/web.xml , and change some configuration values :

<context-param>
    <param-name>web.mountParameters</param-name>
    <param-value>false</param-value>
</context-param>

Here you are you can now clone your git repositories …

git clone http://IP/gitblit/git/test.git

Caution !!!

GitBlit Web site say :

Caveats

  • Gitblit may eat your data. Use at your own risk.
  • Gitblit may have security holes. Patches welcome. 😃

Thanks

Just a special thanks to Usul !