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.
hay alguna manera de ejecutar gitlab bajo https ¿?
Si, aqui viene explicado:
http://docs.gitlab.com/omnibus/settings/nginx.html#change-the-default-port-and-the-ssl-certificate-locations
COMO PUEDO CAMBIAR EL PUERTO POR DEFECTO 80, pueden ayudarme
Hola,
Para cambiar el puerto por defecto lo único que tienes que hacer es editar el fichero /etc/gitlab/gitlab.rb, descomentar la propiedad \»external_url\» y poner el valor de la URL que quieras utiliza: http://tu_ip_o_hostname:puerto/ por ejemplo, http://maquina:8083
Espero haberte ayudado
Saludos
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
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
Buen día,
Agradezco de antemano por la valiosa información.
Me asalta una duda: ¿Existe alguna herramienta para Sistemas Windows?
Saludos
Quisiera saber si se puede cambiar el idioma de gitlab una vez ya instalado..
Se que es vieja la pregunta pero capaz alguno le sirve. Se puede cambiar una vez instalado en las opciones de perfil.
Saludos!
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?
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
Hola, como puedo instalar el correo en gitlab, necesito los pasos para debian 7
gracias
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?.
Yo tengo el mismo problema en el archivo de configuracion del GIT hay unos parametros para el correo pero no logro hacer q funcione
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
Hola, cuales son los requisitos minimos de hardware para trabajar con esto?
Estimado tengo un problema, he instaldo el Gitlab, pero no me muestra la opción «Setting» en le admin área, no sé si falta algo.
Agradezco tu apoyo.
[…] el año 2014 venimos hablando de GitLab, únicamente como alternativa para tener repositorios privados de Git de forma gratuita, pero es […]
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
Hola buenas tardes…
Quisiera saber si al instalar GitLab en mi servidor ¿Hay limitación con el numero de usuarios?
Hola Eduardo,
Haciendo la instalación en tu propia máquina de la versión community no tienes limitación en el número de usuarios.
Saludos
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.
Te comes cosas.