GitLab: Crear y gestionar nuestro servidor propio de Git

23
64731

GitLab: Crear y gestionar nuestro servidor propio de Git

0. Índice de
contenidos.

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil Mac Book Pro 15″ (2,3 Ghz Intel Core i7, 16 GB DDR3)
  • Sistema Operativo: Mac OS X Mavericks
  • Máquina virtual VMWare con CentOS 6.5

2. Introducción

En un reciente tutorial hablábamos de que como montar un servidor propio de Git en un CentOS 6.5 de forma manual. Hoy os presentamos GitLab, una herramienta que hace la instalación, configuración y gestión de un servidor Git propio mucho más amigable gracias a su interfaz web, muy al estilo de la interfaz de github.com.

3. Primeros pasos

Para instalar la herramienta tenemos que acceder a la página de descargas de GitLab y seleccionar el sistema operativo. En nuestro caso CentOS 6.5

Seleccionando el sistema operativo, podremos ver las instrucciones a seguir para la instalación de la herramienta y el username y password por defecto para poder acceder.

Vamos a seguir los pasos que se indican en la página. Entonces conectamos via ssh con la máquina CentOS y lo primero que hacemos es descargar la última versión de la herramienta.

  wget https://downloads-packages.s3.amazonaws.com/centos-6.5/gitlab-7.0.0_omnibus-1.el6.x86_64.rpm

En mi caso, no necesito instalar «openssh-server» ni «postfix» porque ya tengo las últimas versiones así que pasamos directamente al paso de instalación del .rpm

  sudo rpm -i gitlab-7.0.0_omnibus-1.el6.x86_64.rpm

Una vez instalado, vamos a configurarlo para añadir nuestro hostname y que además en el puerto que le indiquemos y no en el 80 que tiene por defecto. Para ello, editamos el fichero «/etc/gitlab/gitlab.rb» ejecutando:

  sudo -e /etc/gitlab/gitlab.rb

Esto hace que se podamos editar el fichero donde deberemos cambiar la «external_url» que viene por defecto por la url del host y el puerto que queramos, en mi caso, «http://ip_maquina_centos:8082». Siempre es mejor que pongáis el nombre de la máquina o la IP para poder acceder desde fuera.

Para que estos cambios surtan efecto tenemos que ejecutar:

  sudo gitlab-ctl reconfigure

El último paso con el comando «lokkit» se utiliza para abrir los puertos dentro de la máquina. Este comando suele dar problemas por lo que recomiendo abrir los puertos necesarios de forma manual con la edición del fichero /etc/sysconfig/iptables añadiendo con los permisos necesarios la siguiente línea:

  -A INPUT -p tcp -m state --state NEW -m tcp --dport 8082 -j ACCEPT

Para que los cambios surtan efecto tendremos que reiniciar el servicio «iptables» ejecutando en el terminal:

  sudo service iptables restart 

Si todo ha ido bien desde nuestra máquina cliente abrimos un navegador, nos conectamos a la url: http://ip_maquina_centos:8082 y tenemos que ver la página de login de GitLab. Donde nos logamos con las credenciales que nos dan por defecto en las instrucciones de la página de instalación.

Una vez introducidas estas credenciales, el sistema nos obliga modificar la password por defecto.

Una vez introducida la nueva password el sistema nos redirige nuevamente a la página de login donde tendremos que logarnos con las nuevas credenciales. Accediendo al dashboard principal de la herramienta.

Una vez aquí el siguiente paso sería crear algún usuario. Para ello vamos a la opción de menú «Admin Area» y pulsamos en el botón «New User».

Aquí rellenamos el formulario con la información del usuario y éste recibirá un email con la información para acceder y una password temporal que el sistema le obligará a cambiar la primera vez que haga login en la herramienta.

Ahora es momento de crear nuestro primer proyecto. Si habéis seguido el anterior tutorial, esto lo hacíamos ejecutando comandos en la consola, aquí desde el dashboard principal o desde «Admin Area» lo podemos hacer pulsando en el botón «New Project», donde nos solicita información como el nombre del proyecto, una descripción y de qué tipo va a ser el proyecto: privado, donde solo pueden acceder los usuarios con los permisos explícitos; interno, donde podrá acceder cualquier usuario que esté logado o público, donde cualquiera podrá hacer clone de nuestro proyecto esté o no logado.

Además nos da la posibilidad de personalizar el nombre de nuestro repositorio o de importar alguno ya existente.

Al pulsar en «Create», la herramienta crea el proyecto y nos informa de una serie de intrucciones.

También nos avisa que el usuario no podrá acceder al repositorio hasta que no añada su SSH Key pública para poder conectar con el repositorio sin necesidad de poner la password. Si habéis seguido el anterior tutorial sabréis que esto se puede realizar desde el terminal ejecutando:

  $> ssh-keygen -t rsa
  $> cat ~/.ssh/id_rsa.pub

Entonces, en la herramienta, podemos pinchar en el enlace que nos muestra o desde la opción de menú «Profile Settings» en la pestaña «SHH Keys», podemos pulsar en el botón «Add SSH Key» donde le damos un nombre a la clave y pegamos nuestra clave ssh pública que es todo el contenido que se muestra en pantalla al hacer el cat.

Para probar que todo ha ido bien podemos abrir un terminal e intentar hacer un clone del proyecto.

  git clone git@ip_maquina_centos:raguilera82/autentia-test.git

Si el terminal no solicita que introduzcamos una contraseña significa que la configuración SSH ha ido bien. Ahora podemos interacturar con el repositorio de la forma habitual.

4. Conclusiones

En este tutorial hemos dado los primeros pasos con esta fantástica herramienta. Con ella no se echa de menos ninguna funcionalidad que te ofrece Github.com. Podemos configurar los web hooks para integrar con Jenkins de forma gráfica y simple, podemos tener nuestros snippets, nos ofrece la posibilidad de tener una wiki del proyecto, podemos hacer grupos de usuarios, etc… Lo mejor es que la instaléis y os déis una vuelta para ver todas las opciones. Espero con este tutorial que el comienzo sea más suave y que os animéis a utilizar siempre que tengáis la necesidad de tener un repositorio propio de Git.

Cualquier duda o sugerencia en la zona de comentarios.

Saludos.

23 COMENTARIOS

  1. Buenos días,

    Estoy empezando a ver esto del git, mi duda es si el proyecto lo dejo como público cualquier persona puede clonarlo sin usar ssh? Lo que requiero es que así sea, que no tenga que crear usuarios y agregar sus llaves y que cualquiera pueda clonar el repositorio.

    De antemano gracias.

    Saludos,
    Jair S. García Sotelo

  2. Hola Jair,

    Efectivamente si estableces el proyecto como público cualquier persona con acceso a la URL del proyecto a través del protocolo HTTP puede hacer clone del proyecto, sin necesidad de registrar su llave pública en el servidor.

    Saludos

  3. Buenas tardes tengo una duda

    Ya instale y configure GitLab en mi servidor, pero tengo un problema cuando doy de alta los usuarios, el correo de confirmacion con su contraseña temporal no llega. Tengo que hacer alguna configuracion adicional para que se envien los correos?

  4. Hola monte el gitlab en centos7, todo bien, usuarios ldap, proyectos, llaves ssh todo todo good, pero joder con que cliente en windows me conecto a ese gitlab que monte, estoy usando tortoise-git y solo me deja conectarme al de internet no veo donde n como conectarme al mio ayuda or favorrrr graciasssssss

  5. Yo GitLab en mi servidor, pero tengo un problema cuando doy de alta los usuarios, el correo de confirmacion con su contraseña temporal no llega. Tengo que hacer alguna configuracion adicional para que se envien los correos?.

  6. Hola amigo, gracias por el tutorial! Tengo un problema para poder acceder a la interfaz de gitlab.

    Cuando dices que debemos colocar la sentencia para activar el puerto 8082 lo hace bien. Pero, cuando reinicio iptables me da el siguiente error:

    Failed to restart iptables.service: Unit iptables.service not found.

    Estoy usando ubuntu server 16.04 y estoy accediendo desde otro equipo. Todo esto de manera local

  7. Buenos días, tengo mi servidor montado proyectos todo funciona conexión LDAP pero…
    cuando intento lo de las claves SSH o cualquier cosa de esa me da uno de estos dos errores cualquiera
    root@din-tec-19-yetamayo:/home/yis/Descargas/prueba# cd /home/yis/Descargas/prueba/test/
    root@din-tec-19-yetamayo:/home/yis/Descargas/prueba/test# git clone yetamayo@X.X.X.X:yetamayo/prueba.git
    Clonar en «prueba»…
    yetamayo@X.X.X.X’s password:
    bash: git-upload-pack: no se encontró la orden
    fatal: Could not read from remote repository.
    Please make sure you have the correct access rights
    and the repository exists.

    Resulta que no he podido conectarme via SSH con las claves privadas y publicas nunca

  8. Ante todo saludos, quisiera preguntar si existe alguna via manual de descargar todos los recursos para luego intalar el GitLab en otra computadora o server. EL problema es que en donde quiero realizar el control de versiones con el GitLab es una red local sin acceso a internet.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad