Instalar Gitblit en Windows con LDAP

De ChuWiki


Descarga[editar]

Gitblit es un servidor a través del cual podemos acceder a nuestros repositorios Git por medio de http o https. La instalación es sencilla. Basta con descargarse el zip para hacerlo correr de forma independiente o bien el war, para ponerlo en nuestro contenedor de Servlets. En ese ejemplo nos bajamos el zip de http://code.google.com/p/gitblit/downloads/list , en concreto http://code.google.com/p/gitblit/downloads/detail?name=gitblit-1.0.0.zip&can=2&q=


Configuracion[editar]

Desempaquetamos el zip y buscamos el fichero gitblit.properties para editarlo y poner nuestra configuración a medida. Veamos que propiedades son importantes o nos pueden dar algún quebradero de cabeza.


Directorio con los repositorios git[editar]

git.repositoriesFolder = git

En git.repositoriesFolder indicamos en qué directorio están nuestros repositorio git. Cambiamos git por nuestro path concreto, por ejemplo, D:/GitRepos

Comunicaciones desde el exterior[editar]

server.httpBindInterface = localhost
server.httpsBindInterface = localhost
server.ajpBindInterface = localhost

En estas tres propiedades indicamos a qué clientes hacemos caso. Si dejamos localhost, sólo se atenderán llamadas de clientes locales. Si queremos dejarlo abierto para poder acceder desde cualquier ordenador, debemos eliminar la palabra localhost y dejarlas sin valor.

server.httpBindInterface = 
server.httpsBindInterface = 
server.ajpBindInterface = 
server.httpPort = 0
server.httpsPort = 8443
server.ajpPort = 0

Por supuesto, los puertos a los que atendemos, dejamos el 0 si no queremos ese servicio.


Gestion de usuarios con LDAP[editar]

web.authenticateViewPages = false

Debemos poner true si queremos que haya que entrar en sesión en la web de gitblit para poder ver desde ella los repositorios y demás páginas.

realm.userService = users.conf

Este es la opción por defecto, gitblit se encarga de llevar la gestión de usuarios en un fichero users.conf. Si queremos usar LDAP o Microsoft Active Directory, debemos cambiarla por

realm.userService=com.gitblit.LdapUserService
realm.ldap.server = ldap://ldapserver
realm.ldap.username = cn=usuario
realm.ldap.password = password

Conexión a LDAP. El servidor y protocolo usado (ldap://ldapserver). Si ese LDAP no admite consultas anónimas, debemos dar además un usuario válido (al estilo LDAP cn=usuario o más completo cn=usuario,OU=Users,OU=UserControl,OU=MyOrganization,DC=MyDomain) y la password de ese usuario. Si el servidor en vez de LDAP es Microsoft Active Directory, hay que tener en cuenta que el nombre del usuario no es de ese estilo, sino el nombre y apellidos, como el siguiente

ealm.ldap.username = Chuidiang Roxas

Debemos consultar como está realmente guardado el usuario en Active Directory, ya que puede ser "nombre apellido", "apellido, nombre", etc.

realm.ldap.backingUserService = users.conf

Este es un fichero donde gitblit guardará los usuarios que entren en sesión con LDAP y donde se guardará información adicional relativa a esos usuarios, como si son o no administradores, a qué equipos pertenecen, o qué proyectos pueden ver.

realm.ldap.maintainTeams = false

Gitblit permite agrupar los usuarios en equipos o grupos, de forma que luego se puede dar acceso a los proyectos por equipos/grupos. Si en LDAP están los desarrolladores agrupados por proyecto en los que trabajan, podemos poner esta variable a true y así gitblit tendrá en cuenta los grupos de LDAP para asignar permisos de acceso a los proyectos. Lo dejamos a false si no es así y entonces un administrador de giblit podrá crear sus propios equipos.

realm.ldap.accountBase = OU=Users,OU=UserControl,OU=MyOrganization,DC=MyDomain

Aquí ponemos el directorio a partir del cual buscará gitblit los usuarios.

realm.ldap.accountPattern = (&(objectClass=person)(sAMAccountName=${username}))

Filtro con el que encuentra los usuarios. El filtro ahí mostrado es válido para Active Directory. Para un LDAP "normal", suele ser algo como uid=${username}

realm.ldap.admins = chuidiang @admins

Usuarios o grupos que tienen privilegios de administración, en este caso el usuario chuidiang y el grupo admins.

realm.ldap.displayName = displayName
realm.ldap.email = email

Campos para mostrar información del usuario. Es importante que existan en LDAP, porque gitblit dará una excepción y funcionará mal si no existen. En mi caso, con Active Directory, el campo email se llama mail (sin e delante), así que tengo

realm.ldap.email = email

Hay muchas más propiedades que podemos tocar a nuestro gusto.


Certificado del servidor[editar]

gitblit genera por defecto un certificado de servidor autofirmado y para localhost. Los clientes git suelen permitir añadir el certificado como de confianza o bien ignorarlo. Pero otros clientes Git (como Egit/JGit, el plugin de git para eclipse), comprueban independientemente de que se ignore el certifiado, que está emitido para el servidor en concreto, es decir, si accemos con https://miservidor, el certificado debe estar emitido para "miservidor" y no para localhost.

Podemos generar los certificados de gitblit editando uno de los ficheros makekeystore.cmd y makekeystore_jdk.cmd, cambiando la variable HOSTNAME por el nombre de nuestro servidor y luego ejecutando, desde línea de comandos ejecutar el script que hemos editado. Si nos pide la password de acceso, es la que aparece en el fichero de gitblit.properties en

server.storePassword = gitblit

Arranque[editar]

Una vez tocadas todas las propiedades, arrancamos con doble click en gitblit.cmd. Paramos con doble click en gitblit-stop.cmd. Podemos también instalarlo como servicio de windows haciendo doble click en InstallService.cmd, luego desde el menú de Start/Inicio de windows, ejecutamos services.msc para ver los servicios y en concreto gitblit, desde ahí podemos pararlo y arrancarlo.

Desde un navegador web accederemos a https://nuestroservidor para ver la web de gitblit. Si queremos clonar repositorios desde nuestro cliente git, pondremos

git clone https://usuario@nuestroservidor:8443/git/repositorio